| Index: content/browser/site_per_process_browsertest.cc
|
| diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
|
| index dc1fb4a1464d00670081ce02e187e367fc835882..08f83a797a32a34b0eac565ed6b60a7d9fa1e725 100644
|
| --- a/content/browser/site_per_process_browsertest.cc
|
| +++ b/content/browser/site_per_process_browsertest.cc
|
| @@ -2541,17 +2541,36 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest,
|
| PostMessageAndWaitForReply(root->child_at(0), "postToPopup('subframe-msg')",
|
| "\"done-subframe1\"");
|
|
|
| - // TODO(alexmos): Once we propagate subframe opener information to new
|
| - // RenderViews, try sending a postMessage from the popup to window.opener and
|
| - // ensure that it reaches subframe1.
|
| -
|
| - // Verify the total number of received messages for each subframe. First
|
| - // subframe and popup should have one message each, and other frames
|
| - // shouldn't have received any messages.
|
| + // Send a postMessage from the popup to window.opener and ensure that it
|
| + // reaches subframe1. This verifies that the subframe opener information
|
| + // propagated to the popup's RenderFrame. Wait for subframe1 to send a reply
|
| + // message to the popup.
|
| + EXPECT_TRUE(ExecuteScript(popup->web_contents(), "window.name = 'popup';"));
|
| + PostMessageAndWaitForReply(popup_root, "postToOpener('subframe-msg', '*')",
|
| + "\"done-popup\"");
|
| +
|
| + // Second a postMessage from popup2 to window.opener.opener, which should
|
| + // resolve to subframe1. This tests opener chains of length greater than 1.
|
| + // As before, subframe1 will send a reply to popup2.
|
| + FrameTreeNode* popup2_root =
|
| + static_cast<WebContentsImpl*>(popup2->web_contents())
|
| + ->GetFrameTree()
|
| + ->root();
|
| + EXPECT_TRUE(ExecuteScript(popup2->web_contents(), "window.name = 'popup2';"));
|
| + PostMessageAndWaitForReply(popup2_root,
|
| + "postToOpenerOfOpener('subframe-msg', '*')",
|
| + "\"done-popup2\"");
|
| +
|
| + // Verify the total number of received messages for each subframe:
|
| + // - 3 for first subframe (two from first popup, one from second popup)
|
| + // - 2 for popup (both from first subframe)
|
| + // - 1 for popup2 (reply from first subframe)
|
| + // - 0 for other frames
|
| EXPECT_EQ(0, GetReceivedMessages(root));
|
| - EXPECT_EQ(1, GetReceivedMessages(root->child_at(0)));
|
| + EXPECT_EQ(3, GetReceivedMessages(root->child_at(0)));
|
| EXPECT_EQ(0, GetReceivedMessages(root->child_at(1)));
|
| - EXPECT_EQ(1, GetReceivedMessages(popup_root));
|
| + EXPECT_EQ(2, GetReceivedMessages(popup_root));
|
| + EXPECT_EQ(1, GetReceivedMessages(popup2_root));
|
| }
|
|
|
| // Check that parent.frames[num] references correct sibling frames when the
|
|
|