| 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() {
|
|
|