diff options
author | ojan@chromium.org <ojan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-28 21:33:50 +0000 |
---|---|---|
committer | ojan@chromium.org <ojan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-28 21:33:50 +0000 |
commit | ae85c226308d2fe23b1f8e04a035a88fcfadd6ee (patch) | |
tree | 429b3164a60a543b788c9817af2ee72cc9a7699f | |
parent | a4d271ecbea5ed763d49919fac7bfabe788832f6 (diff) | |
download | chromium_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.js | 31 |
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; |