From 7a8593c124734c4c3190060d35957d52288c3de6 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Sun, 13 May 2018 17:29:25 +0200 Subject: [PATCH 1/3] Bug 1461193 - Replace custom url parameter parsing with native URLSearchParams --- bugherder/js/bugherder.js | 66 ++++++++++++++------------------------- 1 file changed, 24 insertions(+), 42 deletions(-) diff --git a/bugherder/js/bugherder.js b/bugherder/js/bugherder.js index 3a47e19..a34b26f 100644 --- a/bugherder/js/bugherder.js +++ b/bugherder/js/bugherder.js @@ -69,10 +69,10 @@ var bugherder = { // Display an appropriate error, then display the cset form errorPage: function mcM_errorPage(params) { - var errorType = params['error']; + var errorType = params.get('error'); var errorText = 'Unknown error'; - var cset = 'cset' in params ? ' ' + UI.htmlEncode(params['cset'][0]) : ''; - var treeName = 'tree' in params ? ' ' + UI.htmlEncode(params['tree'][0]) : ''; + var cset = params.has('cset') ? ' ' + UI.htmlEncode(params.get('cset')) : ''; + var treeName = params.has('tree') ? ' ' + UI.htmlEncode(params.get('tree')) : ''; var dataType = 'pushlog'; if (this.loading == 'bz') @@ -466,24 +466,24 @@ var bugherder = { var query = document.location.search; if (query) { - var paramsObj = this.chunkQuery(query); - if ('debug' in paramsObj) - this.debug = (paramsObj['debug'][0] == '1'); - if ('expand' in paramsObj) - this.expand = (paramsObj['expand'][0] == '1'); - if ('remap' in paramsObj) - this.remap = (paramsObj['remap'][0] == '1'); - if ('resume' in paramsObj) - this.resume = (paramsObj['resume'][0] == '1'); - - if ('error' in paramsObj) + var paramsObj = new URLSearchParams(query); + if (paramsObj.has('debug')) + this.debug = (paramsObj.get('debug') == '1'); + if (paramsObj.has('expand')) + this.expand = (paramsObj.get('expand') == '1'); + if (paramsObj.has('remap')) + this.remap = (paramsObj.get('remap') == '1'); + if (paramsObj.has('resume')) + this.resume = (paramsObj.get('resume') == '1'); + + if (paramsObj.has('error')) return self.errorPage(paramsObj); - if ('cset' in paramsObj) { - var cset = paramsObj['cset'][0]; + if (paramsObj.has('cset')) { + var cset = paramsObj.get('cset'); - if ('tree' in paramsObj) { - var treeName = paramsObj['tree'][0].toLowerCase(); + if (paramsObj.has('tree')) { + var treeName = paramsObj.get('tree').toLowerCase(); if (!(treeName in Config.treeInfo) && !(treeName in Config.rewriteTrees)) { var replace = document.location.href.indexOf('error') != -1; this.go('error=treename&tree=' + treeName, replace); @@ -511,24 +511,6 @@ var bugherder = { return self.acquireChangeset(); }, - // Create an object that contains all parameters from a search/query string - // The properties are arrays to make room for a future of multi-tree/cset marking - chunkQuery: function mcM_chunkQuery(query) { - query = query.substring(1); - var params = query.split('&'); - var paramsObj = {} - for (var x in params) { - var p = params[x].split('='); - if(!paramsObj[p[0]]) { - paramsObj[p[0]] = [p[1]]; - } else { - paramsObj[p[0]].push(p[1]); - } - } - return paramsObj; - }, - - // Push a new URL onto history go: function mcM_go(query, replace) { var maintained = []; @@ -553,13 +535,13 @@ var bugherder = { newURL += maintainedQuery; // Put the cset and tree parameters back in no matter what if present - var currentURLSearch = this.chunkQuery(document.location.search); - var newURLSearch = this.chunkQuery(newURL.split('?')[1]); - if (currentURLSearch['cset'] && !newURLSearch['cset']) { - newURL = newURL + '&cset=' + currentURLSearch['cset'][0]; + var currentURLSearch = new URLSearchParams(document.location.search); + var newURLSearch = new URLSearchParams(newURL.split('?')[1]); + if (currentURLSearch.has('cset') && !newURLSearch.has('cset')) { + newURL = newURL + '&cset=' + currentURLSearch.get('cset'); } - if (currentURLSearch['tree'] && !newURLSearch['tree']) { - newURL = newURL + '&tree=' + currentURLSearch['tree'][0]; + if (currentURLSearch.has('tree') && !newURLSearch.has('tree')) { + newURL = newURL + '&tree=' + currentURLSearch.get('tree'); } if (Config.supportsHistory) { From c3a0e2c75e76d42fdcef6b60ce1c44f5df1af3cf Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Sun, 13 May 2018 17:44:41 +0200 Subject: [PATCH 2/3] Bug 1461193 - Unify usage of persistent url parameters --- bugherder/js/bugherder.js | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/bugherder/js/bugherder.js b/bugherder/js/bugherder.js index a34b26f..f0c478e 100644 --- a/bugherder/js/bugherder.js +++ b/bugherder/js/bugherder.js @@ -467,14 +467,10 @@ var bugherder = { var query = document.location.search; if (query) { var paramsObj = new URLSearchParams(query); - if (paramsObj.has('debug')) - this.debug = (paramsObj.get('debug') == '1'); - if (paramsObj.has('expand')) - this.expand = (paramsObj.get('expand') == '1'); - if (paramsObj.has('remap')) - this.remap = (paramsObj.get('remap') == '1'); - if (paramsObj.has('resume')) - this.resume = (paramsObj.get('resume') == '1'); + this.persistingParams.forEach((param) => { + if (paramsObj.has(param)) + this[param] = (paramsObj.get(param) == '1'); + }, this); if (paramsObj.has('error')) return self.errorPage(paramsObj); @@ -511,6 +507,9 @@ var bugherder = { return self.acquireChangeset(); }, + // Parameters maintained across page loads + persistingParams: ['debug', 'expand', 'remap', 'resume'], + // Push a new URL onto history go: function mcM_go(query, replace) { var maintained = []; @@ -519,9 +518,7 @@ var bugherder = { maintained.push(prop + '=1'); } - // Maintain various parameters across page loads - var persisted = ['debug', 'expand', 'remap', 'resume']; - persisted.forEach(persist, this); + this.persistingParams.forEach(persist, this); var newURL = document.location.href.split('?')[0]; if (query) From ed6c7be01f61eedcac3584532ccc6f4006cf213e Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Sun, 13 May 2018 18:02:15 +0200 Subject: [PATCH 3/3] Bug 1461193 - Simplify addition of persistent parameters --- bugherder/js/bugherder.js | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/bugherder/js/bugherder.js b/bugherder/js/bugherder.js index f0c478e..2f0dfa5 100644 --- a/bugherder/js/bugherder.js +++ b/bugherder/js/bugherder.js @@ -512,24 +512,17 @@ var bugherder = { // Push a new URL onto history go: function mcM_go(query, replace) { - var maintained = []; - function persist(prop) { - if (this[prop]) - maintained.push(prop + '=1'); - } - - this.persistingParams.forEach(persist, this); + var params = new URLSearchParams(query); + this.persistingParams.forEach((param) => { + if (this[param]) { + params.append(param, '1'); + } + }, this); + var newQueryString = params.toString(); var newURL = document.location.href.split('?')[0]; - if (query) - newURL = newURL + '?' + query; - - var maintainedQuery = maintained.join('&'); - if (!query && maintainedQuery.length > 0) - newURL += '?'; - else if (query && maintainedQuery.length > 0) - newURL += '&'; - newURL += maintainedQuery; + if (newQueryString) + newURL = newURL + '?' + newQueryString; // Put the cset and tree parameters back in no matter what if present var currentURLSearch = new URLSearchParams(document.location.search);