| 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..29a870e65f0d226d010700fbb73708ed50350405 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,51 @@ 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 senderFrameUrl = {};
|
| + listenForever(
|
| + chrome.runtime.onMessage,
|
| + function(request, sender, sendResponse) {
|
| + // Child frames have a positive frameId.
|
| + chrome.test.assertTrue(sender.frameId >= 1,
|
| + 'frameId must be positive, but it is ' + sender.frameId);
|
| + chrome.test.assertFalse(sender.frameId in messageSenders,
|
| + 'frameId ' + sender.frameId + ' was already seen before!');
|
| + senderFrameUrl[sender.frameId] = request.frameUrl;
|
| + delete sender.frameId;
|
| + chrome.test.assertEq({
|
| + tab: testTab,
|
| + url: request.frameUrl,
|
| + id: chrome.runtime.id
|
| + }, sender);
|
| +
|
| + if (Object.keys(senderFrameUrl).length == 2) {
|
| + // Now test whether the frameId that we got back makes sense...
|
| + chrome.webNavigation.getAllFrames({
|
| + tabId: testTab.id
|
| + }, function(details) {
|
| + var framesFound = 0;
|
| + details.forEach(function(frame) {
|
| + var url = senderFrameUrl[frame.frameId];
|
| + if (url) {
|
| + chrome.test.assertEq(frame.url, url);
|
| + ++framesFound;
|
| + }
|
| + });
|
| + chrome.test.assertEq(framesFound, 2);
|
| + 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() {
|
|
|