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

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

Issue 709933002: Add frameId to MessageSender (extension messaging API) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test: sender.tab.status = 'complete' Created 6 years, 1 month 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 | « chrome/test/data/extensions/api_test/messaging/connect/page.js ('k') | extensions/common/api/runtime.json » ('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 d76997fd34bccc78feb735d7c6a85a1ca5f24eed..446bbdd25fee9d56f51c5cc3b064686500238c91 100644
--- a/chrome/test/data/extensions/api_test/messaging/connect/test.js
+++ b/chrome/test/data/extensions/api_test/messaging/connect/test.js
@@ -70,6 +70,7 @@ chrome.test.getConfig(function(config) {
listenOnce(chrome.runtime.onConnect, function(port) {
chrome.test.assertEq({
tab: testTab,
+ frameId: 0, // Main frame
url: testTab.url,
id: chrome.runtime.id
}, port.sender);
@@ -95,6 +96,7 @@ chrome.test.getConfig(function(config) {
function(request, sender, sendResponse) {
chrome.test.assertEq({
tab: testTab,
+ frameId: 0, // Main frame
url: testTab.url,
id: chrome.runtime.id
}, sender);
@@ -116,6 +118,52 @@ chrome.test.getConfig(function(config) {
chrome.test.log("sendMessageFromTab: sent first message to tab");
},
+ // Tests that a message from a child frame has a correct frameId.
+ function sendMessageFromFrameInTab() {
+ var senders = [];
+ var doneListening = listenForever(
+ chrome.runtime.onMessage,
+ function(request, sender, sendResponse) {
+ // The tab's load status could either be "loading" or "complete",
+ // depending on whether all frames have finished loading. Since we
+ // want this test to be deterministic, set status to "complete".
+ sender.tab.status = 'complete';
+ // Child frames have a positive frameId.
+ senders.push(sender);
+
+ // testSendMessageFromFrame() in page.js adds 2 frames. Wait for
+ // messages from each.
+ if (senders.length == 2) {
+ chrome.webNavigation.getAllFrames({
+ tabId: testTab.id
+ }, function(details) {
+ function sortByFrameId(a, b) {
+ return a.frameId < b.frameId ? 1 : -1;
+ }
+ var expectedSenders = details.filter(function(frame) {
+ return frame.frameId > 0; // Exclude main frame.
+ }).map(function(frame) {
+ return {
+ tab: testTab,
+ frameId: frame.frameId,
+ url: frame.url,
+ id: chrome.runtime.id
+ };
+ }).sort(sortByFrameId);
+ senders.sort(sortByFrameId);
+ chrome.test.assertEq(expectedSenders, senders);
+ doneListening();
+ });
+ }
+ }
+ );
+
+ var port = chrome.tabs.connect(testTab.id);
+ port.postMessage({testSendMessageFromFrame: true});
+ port.disconnect();
+ chrome.test.log("sendMessageFromFrameInTab: send 1st message to tab");
+ },
+
// Tests error handling when sending a request from a content script to an
// invalid extension.
function sendMessageFromTabError() {
« no previous file with comments | « chrome/test/data/extensions/api_test/messaging/connect/page.js ('k') | extensions/common/api/runtime.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698