Index: client/site_tests/power_LoadTest/extension/background.html |
diff --git a/client/site_tests/power_LoadTest/extension/background.html b/client/site_tests/power_LoadTest/extension/background.html |
index e1316f9d7abb2f0264d5d6fed27097fc1785d165..9a89b40b660a690efea39c07a504961fc338db67 100755 |
--- a/client/site_tests/power_LoadTest/extension/background.html |
+++ b/client/site_tests/power_LoadTest/extension/background.html |
@@ -5,6 +5,19 @@ found in the LICENSE file. |
---> |
<html> |
+ |
+<script> |
+// Convert seconds to milliseconds |
+function seconds(s) { |
+ return s * 1000; |
+} |
+ |
+// Convert minutes to milliseconds |
+function minutes(m) { |
+ return seconds(m * 60); |
+} |
+</script> |
+ |
<script src='/urls.js'> |
</script> |
@@ -48,6 +61,46 @@ function testListener(request, sender, sendResponse) { |
} |
} |
+function parseTaskList(tasks_string) { |
+ if (tasks_string == '') |
+ return []; |
+ var task_strings = tasks_string.split('+'); |
+ var task_list = []; |
+ var time = 0; |
+ |
+ // Parse each task. |
+ for (var i in task_strings) { |
+ // Extract task parameters. |
+ var params = task_strings[i].split(';'); |
+ var cmd = params[0]; |
+ var urls = params[1].split(','); |
+ var duration = seconds(parseInt(params[2])); |
+ if (params.length > 3) |
+ var delay = seconds(parseInt(params[3])); |
+ |
+ if (cmd == 'window') { |
+ task_list.push( { type: 'window', |
+ start: time, |
+ duration: duration, |
+ focus: true, |
+ tabs: urls } ); |
+ } |
+ else if (cmd == 'cycle') { |
+ task_list.push( { type: 'cycle', |
+ start: time, |
+ duration: duration, |
+ delay: delay, |
+ timeout: seconds(10), |
+ focus: true, |
+ urls: urls } ); |
+ } |
+ // Increment the time to determine the start time of the next task. |
+ time += duration; |
+ } |
+ return task_list; |
+} |
+ |
+var task_list = []; |
chrome.extension.onRequest.addListener( |
function paramsSetupListener(request, sender) { |
@@ -56,7 +109,8 @@ chrome.extension.onRequest.addListener( |
undefined != request._should_scroll_up && |
undefined != request._scroll_loop && |
undefined != request._scroll_interval_ms && |
- undefined != request._scroll_by_pixels) { |
+ undefined != request._scroll_by_pixels && |
+ undefined != request._tasks) { |
// Update test parameters from content script. |
test_time_ms = request._test_time_ms; |
should_scroll = request._should_scroll; |
@@ -64,6 +118,9 @@ chrome.extension.onRequest.addListener( |
scroll_loop = request._scroll_loop; |
scroll_interval_ms = request._scroll_interval_ms; |
scroll_by_pixels = request._scroll_by_pixels; |
+ task_list = parseTaskList(request._tasks); |
+ if (task_list.length != 0) |
+ tasks = task_list; |
time_ratio = 3600 * 1000 / test_time_ms; // default test time is 1 hour |
chrome.extension.onRequest.removeListener(paramsSetupListener); |
chrome.extension.onRequest.addListener(testListener); |
@@ -88,10 +145,10 @@ function cycle_navigate(cycle) { |
var url = cycle.urls[cycle.idx]; |
chrome.tabs.update(cycle.id, {'url': url, 'selected': true}); |
cycle.idx = (cycle.idx + 1) % cycle.urls.length; |
- if (cycle.timeout < cycle.delay && cycle.timeout > 0) { |
+ if (cycle.timeout < cycle.delay / time_ratio && cycle.timeout > 0) { |
cycle.timer = setTimeout(cycle_check_timeout, cycle.timeout, cycle); |
} else { |
- cycle.timer = setTimeout(cycle_navigate, cycle.delay, cycle); |
+ cycle.timer = setTimeout(cycle_navigate, cycle.delay / time_ratio, cycle); |
} |
} |
@@ -100,7 +157,8 @@ function cycle_check_timeout(cycle) { |
cycle.failed_loads++; |
cycle_navigate(cycle); |
} else { |
- cycle.timer = setTimeout(cycle_navigate, cycle.delay - cycle.timeout, |
+ cycle.timer = setTimeout(cycle_navigate, |
+ cycle.delay / time_ratio - cycle.timeout, |
cycle); |
} |
} |