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

Side by Side Diff: chrome/renderer/resources/extension_apitest.js

Issue 195090: Address ExtensionApiTest.Tabs flakiness (Closed)
Patch Set: pre commit Created 11 years, 3 months 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
OLDNEW
1 // extension_apitest.js 1 // extension_apitest.js
2 // mini-framework for ExtensionApiTest browser tests 2 // mini-framework for ExtensionApiTest browser tests
3 3
4 var chrome = chrome || {}; 4 var chrome = chrome || {};
5 (function() { 5 (function() {
6 chrome.test = chrome.test || {}; 6 chrome.test = chrome.test || {};
7 7
8 chrome.test.tests = chrome.test.tests || []; 8 chrome.test.tests = chrome.test.tests || [];
9 9
10 var completed = false; 10 var completed = false;
(...skipping 30 matching lines...) Expand all
41 complete(); 41 complete();
42 }; 42 };
43 43
44 function allTestsSucceeded() { 44 function allTestsSucceeded() {
45 console.log("All tests succeeded"); 45 console.log("All tests succeeded");
46 if (completed) throw "completed"; 46 if (completed) throw "completed";
47 47
48 chrome.test.notifyPass(); 48 chrome.test.notifyPass();
49 complete(); 49 complete();
50 } 50 }
51 51
52 var pendingCallbacks = 0; 52 var pendingCallbacks = 0;
53 53
54 function callbackAdded() { 54 chrome.test.callbackAdded = function () {
55 pendingCallbacks++; 55 pendingCallbacks++;
56 };
57 56
58 function callbackCompleted() { 57 return function() {
59 pendingCallbacks--; 58 pendingCallbacks--;
60 if (pendingCallbacks == 0) { 59 if (pendingCallbacks == 0) {
61 chrome.test.succeed(); 60 chrome.test.succeed();
61 }
62 } 62 }
63 }; 63 };
64 64
65 chrome.test.runNextTest = function() { 65 chrome.test.runNextTest = function() {
66 chrome.test.assertEq(pendingCallbacks, 0); 66 chrome.test.assertEq(pendingCallbacks, 0);
67 lastTest = currentTest; 67 lastTest = currentTest;
68 currentTest = chrome.test.tests.shift(); 68 currentTest = chrome.test.tests.shift();
69 if (!currentTest) { 69 if (!currentTest) {
70 allTestsSucceeded(); 70 allTestsSucceeded();
71 return; 71 return;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 chrome.test.fail(msg); 141 chrome.test.fail(msg);
142 } 142 }
143 }; 143 };
144 144
145 // Wrapper for generating test functions, that takes care of calling 145 // Wrapper for generating test functions, that takes care of calling
146 // assertNoLastError() and (optionally) succeed() for you. 146 // assertNoLastError() and (optionally) succeed() for you.
147 chrome.test.callback = function(func, expectedError) { 147 chrome.test.callback = function(func, expectedError) {
148 if (func) { 148 if (func) {
149 chrome.test.assertEq(typeof(func), 'function'); 149 chrome.test.assertEq(typeof(func), 'function');
150 } 150 }
151 callbackAdded(); 151 var callbackCompleted = chrome.test.callbackAdded();
152 152
153 return function() { 153 return function() {
154 if (expectedError == null) { 154 if (expectedError == null) {
155 chrome.test.assertNoLastError(); 155 chrome.test.assertNoLastError();
156 } else { 156 } else {
157 chrome.test.assertEq(typeof(expectedError), 'string'); 157 chrome.test.assertEq(typeof(expectedError), 'string');
158 chrome.test.assertEq(expectedError, chrome.extension.lastError.message); 158 chrome.test.assertEq(expectedError, chrome.extension.lastError.message);
159 } 159 }
160 160
161 if (func) { 161 if (func) {
162 safeFunctionApply(func, arguments); 162 safeFunctionApply(func, arguments);
163 } 163 }
164 164
165 callbackCompleted(); 165 callbackCompleted();
166 }; 166 };
167 }; 167 };
168 168
169 chrome.test.listenOnce = function(event, func) { 169 chrome.test.listenOnce = function(event, func) {
170 callbackAdded(); 170 var callbackCompleted = chrome.test.callbackAdded();
171 var listener = function() { 171 var listener = function() {
172 event.removeListener(listener); 172 event.removeListener(listener);
173 safeFunctionApply(func, arguments); 173 safeFunctionApply(func, arguments);
174 callbackCompleted(); 174 callbackCompleted();
175 }; 175 };
176 event.addListener(listener); 176 event.addListener(listener);
177 }; 177 };
178 178
179 chrome.test.listenForever = function(event, func) { 179 chrome.test.listenForever = function(event, func) {
180 callbackAdded(); 180 var callbackCompleted = chrome.test.callbackAdded();
181 181
182 var listener = function() { 182 var listener = function() {
183 safeFunctionApply(func, arguments); 183 safeFunctionApply(func, arguments);
184 }; 184 };
185 185
186 var done = {}; 186 var done = function() {
187 done.doneListening = function() {
188 event.removeListener(listener); 187 event.removeListener(listener);
189 callbackCompleted(); 188 callbackCompleted();
190 }; 189 };
191 190
192 event.addListener(listener); 191 event.addListener(listener);
193 return done; 192 return done;
194 }; 193 };
195 194
196 chrome.test.callbackPass = function(func) { 195 chrome.test.callbackPass = function(func) {
197 return chrome.test.callback(func); 196 return chrome.test.callback(func);
198 }; 197 };
199 198
200 chrome.test.callbackFail = function(expectedError) { 199 chrome.test.callbackFail = function(expectedError) {
201 return chrome.test.callback(null, expectedError); 200 return chrome.test.callback(null, expectedError);
202 }; 201 };
203 202
204 chrome.test.runTests = function(tests) { 203 chrome.test.runTests = function(tests) {
205 chrome.test.tests = tests; 204 chrome.test.tests = tests;
206 chrome.test.runNextTest(); 205 chrome.test.runNextTest();
207 }; 206 };
208 })(); 207 })();
OLDNEW
« no previous file with comments | « chrome/renderer/renderer_resources.grd ('k') | chrome/test/data/extensions/api_test/tabs/a.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698