Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: chrome/test/data/extensions/api_test/webrequest/framework.js

Issue 11645021: Fix flakyness in webRequest API tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 var getURL = chrome.extension.getURL; 5 var getURL = chrome.extension.getURL;
6 var deepEq = chrome.test.checkDeepEq; 6 var deepEq = chrome.test.checkDeepEq;
7 var expectedEventData; 7 var expectedEventData;
8 var capturedEventData; 8 var capturedEventData;
9 var capturedUnexpectedData; 9 var capturedUnexpectedData;
10 var expectedEventOrder; 10 var expectedEventOrder;
11 var tabId; 11 var tabId;
12 var tabIdMap; 12 var tabIdMap;
13 var frameIdMap; 13 var frameIdMap;
14 var testServerPort; 14 var testServerPort;
15 var testServer = "www.a.com"; 15 var testServer = "www.a.com";
16 var defaultScheme = "http"; 16 var defaultScheme = "http";
17 var eventsCaptured; 17 var eventsCaptured;
18 18
19 // If true, don't bark on events that were not registered via expect(). 19 // If true, don't bark on events that were not registered via expect().
20 // These events are recorded in capturedUnexpectedData instead of 20 // These events are recorded in capturedUnexpectedData instead of
21 // capturedEventData. 21 // capturedEventData.
22 var ignoreUnexpected = false; 22 var ignoreUnexpected = false;
23 23
24 // This is a debugging aid to print all received events as well as the 24 // This is a debugging aid to print all received events as well as the
25 // information whether they were expected. 25 // information whether they were expected.
26 var logAllRequests = false; 26 var logAllRequests = false;
27 27
28 function runTests(tests) { 28 function runTests(tests) {
29 chrome.tabs.create({url: "about:blank"}, function(tab) { 29 var waitForAboutBlank = function(_, info, tab) {
30 tabId = tab.id; 30 if (info.status == "complete" && tab.url == "about:blank") {
31 tabIdMap = {}; 31 tabId = tab.id;
32 tabIdMap[tabId] = 0; 32 tabIdMap = {};
33 chrome.test.getConfig(function(config) { 33 tabIdMap[tabId] = 0;
34 testServerPort = config.testServer.port; 34 chrome.tabs.onUpdated.removeListener(waitForAboutBlank);
35 chrome.test.runTests(tests); 35 chrome.test.getConfig(function(config) {
36 }); 36 testServerPort = config.testServer.port;
37 }); 37 chrome.test.runTests(tests);
38 });
39 }
40 };
41 chrome.tabs.onUpdated.addListener(waitForAboutBlank);
42 chrome.tabs.create({url: "about:blank"});
Matt Perry 2013/01/03 23:39:30 wow this API sucks :)
38 } 43 }
39 44
40 // Returns an URL from the test server, fixing up the port. Must be called 45 // Returns an URL from the test server, fixing up the port. Must be called
41 // from within a test case passed to runTests. 46 // from within a test case passed to runTests.
42 function getServerURL(path, opt_host, opt_scheme) { 47 function getServerURL(path, opt_host, opt_scheme) {
43 if (!testServerPort) 48 if (!testServerPort)
44 throw new Error("Called getServerURL outside of runTests."); 49 throw new Error("Called getServerURL outside of runTests.");
45 var host = opt_host || testServer; 50 var host = opt_host || testServer;
46 var scheme = opt_scheme || defaultScheme; 51 var scheme = opt_scheme || defaultScheme;
47 return scheme + "://" + host + ":" + testServerPort + "/" + path; 52 return scheme + "://" + host + ":" + testServerPort + "/" + path;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 // since they are unpredictable. 164 // since they are unpredictable.
160 if (details.tabId == -1 || details.type == "other" || 165 if (details.tabId == -1 || details.type == "other" ||
161 details.url.match(/\/favicon.ico$/) || 166 details.url.match(/\/favicon.ico$/) ||
162 details.url.match(/https:\/\/dl.google.com/)) 167 details.url.match(/https:\/\/dl.google.com/))
163 return; 168 return;
164 169
165 // Pull the extra per-event options out of the expected data. These let 170 // Pull the extra per-event options out of the expected data. These let
166 // us specify special return values per event. 171 // us specify special return values per event.
167 var currentIndex = capturedEventData.length; 172 var currentIndex = capturedEventData.length;
168 var extraOptions; 173 var extraOptions;
174 var retval;
battre 2012/12/19 17:57:57 we assign retval in 176 to a global variable witho
169 if (expectedEventData.length > currentIndex) { 175 if (expectedEventData.length > currentIndex) {
170 retval = 176 retval =
171 expectedEventData[currentIndex].retval_function ? 177 expectedEventData[currentIndex].retval_function ?
172 expectedEventData[currentIndex].retval_function(name, details) : 178 expectedEventData[currentIndex].retval_function(name, details) :
173 expectedEventData[currentIndex].retval; 179 expectedEventData[currentIndex].retval;
174 } 180 }
175 181
176 // Check that the frameId can be used to reliably determine the URL of the 182 // Check that the frameId can be used to reliably determine the URL of the
177 // frame that caused requests. 183 // frame that caused requests.
178 if (name == "onBeforeRequest") { 184 if (name == "onBeforeRequest") {
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 helper(chrome.webRequest.onHeadersReceived); 329 helper(chrome.webRequest.onHeadersReceived);
324 helper(chrome.webRequest.onResponseStarted); 330 helper(chrome.webRequest.onResponseStarted);
325 helper(chrome.webRequest.onBeforeRedirect); 331 helper(chrome.webRequest.onBeforeRedirect);
326 helper(chrome.webRequest.onCompleted); 332 helper(chrome.webRequest.onCompleted);
327 helper(chrome.webRequest.onErrorOccurred); 333 helper(chrome.webRequest.onErrorOccurred);
328 } 334 }
329 335
330 function resetDeclarativeRules() { 336 function resetDeclarativeRules() {
331 chrome.declarativeWebRequest.onRequest.removeRules(); 337 chrome.declarativeWebRequest.onRequest.removeRules();
332 } 338 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698