From ae85c226308d2fe23b1f8e04a035a88fcfadd6ee Mon Sep 17 00:00:00 2001 From: "ojan@chromium.org" Date: Mon, 28 Sep 2009 21:33:50 +0000 Subject: 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 --- .../layout_tests/dashboards/dashboard_base.js | 31 ++++++++++------------ 1 file 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; -- cgit v1.1