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

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

Issue 1135123002: Clear the onMessage and onDisconnect listeners when their Extension Port is destroyed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | extensions/renderer/resources/port.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
}
});
« no previous file with comments | « no previous file | extensions/renderer/resources/port.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698