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

Side by Side Diff: chrome/test/data/webui/webui_resource_async_browsertest.js

Issue 1758013002: WebUI: Allow rejecting a promise that is returned from cr.sendWithPromise(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Re-rename Created 4 years, 9 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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 /** 5 /**
6 * @fileoverview Framework for running async JS tests for cr.js utility methods. 6 * @fileoverview Framework for running async JS tests for cr.js utility methods.
7 */ 7 */
8 8
9 /** @const {string} Path to source root. */ 9 /** @const {string} Path to source root. */
10 var ROOT_PATH = '../../../../'; 10 var ROOT_PATH = '../../../../';
(...skipping 17 matching lines...) Expand all
28 /** @override */ 28 /** @override */
29 isAsync: true, 29 isAsync: true,
30 30
31 /** @override */ 31 /** @override */
32 runAccessibilityChecks: false, 32 runAccessibilityChecks: false,
33 33
34 /** @override */ 34 /** @override */
35 extraLibraries: [ 35 extraLibraries: [
36 ROOT_PATH + 'third_party/mocha/mocha.js', 36 ROOT_PATH + 'third_party/mocha/mocha.js',
37 ROOT_PATH + 'chrome/test/data/webui/mocha_adapter.js', 37 ROOT_PATH + 'chrome/test/data/webui/mocha_adapter.js',
38 ROOT_PATH + 'chrome/test/data/webui/promise_resolver.js', 38 ROOT_PATH + 'ui/webui/resources/js/promise_resolver.js',
39 ROOT_PATH + 'ui/webui/resources/js/cr.js', 39 ROOT_PATH + 'ui/webui/resources/js/cr.js',
40 ], 40 ],
41 }; 41 };
42 42
43 TEST_F('WebUIResourceAsyncTest', 'SendWithPromise', function() { 43 TEST_F('WebUIResourceAsyncTest', 'SendWithPromise', function() {
44 /** 44 /**
45 * TODO(dpapad): Move this helper method in test_api.js. 45 * TODO(dpapad): Move this helper method in test_api.js.
46 * @param {string} name chrome.send message name. 46 * @param {string} name chrome.send message name.
47 * @return {!Promise} Fires when chrome.send is called with the given message 47 * @return {!Promise} Fires when chrome.send is called with the given message
48 * name. 48 * name.
49 */ 49 */
50 function whenChromeSendCalled(name) { 50 function whenChromeSendCalled(name) {
51 return new Promise(function(resolve, reject) { 51 return new Promise(function(resolve, reject) {
52 registerMessageCallback(name, null, resolve); 52 registerMessageCallback(name, null, resolve);
53 }); 53 });
54 } 54 }
55 55
56 suite('SendWithPromise', function() { 56 suite('SendWithPromise', function() {
57 var rejectPromises = false;
58
57 setup(function() { 59 setup(function() {
58 // Simulate a WebUI handler that echoes back all parameters passed to it. 60 // Simulate a WebUI handler that echoes back all parameters passed to it.
61 // Rejects the promise depending on |rejectPromises|.
59 whenChromeSendCalled(CHROME_SEND_NAME).then(function(args) { 62 whenChromeSendCalled(CHROME_SEND_NAME).then(function(args) {
60 cr.webUIResponse.apply(null, args); 63 var callbackId = args[0];
64 cr.webUIResponse.apply(
65 null, [callbackId, !rejectPromises].concat(args.slice(1)));
61 }); 66 });
62 }); 67 });
68 teardown(function() { rejectPromises = false; });
63 69
64 test('sendWithPromise_ResponseObject', function() { 70 test('sendWithPromise_ResponseObject', function() {
65 var expectedResponse = {'foo': 'bar'}; 71 var expectedResponse = {'foo': 'bar'};
66 return cr.sendWithPromise(CHROME_SEND_NAME, expectedResponse).then( 72 return cr.sendWithPromise(CHROME_SEND_NAME, expectedResponse).then(
67 function(response) { 73 function(response) {
68 assertEquals( 74 assertEquals(
69 JSON.stringify(expectedResponse), JSON.stringify(response)); 75 JSON.stringify(expectedResponse), JSON.stringify(response));
70 }); 76 });
71 }); 77 });
72 78
(...skipping 12 matching lines...) Expand all
85 function(response) { 91 function(response) {
86 assertEquals(expectedResponse, response); 92 assertEquals(expectedResponse, response);
87 }); 93 });
88 }); 94 });
89 95
90 test('sendWithPromise_ResponseVoid', function() { 96 test('sendWithPromise_ResponseVoid', function() {
91 return cr.sendWithPromise(CHROME_SEND_NAME).then(function(response) { 97 return cr.sendWithPromise(CHROME_SEND_NAME).then(function(response) {
92 assertEquals(undefined, response); 98 assertEquals(undefined, response);
93 }); 99 });
94 }); 100 });
101
102 test('sendWithPromise_Reject', function() {
103 rejectPromises = true;
104 var expectedResponse = 1234;
105 return cr.sendWithPromise(CHROME_SEND_NAME, expectedResponse).then(
106 function() {
107 assertNotReached('should have rejected promise');
108 },
109 function(error) {
110 assertEquals(expectedResponse, error);
111 });
112 });
95 }); 113 });
96 114
97 // Run all registered tests. 115 // Run all registered tests.
98 mocha.run(); 116 mocha.run();
99 }); 117 });
100 118
101 119
102 TEST_F('WebUIResourceAsyncTest', 'WebUIListeners', function() { 120 TEST_F('WebUIResourceAsyncTest', 'WebUIListeners', function() {
103 suite('WebUIListeners', function() { 121 suite('WebUIListeners', function() {
104 var listener1 = null; 122 var listener1 = null;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 listener2 = cr.addWebUIListener(EVENT_NAME, resolver2.resolve); 178 listener2 = cr.addWebUIListener(EVENT_NAME, resolver2.resolve);
161 cr.webUIListenerCallback(EVENT_NAME); 179 cr.webUIListenerCallback(EVENT_NAME);
162 // Check that both listeners registered are invoked. 180 // Check that both listeners registered are invoked.
163 return Promise.all([resolver1.promise, resolver2.promise]); 181 return Promise.all([resolver1.promise, resolver2.promise]);
164 }); 182 });
165 }); 183 });
166 184
167 // Run all registered tests. 185 // Run all registered tests.
168 mocha.run(); 186 mocha.run();
169 }); 187 });
OLDNEW
« no previous file with comments | « chrome/test/data/webui/settings/cr_settings_browsertest.js ('k') | ui/webui/resources/html/cr.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698