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

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

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

Powered by Google App Engine
This is Rietveld 408576698