summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorojan@chromium.org <ojan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-28 21:33:50 +0000
committerojan@chromium.org <ojan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-28 21:33:50 +0000
commitae85c226308d2fe23b1f8e04a035a88fcfadd6ee (patch)
tree429b3164a60a543b788c9817af2ee72cc9a7699f
parenta4d271ecbea5ed763d49919fac7bfabe788832f6 (diff)
downloadchromium_src-ae85c226308d2fe23b1f8e04a035a88fcfadd6ee.zip
chromium_src-ae85c226308d2fe23b1f8e04a035a88fcfadd6ee.tar.gz
chromium_src-ae85c226308d2fe23b1f8e04a035a88fcfadd6ee.tar.bz2
Fix dashboard history management to properly start from a blank
slate when converting the hash parameters to the currentState object. Review URL: http://codereview.chromium.org/242038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27417 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/tools/layout_tests/dashboards/dashboard_base.js31
1 files changed, 14 insertions, 17 deletions
diff --git a/webkit/tools/layout_tests/dashboards/dashboard_base.js b/webkit/tools/layout_tests/dashboards/dashboard_base.js
index ce79499..1ead327 100644
--- a/webkit/tools/layout_tests/dashboards/dashboard_base.js
+++ b/webkit/tools/layout_tests/dashboards/dashboard_base.js
@@ -129,11 +129,13 @@ function validateParameter(state, key, value, validateFn) {
}
/**
- * Parses a string (e.g. window.location.hash) and calls
- * validValueHandler(key, value) for each key-value pair in the string.
+ * Parses window.location.hash and set the currentState values appropriately.
*/
-function parseParameters(parameterStr, validValueHandler) {
- var params = parameterStr.split('&');
+function parseParameters(parameterStr) {
+ saveStoredWindowLocation();
+ currentState = {};
+
+ var params = window.location.hash.substring(1).split('&');
var invalidKeys = [];
for (var i = 0; i < params.length; i++) {
var thisParam = params[i].split('=');
@@ -144,12 +146,15 @@ function parseParameters(parameterStr, validValueHandler) {
var key = thisParam[0];
var value = decodeURIComponent(thisParam[1]);
- if (!validValueHandler(key, value))
+ if (!handleValidHashParameterWrapper(key, value))
invalidKeys.push(key + '=' + value);
}
if (invalidKeys.length)
console.log("Invalid query parameters: " + invalidKeys.join(','));
+
+ fillMissingValues(currentState, defaultCrossDashboardStateValues);
+ fillMissingValues(currentState, defaultStateValues);
}
@@ -160,14 +165,6 @@ function fillMissingValues(to, from) {
}
}
-function parseAllParameters() {
- saveStoredWindowLocation();
- parseParameters(window.location.hash.substring(1),
- handleValidHashParameterWrapper);
- fillMissingValues(currentState, defaultCrossDashboardStateValues);
- fillMissingValues(currentState, defaultStateValues);
-}
-
// Keep the location around for detecting changes to hash arguments
// manually typed into the URL bar.
var oldLocation;
@@ -182,10 +179,10 @@ function appendScript(path) {
}
// Permalinkable state of the page.
-var currentState = {};
+var currentState;
// Parse cross-dashboard parameters before using them.
-parseAllParameters();
+parseParameters();
if (currentState.debug) {
// In debug mode point to the results.json and expectations.json in the
@@ -238,7 +235,7 @@ function ADD_EXPECTATIONS(expectations) {
}
function appendJSONScriptElements() {
- parseAllParameters();
+ parseParameters();
for (var builderName in builders) {
appendScript(getPathToBuilderResultsFile(builderName) + 'results.json');
@@ -257,7 +254,7 @@ function handleLocationChange() {
setLoadingUIDisplayStyle('block');
setTimeout(function() {
saveStoredWindowLocation();
- parseAllParameters();
+ parseParameters();
if (!expectationsLoaded)
return;