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

Side by Side Diff: third_party/WebKit/Source/web/tests/WebFrameTest.cpp

Issue 1685003002: Plumb the correct owner document through DocumentInit::m_owner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Trim thingie Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 5503 matching lines...) Expand 10 before | Expand all | Expand 10 after
5514 // WebViewHelper destructor. 5514 // WebViewHelper destructor.
5515 FrameTestHelpers::TestWebViewClient webViewClient; 5515 FrameTestHelpers::TestWebViewClient webViewClient;
5516 TestAccessInitialDocumentWebFrameClient webFrameClient; 5516 TestAccessInitialDocumentWebFrameClient webFrameClient;
5517 FrameTestHelpers::WebViewHelper webViewHelper(this); 5517 FrameTestHelpers::WebViewHelper webViewHelper(this);
5518 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5518 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5519 runPendingTasks(); 5519 runPendingTasks();
5520 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5520 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5521 5521
5522 // Create another window that will try to access it. 5522 // Create another window that will try to access it.
5523 FrameTestHelpers::WebViewHelper newWebViewHelper(this); 5523 FrameTestHelpers::WebViewHelper newWebViewHelper(this);
5524 WebView* newView = newWebViewHelper.initialize(true); 5524 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true);
5525 newView->mainFrame()->setOpener(webViewHelper.webView()->mainFrame());
5526 runPendingTasks(); 5525 runPendingTasks();
5527 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5526 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5528 5527
5529 // Access the initial document to get to the navigator object. 5528 // Access the initial document to get to the navigator object.
5530 newView->mainFrame()->executeScript( 5529 newView->mainFrame()->executeScript(
5531 WebScriptSource("console.log(window.opener.navigator);")); 5530 WebScriptSource("console.log(window.opener.navigator);"));
5532 runPendingTasks(); 5531 runPendingTasks();
5533 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument); 5532 EXPECT_TRUE(webFrameClient.m_didAccessInitialDocument);
5534 } 5533 }
5535 5534
(...skipping 22 matching lines...) Expand all
5558 // WebViewHelper destructor. 5557 // WebViewHelper destructor.
5559 FrameTestHelpers::TestWebViewClient webViewClient; 5558 FrameTestHelpers::TestWebViewClient webViewClient;
5560 TestAccessInitialDocumentWebFrameClient webFrameClient; 5559 TestAccessInitialDocumentWebFrameClient webFrameClient;
5561 FrameTestHelpers::WebViewHelper webViewHelper(this); 5560 FrameTestHelpers::WebViewHelper webViewHelper(this);
5562 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5561 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5563 runPendingTasks(); 5562 runPendingTasks();
5564 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5563 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5565 5564
5566 // Create another window that will try to access it. 5565 // Create another window that will try to access it.
5567 FrameTestHelpers::WebViewHelper newWebViewHelper(this); 5566 FrameTestHelpers::WebViewHelper newWebViewHelper(this);
5568 WebView* newView = newWebViewHelper.initialize(true); 5567 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true);
5569 newView->mainFrame()->setOpener(webViewHelper.webView()->mainFrame());
5570 runPendingTasks(); 5568 runPendingTasks();
5571 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5569 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5572 5570
5573 // Access the initial document by modifying the body. We normally set a 5571 // Access the initial document by modifying the body. We normally set a
5574 // timer to notify the client. 5572 // timer to notify the client.
5575 newView->mainFrame()->executeScript( 5573 newView->mainFrame()->executeScript(
5576 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ; 5574 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")) ;
5577 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5575 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5578 5576
5579 // Make sure that a modal dialog forces us to notify right away. 5577 // Make sure that a modal dialog forces us to notify right away.
(...skipping 18 matching lines...) Expand all
5598 // WebViewHelper destructor. 5596 // WebViewHelper destructor.
5599 FrameTestHelpers::TestWebViewClient webViewClient; 5597 FrameTestHelpers::TestWebViewClient webViewClient;
5600 TestAccessInitialDocumentWebFrameClient webFrameClient; 5598 TestAccessInitialDocumentWebFrameClient webFrameClient;
5601 FrameTestHelpers::WebViewHelper webViewHelper(this); 5599 FrameTestHelpers::WebViewHelper webViewHelper(this);
5602 webViewHelper.initialize(true, &webFrameClient, &webViewClient); 5600 webViewHelper.initialize(true, &webFrameClient, &webViewClient);
5603 runPendingTasks(); 5601 runPendingTasks();
5604 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5602 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5605 5603
5606 // Create another window that will try to access it. 5604 // Create another window that will try to access it.
5607 FrameTestHelpers::WebViewHelper newWebViewHelper(this); 5605 FrameTestHelpers::WebViewHelper newWebViewHelper(this);
5608 WebView* newView = newWebViewHelper.initialize(true); 5606 WebView* newView = newWebViewHelper.initializeWithOpener(webViewHelper.webVi ew()->mainFrame(), true);
5609 newView->mainFrame()->setOpener(webViewHelper.webView()->mainFrame());
5610 runPendingTasks(); 5607 runPendingTasks();
5611 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5608 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5612 5609
5613 // Access the initial document with document.write, which moves us past the 5610 // Access the initial document with document.write, which moves us past the
5614 // initial empty document state of the state machine. We normally set a 5611 // initial empty document state of the state machine. We normally set a
5615 // timer to notify the client. 5612 // timer to notify the client.
5616 newView->mainFrame()->executeScript( 5613 newView->mainFrame()->executeScript(
5617 WebScriptSource("window.opener.document.write('Modified'); window.opener .document.close();")); 5614 WebScriptSource("window.opener.document.write('Modified'); window.opener .document.close();"));
5618 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument); 5615 EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
5619 5616
(...skipping 1588 matching lines...) Expand 10 before | Expand all | Expand 10 after
7208 WebRemoteFrame* remoteFrame = WebRemoteFrame::create(WebTreeScopeType::Docum ent, &remoteFrameClient1); 7205 WebRemoteFrame* remoteFrame = WebRemoteFrame::create(WebTreeScopeType::Docum ent, &remoteFrameClient1);
7209 WebFrame* targetFrame = mainFrame()->firstChild()->nextSibling(); 7206 WebFrame* targetFrame = mainFrame()->firstChild()->nextSibling();
7210 EXPECT_TRUE(targetFrame); 7207 EXPECT_TRUE(targetFrame);
7211 swapAndVerifySubframeConsistency("local->remote", targetFrame, remoteFrame); 7208 swapAndVerifySubframeConsistency("local->remote", targetFrame, remoteFrame);
7212 7209
7213 targetFrame = mainFrame()->firstChild()->nextSibling(); 7210 targetFrame = mainFrame()->firstChild()->nextSibling();
7214 EXPECT_TRUE(targetFrame); 7211 EXPECT_TRUE(targetFrame);
7215 7212
7216 // Create child frames in the target frame before testing the swap. 7213 // Create child frames in the target frame before testing the swap.
7217 FrameTestHelpers::TestWebRemoteFrameClient remoteFrameClient2; 7214 FrameTestHelpers::TestWebRemoteFrameClient remoteFrameClient2;
7218 WebRemoteFrame* childRemoteFrame = remoteFrame->createRemoteChild(WebTreeSco peType::Document, "", "uniqueName0", WebSandboxFlags::None, &remoteFrameClient2) ; 7215 WebRemoteFrame* childRemoteFrame = FrameTestHelpers::createRemoteChild(remot eFrame, &remoteFrameClient2);
7219 7216
7220 FrameTestHelpers::TestWebFrameClient client; 7217 FrameTestHelpers::TestWebFrameClient client;
7221 WebLocalFrame* localFrame = WebLocalFrame::createProvisional(&client, remote Frame, WebSandboxFlags::None, WebFrameOwnerProperties()); 7218 WebLocalFrame* localFrame = WebLocalFrame::createProvisional(&client, remote Frame, WebSandboxFlags::None, WebFrameOwnerProperties());
7222 swapAndVerifySubframeConsistency("remote->local", targetFrame, localFrame); 7219 swapAndVerifySubframeConsistency("remote->local", targetFrame, localFrame);
7223 7220
7224 // FIXME: This almost certainly fires more load events on the iframe element 7221 // FIXME: This almost certainly fires more load events on the iframe element
7225 // than it should. 7222 // than it should.
7226 // Finally, make sure an embedder triggered load in the local frame swapped 7223 // Finally, make sure an embedder triggered load in the local frame swapped
7227 // back in works. 7224 // back in works.
7228 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "subframe-hello.html"); 7225 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "subframe-hello.html");
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
7791 EXPECT_FALSE(client.failed()); 7788 EXPECT_FALSE(client.failed());
7792 } 7789 }
7793 7790
7794 TEST_P(ParameterizedWebFrameTest, DetachRemoteFrame) 7791 TEST_P(ParameterizedWebFrameTest, DetachRemoteFrame)
7795 { 7792 {
7796 FrameTestHelpers::TestWebViewClient viewClient; 7793 FrameTestHelpers::TestWebViewClient viewClient;
7797 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7794 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7798 WebView* view = WebView::create(&viewClient); 7795 WebView* view = WebView::create(&viewClient);
7799 view->setMainFrame(remoteClient.frame()); 7796 view->setMainFrame(remoteClient.frame());
7800 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient; 7797 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient;
7801 WebRemoteFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createRe moteChild(WebTreeScopeType::Document, "", "uniqueName1", WebSandboxFlags::None, &childFrameClient); 7798 WebRemoteFrame* childFrame = FrameTestHelpers::createRemoteChild(view->mainF rame()->toWebRemoteFrame(), &childFrameClient);
7802 childFrame->detach(); 7799 childFrame->detach();
7803 view->close(); 7800 view->close();
7804 childFrame->close(); 7801 childFrame->close();
7805 } 7802 }
7806 7803
7807 class TestConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameCl ient { 7804 class TestConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameCl ient {
7808 public: 7805 public:
7809 virtual void didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine, const WebString& stackTrace) 7806 virtual void didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine, const WebString& stackTrace)
7810 { 7807 {
7811 messages.append(message); 7808 messages.append(message);
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
8434 } 8431 }
8435 8432
8436 TEST_F(WebFrameVisibilityChangeTest, RemoteFrameParentVisibilityChange) 8433 TEST_F(WebFrameVisibilityChangeTest, RemoteFrameParentVisibilityChange)
8437 { 8434 {
8438 swapLocalFrameToRemoteFrame(); 8435 swapLocalFrameToRemoteFrame();
8439 executeScriptOnMainFrame(WebScriptSource("document.querySelector('iframe').p arentElement.style.display = 'none';")); 8436 executeScriptOnMainFrame(WebScriptSource("document.querySelector('iframe').p arentElement.style.display = 'none';"));
8440 EXPECT_FALSE(remoteFrameClient()->isVisible()); 8437 EXPECT_FALSE(remoteFrameClient()->isVisible());
8441 } 8438 }
8442 8439
8443 } // namespace blink 8440 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698