| Index: chrome/test/data/extensions/api_test/messaging/connect/test.js
|
| diff --git a/chrome/test/data/extensions/api_test/messaging/connect/test.js b/chrome/test/data/extensions/api_test/messaging/connect/test.js
|
| index 0723021c724a61d3df31b315a255dc6f9249e4d8..729e6e0386ec744826bd10ea9dfda1e3e404e5ed 100644
|
| --- a/chrome/test/data/extensions/api_test/messaging/connect/test.js
|
| +++ b/chrome/test/data/extensions/api_test/messaging/connect/test.js
|
| @@ -2,6 +2,10 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +// Tests for browser_tests --gtest_filter=ExtensionApiTest.Messaging
|
| +
|
| +var assertEq = chrome.test.assertEq;
|
| +var assertTrue = chrome.test.assertTrue;
|
| var listenOnce = chrome.test.listenOnce;
|
| var listenForever = chrome.test.listenForever;
|
|
|
| @@ -60,7 +64,7 @@ chrome.test.getConfig(function(config) {
|
| var port = chrome.tabs.connect(testTab.id, {name: portName});
|
| port.postMessage({testPortName: true});
|
| listenOnce(port.onMessage, function(msg) {
|
| - chrome.test.assertEq(msg.portName, portName);
|
| + assertEq(msg.portName, portName);
|
| port.disconnect();
|
| });
|
| },
|
| @@ -68,14 +72,14 @@ chrome.test.getConfig(function(config) {
|
| // Tests that postMessage from the tab and its response works.
|
| function postMessageFromTab() {
|
| listenOnce(chrome.runtime.onConnect, function(port) {
|
| - chrome.test.assertEq({
|
| + assertEq({
|
| tab: testTab,
|
| frameId: 0, // Main frame
|
| url: testTab.url,
|
| - id: chrome.runtime.id
|
| + id: chrome.runtime.id
|
| }, port.sender);
|
| listenOnce(port.onMessage, function(msg) {
|
| - chrome.test.assertTrue(msg.testPostMessageFromTab);
|
| + assertTrue(msg.testPostMessageFromTab);
|
| port.postMessage({success: true, portName: port.name});
|
| chrome.test.log("postMessageFromTab: got message from tab");
|
| });
|
| @@ -94,11 +98,11 @@ chrome.test.getConfig(function(config) {
|
| var doneListening = listenForever(
|
| chrome.runtime.onMessage,
|
| function(request, sender, sendResponse) {
|
| - chrome.test.assertEq({
|
| + assertEq({
|
| tab: testTab,
|
| frameId: 0, // Main frame
|
| url: testTab.url,
|
| - id: chrome.runtime.id
|
| + id: chrome.runtime.id
|
| }, sender);
|
| if (request.step == 1) {
|
| // Step 1: Page should send another request for step 2.
|
| @@ -106,7 +110,7 @@ chrome.test.getConfig(function(config) {
|
| sendResponse({nextStep: true});
|
| } else {
|
| // Step 2.
|
| - chrome.test.assertEq(request.step, 2);
|
| + assertEq(2, request.step);
|
| sendResponse();
|
| doneListening();
|
| }
|
| @@ -151,7 +155,7 @@ chrome.test.getConfig(function(config) {
|
| };
|
| }).sort(sortByFrameId);
|
| senders.sort(sortByFrameId);
|
| - chrome.test.assertEq(expectedSenders, senders);
|
| + assertEq(expectedSenders, senders);
|
| doneListening();
|
| });
|
| }
|
| @@ -183,7 +187,7 @@ chrome.test.getConfig(function(config) {
|
| var frames = details.filter(function(frame) {
|
| return /\?testSendMessageFromFrame1$/.test(frame.url);
|
| });
|
| - chrome.test.assertEq(1, frames.length);
|
| + assertEq(1, frames.length);
|
| connectToTabWithFrameId(frames[0].frameId, ['from_1']);
|
| });
|
| },
|
| @@ -233,7 +237,7 @@ chrome.test.getConfig(function(config) {
|
| // Tests sending a request to a tab and receiving a response.
|
| function sendMessage() {
|
| chrome.tabs.sendMessage(testTab.id, {step2: 1}, function(response) {
|
| - chrome.test.assertTrue(response.success);
|
| + assertTrue(response.success);
|
| chrome.test.succeed();
|
| });
|
| },
|
| @@ -277,7 +281,7 @@ chrome.test.getConfig(function(config) {
|
| } catch(e) {
|
| error = e;
|
| }
|
| - chrome.test.assertTrue(error != undefined);
|
| + assertTrue(error != undefined);
|
|
|
| error = undefined;
|
| try {
|
| @@ -285,7 +289,7 @@ chrome.test.getConfig(function(config) {
|
| } catch(e) {
|
| error = e;
|
| }
|
| - chrome.test.assertTrue(error != undefined);
|
| + assertTrue(error != undefined);
|
|
|
| chrome.test.succeed();
|
| },
|
| @@ -317,12 +321,12 @@ chrome.test.getConfig(function(config) {
|
| document.body.appendChild(iframe);
|
|
|
| var stopFailing = failWhileListening(chrome.runtime.onMessage);
|
| - chrome.test.listenOnce(
|
| + listenOnce(
|
| iframe.contentWindow.chrome.runtime.onMessage,
|
| function(msg, sender) {
|
| - chrome.test.assertEq('ping', msg);
|
| - chrome.test.assertEq(chrome.runtime.id, sender.id);
|
| - chrome.test.assertEq(location.href, sender.url);
|
| + assertEq('ping', msg);
|
| + assertEq(chrome.runtime.id, sender.id);
|
| + assertEq(location.href, sender.url);
|
| setTimeout(function() {
|
| stopFailing();
|
| chrome.test.succeed();
|
| @@ -332,6 +336,22 @@ chrome.test.getConfig(function(config) {
|
|
|
| chrome.runtime.sendMessage('ping');
|
| },
|
| +
|
| + // Tests that destroying a port clears its onMessage and onDisconnect
|
| + // listeners.
|
| + function disconnectingPortRemovesEventListeners() {
|
| + var port = chrome.runtime.connect(chrome.runtime.id);
|
| + assertTrue(!port.onMessage.hasListeners() &&
|
| + !port.onDisconnect.hasListeners());
|
| + port.onMessage.addListener(function() {});
|
| + port.onDisconnect.addListener(function() {});
|
| + assertTrue(port.onMessage.hasListeners() &&
|
| + port.onDisconnect.hasListeners());
|
| + port.disconnect();
|
| + assertTrue(!port.onMessage.hasListeners() &&
|
| + !port.onDisconnect.hasListeners());
|
| + chrome.test.succeed();
|
| + }
|
| ]);
|
| });
|
|
|
| @@ -349,7 +369,7 @@ function connectToTabWithFrameId(frameId, expectedMessages) {
|
| messages.push(message);
|
| isDone = messages.length == expectedMessages.length;
|
| if (isDone) {
|
| - chrome.test.assertEq(expectedMessages.sort(), messages.sort());
|
| + assertEq(expectedMessages.sort(), messages.sort());
|
| chrome.test.succeed();
|
| }
|
| });
|
|
|