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

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

Issue 199091: Update ExtensionApiTest.Tabs and re-enable (Closed)
Patch Set: remove comment 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 var totalCallbacks = 0; 53
54
55 function callbackAdded() { 54 function callbackAdded() {
56 pendingCallbacks++; 55 pendingCallbacks++;
57 chrome.test.assertEq(totalCallbacks, 0);
58 }; 56 };
59 57
60 function callbackCompleted() { 58 function callbackCompleted() {
61 if (!totalCallbacks)
62 totalCallbacks = pendingCallbacks;
63 pendingCallbacks--; 59 pendingCallbacks--;
64 if (pendingCallbacks == 0) { 60 if (pendingCallbacks == 0) {
65 //chrome.test.log(" " + totalCallbacks + " callbacks ran");
66 totalCallbacks = 0;
67 chrome.test.succeed(); 61 chrome.test.succeed();
68 } 62 }
69 }; 63 };
70 64
71 chrome.test.runNextTest = function() { 65 chrome.test.runNextTest = function() {
72 chrome.test.assertEq(pendingCallbacks, 0); 66 chrome.test.assertEq(pendingCallbacks, 0);
73 lastTest = currentTest; 67 lastTest = currentTest;
74 currentTest = chrome.test.tests.shift(); 68 currentTest = chrome.test.tests.shift();
75 if (!currentTest) { 69 if (!currentTest) {
76 allTestsSucceeded(); 70 allTestsSucceeded();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 "\nExpected Type:" + typeof(expected)); 113 "\nExpected Type:" + typeof(expected));
120 } 114 }
121 }; 115 };
122 116
123 chrome.test.assertNoLastError = function() { 117 chrome.test.assertNoLastError = function() {
124 if (chrome.extension.lastError != undefined) { 118 if (chrome.extension.lastError != undefined) {
125 chrome.test.fail("lastError.message == " + 119 chrome.test.fail("lastError.message == " +
126 chrome.extension.lastError.message); 120 chrome.extension.lastError.message);
127 } 121 }
128 }; 122 };
129 123
130 function safeFunctionApply(func, arguments) { 124 function safeFunctionApply(func, arguments) {
131 try { 125 try {
132 if (func) { 126 if (func) {
133 func.apply(null, arguments); 127 func.apply(null, arguments);
134 } 128 }
135 } catch (e) { 129 } catch (e) {
136 var stack = null; 130 var stack = null;
137 if (typeof(e.stack) != "undefined") { 131 if (typeof(e.stack) != "undefined") {
138 stack = e.stack.toString(); 132 stack = e.stack.toString();
139 } 133 }
140 var msg = "Exception during execution of callback in " + 134 var msg = "Exception during execution of callback in " +
141 currentTest.name; 135 currentTest.name;
142 if (stack) { 136 if (stack) {
143 msg += "\n" + stack; 137 msg += "\n" + stack;
144 } else { 138 } else {
145 msg += "\n(no stack available)"; 139 msg += "\n(no stack available)";
146 } 140 }
147 chrome.test.fail(msg); 141 chrome.test.fail(msg);
148 } 142 }
149 }; 143 };
150 144
151 // Wrapper for generating test functions, that takes care of calling 145 // Wrapper for generating test functions, that takes care of calling
152 // assertNoLastError() and (optionally) succeed() for you. 146 // assertNoLastError() and (optionally) succeed() for you.
153 chrome.test.callback = function(func, expectedError) { 147 chrome.test.callback = function(func, expectedError) {
154 if (func) { 148 if (func) {
155 chrome.test.assertEq(typeof(func), 'function'); 149 chrome.test.assertEq(typeof(func), 'function');
156 } 150 }
157
158 callbackAdded(); 151 callbackAdded();
159 152
160 return function() { 153 return function() {
161 if (expectedError == null) { 154 if (expectedError == null) {
162 chrome.test.assertNoLastError(); 155 chrome.test.assertNoLastError();
163 } else { 156 } else {
164 chrome.test.assertEq(typeof(expectedError), 'string'); 157 chrome.test.assertEq(typeof(expectedError), 'string');
165 chrome.test.assertEq(expectedError, chrome.extension.lastError.message); 158 chrome.test.assertEq(expectedError, chrome.extension.lastError.message);
166 } 159 }
167 160
168 if (func) { 161 if (func) {
169 safeFunctionApply(func, arguments); 162 safeFunctionApply(func, arguments);
170 } 163 }
171 164
172 callbackCompleted(); 165 callbackCompleted();
173 }; 166 };
174 }; 167 };
175 168
176 chrome.test.listenOnce = function(event, func) { 169 chrome.test.listenOnce = function(event, func) {
177 callbackAdded(); 170 callbackAdded();
178 var listener = function() { 171 var listener = function() {
179 event.removeListener(listener); 172 event.removeListener(listener);
180 safeFunctionApply(func, arguments); 173 safeFunctionApply(func, arguments);
181 callbackCompleted(); 174 callbackCompleted();
182 }; 175 };
183 event.addListener(listener); 176 event.addListener(listener);
184 }; 177 };
185 178
179 chrome.test.listenForever = function(event, func) {
180 callbackAdded();
181
182 var listener = function() {
183 safeFunctionApply(func, arguments);
184 };
185
186 var done = {};
187 done.doneListening = function() {
188 event.removeListener(listener);
189 callbackCompleted();
190 };
191
192 event.addListener(listener);
193 return done;
194 };
195
186 chrome.test.callbackPass = function(func) { 196 chrome.test.callbackPass = function(func) {
187 return chrome.test.callback(func); 197 return chrome.test.callback(func);
188 }; 198 };
189 199
190 chrome.test.callbackFail = function(expectedError) { 200 chrome.test.callbackFail = function(expectedError) {
191 return chrome.test.callback(null, expectedError); 201 return chrome.test.callback(null, expectedError);
192 }; 202 };
193 203
194 // TODO(erikkay) This is deprecated and should be removed.
195 chrome.test.testCallback = function(succeedWhenDone, func) {
196 return chrome.test.callback(func);
197 };
198
199 chrome.test.runTests = function(tests) { 204 chrome.test.runTests = function(tests) {
200 chrome.test.tests = tests; 205 chrome.test.tests = tests;
201 chrome.test.runNextTest(); 206 chrome.test.runNextTest();
202 }; 207 };
203
204 })(); 208 })();
OLDNEW
« no previous file with comments | « chrome/renderer/renderer_resources.grd ('k') | chrome/test/data/extensions/api_test/tabs/test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698