From db9dc63a85c298f15798eb4f013a53956085e080 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Thu, 1 Feb 2018 20:06:56 -0800 Subject: [PATCH] Issue Reporter: display message if url length exceeds limits, #42603 --- .../electron-browser/issue/issueReporterMain.ts | 13 ++++++++++++- .../electron-browser/issue/issueReporterModel.ts | 15 ++------------- .../electron-browser/issue/issueReporterPage.ts | 3 +++ .../issue/test/testReporterModel.test.ts | 3 --- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts index acd08b6ee8b..0cc6f5babd3 100644 --- a/src/vs/code/electron-browser/issue/issueReporterMain.ts +++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts @@ -435,7 +435,18 @@ export class IssueReporter extends Disposable { const queryStringPrefix = product.reportIssueUrl.indexOf('?') === -1 ? '?' : '&'; const baseUrl = `${product.reportIssueUrl}${queryStringPrefix}title=${issueTitle}&body=`; const issueBody = this.issueReporterModel.serialize(); - shell.openExternal(baseUrl + encodeURIComponent(issueBody)); + const url = baseUrl + encodeURIComponent(issueBody); + + const lengthValidationElement = document.getElementById('url-length-validation-error'); + if (url.length > 2081) { + lengthValidationElement.textContent = localize('urlLengthError', "The data exceeds the length limit of 2081. The data is length {0}.", url.length); + show(lengthValidationElement); + return false; + } else { + hide(lengthValidationElement); + } + + shell.openExternal(url); return true; } diff --git a/src/vs/code/electron-browser/issue/issueReporterModel.ts b/src/vs/code/electron-browser/issue/issueReporterModel.ts index a741457178d..e9590c15068 100644 --- a/src/vs/code/electron-browser/issue/issueReporterModel.ts +++ b/src/vs/code/electron-browser/issue/issueReporterModel.ts @@ -58,10 +58,7 @@ ${this._data.issueDescription} VS Code version: ${this._data.versionInfo && this._data.versionInfo.vscodeVersion} OS version: ${this._data.versionInfo && this._data.versionInfo.os} -${this.getInfos()} - - -`; +${this.getInfos()}`; } private getIssueTypeTitle(): string { @@ -168,20 +165,12 @@ ${this._data.workspaceInfo}; return `${e.manifest.name}|${e.manifest.publisher.substr(0, 3)}|${e.manifest.version}`; }).join('\n'); - const extensionTable = `
Extensions (${this._data.enabledNonThemeExtesions.length}) + return `
Extensions (${this._data.enabledNonThemeExtesions.length}) ${tableHeader} ${table} ${themeExclusionStr}
`; - - // 2000 chars is browsers de-facto limit for URLs, 400 chars are allowed for other string parts of the issue URL - // http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers - if (encodeURIComponent(extensionTable).length > 1600) { - return 'the listing length exceeds browsers\' URL characters limit'; - } - - return extensionTable; } } \ No newline at end of file diff --git a/src/vs/code/electron-browser/issue/issueReporterPage.ts b/src/vs/code/electron-browser/issue/issueReporterPage.ts index a42614fda11..86d5a0afc34 100644 --- a/src/vs/code/electron-browser/issue/issueReporterPage.ts +++ b/src/vs/code/electron-browser/issue/issueReporterPage.ts @@ -129,5 +129,8 @@ export default (): string => ` + `; \ No newline at end of file diff --git a/src/vs/code/electron-browser/issue/test/testReporterModel.test.ts b/src/vs/code/electron-browser/issue/test/testReporterModel.test.ts index 16c41488e74..2b7caaf6254 100644 --- a/src/vs/code/electron-browser/issue/test/testReporterModel.test.ts +++ b/src/vs/code/electron-browser/issue/test/testReporterModel.test.ts @@ -26,9 +26,6 @@ undefined VS Code version: undefined OS version: undefined - - - `); }); });