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

Side by Side Diff: chrome/test/data/extensions/api_test/messaging/connect/test.js

Issue 8763008: Move yet another block of tests to manifest_version 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 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
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 JSON.parse = function() {
6 return "JSON.parse clobbered by extension.";
7 };
8
9 JSON.stringify = function() {
10 return "JSON.stringify clobbered by extension.";
11 };
12
13 Array.prototype.toJSON = function() {
14 return "Array.prototype.toJSON clobbered by extension.";
15 };
16
17 Object.prototype.toJSON = function() {
18 return "Object.prototype.toJSON clobbered by extension.";
19 };
20
21 // Keep track of the tab that we're running tests in, for simplicity.
22 var testTab = null;
23
24 chrome.test.getConfig(function(config) {
25 chrome.test.runTests([
26 function setupTestTab() {
27 chrome.test.log("Creating tab...");
28 chrome.tabs.create({
29 url: "http://localhost:PORT/files/extensions/test_file.html"
30 .replace(/PORT/, config.testServer.port)
31 }, function(tab) {
32 chrome.tabs.onUpdated.addListener(function listener(tabid, info) {
33 if (tab.id == tabid && info.status == 'complete') {
34 chrome.test.log("Created tab: " + tab.url);
35 chrome.tabs.onUpdated.removeListener(listener);
36 testTab = tab;
37 chrome.test.succeed();
38 }
39 });
40 });
41 },
42
43 // Tests that postMessage to the tab and its response works.
44 function postMessage() {
45 var port = chrome.tabs.connect(testTab.id);
46 port.postMessage({testPostMessage: true});
47 port.onMessage.addListener(function(msg) {
48 port.disconnect();
49 chrome.test.succeed();
50 });
51 },
52
53 // Tests that port name is sent & received correctly.
54 function portName() {
55 var portName = "lemonjello";
56 var port = chrome.tabs.connect(testTab.id, {name: portName});
57 port.postMessage({testPortName: true});
58 port.onMessage.addListener(function(msg) {
59 chrome.test.assertEq(msg.portName, portName);
60 port.disconnect();
61 chrome.test.succeed();
62 });
63 },
64
65 // Tests that postMessage from the tab and its response works.
66 function postMessageFromTab() {
67 chrome.extension.onConnect.addListener(function(port) {
68 port.onMessage.addListener(function(msg) {
69 chrome.test.assertTrue(msg.testPostMessageFromTab);
70 port.postMessage({success: true, portName: port.name});
71 chrome.test.log("postMessageFromTab: got message from tab");
72 });
73 });
74
75 var port = chrome.tabs.connect(testTab.id);
76 port.postMessage({testPostMessageFromTab: true});
77 chrome.test.log("postMessageFromTab: sent first message to tab");
78 port.onMessage.addListener(function(msg) {
79 port.disconnect();
80 chrome.test.succeed();
81 });
82 },
83
84 // Tests receiving a request from a content script and responding.
85 function sendRequestFromTab() {
86 var doneListening = chrome.test.listenForever(
87 chrome.extension.onRequest,
88 function(request, sender, sendResponse) {
89 chrome.test.assertTrue("url" in sender.tab, "no tab available.");
90 chrome.test.assertEq(sender.id, location.host);
91 if (request.step == 1) {
92 // Step 1: Page should send another request for step 2.
93 chrome.test.log("sendRequestFromTab: got step 1");
94 sendResponse({nextStep: true});
95 } else {
96 // Step 2.
97 chrome.test.assertEq(request.step, 2);
98 sendResponse();
99 doneListening();
100 }
101 });
102
103 var port = chrome.tabs.connect(testTab.id);
104 port.postMessage({testSendRequestFromTab: true});
105 port.disconnect();
106 chrome.test.log("sendRequestFromTab: sent first message to tab");
107 },
108
109 // Tests error handling when sending a request from a content script to an
110 // invalid extension.
111 function sendRequestFromTabError() {
112 chrome.test.listenOnce(
113 chrome.extension.onRequest,
114 function(request, sender, sendResponse) {
115 if (!request.success)
116 chrome.test.fail();
117 }
118 );
119
120 var port = chrome.tabs.connect(testTab.id);
121 port.postMessage({testSendRequestFromTabError: true});
122 port.disconnect();
123 chrome.test.log("testSendRequestFromTabError: send 1st message to tab");
124 },
125
126 // Tests error handling when connecting to an invalid extension from a
127 // content script.
128 function connectFromTabError() {
129 chrome.test.listenOnce(
130 chrome.extension.onRequest,
131 function(request, sender, sendResponse) {
132 if (!request.success)
133 chrome.test.fail();
134 }
135 );
136
137 var port = chrome.tabs.connect(testTab.id);
138 port.postMessage({testConnectFromTabError: true});
139 port.disconnect();
140 chrome.test.log("testConnectFromTabError: sent 1st message to tab");
141 },
142
143 // Tests sending a request to a tab and receiving a response.
144 function sendRequest() {
145 chrome.tabs.sendRequest(testTab.id, {step2: 1}, function(response) {
146 chrome.test.assertTrue(response.success);
147 chrome.test.succeed();
148 });
149 },
150
151 // Tests that we get the disconnect event when the tab disconnect.
152 function disconnect() {
153 var port = chrome.tabs.connect(testTab.id);
154 port.postMessage({testDisconnect: true});
155 port.onDisconnect.addListener(function() {
156 chrome.test.succeed();
157 });
158 },
159
160 // Tests that we get the disconnect event when the tab context closes.
161 function disconnectOnClose() {
162 var port = chrome.tabs.connect(testTab.id);
163 port.postMessage({testDisconnectOnClose: true});
164 port.onDisconnect.addListener(function() {
165 chrome.test.succeed();
166 testTab = null; // the tab is about:blank now.
167 });
168 },
169 ]);
170 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698