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

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

Issue 1991273003: Fire visibilityChange event on out-of-process iframes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressing comments Created 4 years, 6 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 1577 matching lines...) Expand 10 before | Expand all | Expand 10 after
1588 PlatformGestureEvent gestureEvent(PlatformEvent::EventType::GestureTap, hitP oint, hitPoint, IntSize(0, 0), 0, PlatformEvent::NoModifiers, PlatformGestureSou rceTouchscreen); 1588 PlatformGestureEvent gestureEvent(PlatformEvent::EventType::GestureTap, hitP oint, hitPoint, IntSize(0, 0), 0, PlatformEvent::NoModifiers, PlatformGestureSou rceTouchscreen);
1589 webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().handle GestureEvent(gestureEvent); 1589 webViewHelper.webViewImpl()->mainFrameImpl()->frame()->eventHandler().handle GestureEvent(gestureEvent);
1590 // when pressed, the button changes its own text to "updatedValue" 1590 // when pressed, the button changes its own text to "updatedValue"
1591 EXPECT_EQ(String("updatedValue"), element->innerText()); 1591 EXPECT_EQ(String("updatedValue"), element->innerText());
1592 } 1592 }
1593 1593
1594 TEST_F(WebFrameTest, FrameOwnerPropertiesMargin) 1594 TEST_F(WebFrameTest, FrameOwnerPropertiesMargin)
1595 { 1595 {
1596 FrameTestHelpers::TestWebViewClient viewClient; 1596 FrameTestHelpers::TestWebViewClient viewClient;
1597 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 1597 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
1598 WebView* view = WebView::create(&viewClient); 1598 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
1599 view->settings()->setJavaScriptEnabled(true); 1599 view->settings()->setJavaScriptEnabled(true);
1600 view->setMainFrame(remoteClient.frame()); 1600 view->setMainFrame(remoteClient.frame());
1601 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); 1601 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame();
1602 root->setReplicatedOrigin(SecurityOrigin::createUnique()); 1602 root->setReplicatedOrigin(SecurityOrigin::createUnique());
1603 1603
1604 WebFrameOwnerProperties properties; 1604 WebFrameOwnerProperties properties;
1605 properties.marginWidth = 11; 1605 properties.marginWidth = 11;
1606 properties.marginHeight = 22; 1606 properties.marginHeight = 22;
1607 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root, "frameN ame", nullptr, nullptr, properties); 1607 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root, "frameN ame", nullptr, nullptr, properties);
1608 1608
(...skipping 11 matching lines...) Expand all
1620 EXPECT_NE(nullptr, frameView->horizontalScrollbar()); 1620 EXPECT_NE(nullptr, frameView->horizontalScrollbar());
1621 EXPECT_NE(nullptr, frameView->verticalScrollbar()); 1621 EXPECT_NE(nullptr, frameView->verticalScrollbar());
1622 1622
1623 view->close(); 1623 view->close();
1624 } 1624 }
1625 1625
1626 TEST_F(WebFrameTest, FrameOwnerPropertiesScrolling) 1626 TEST_F(WebFrameTest, FrameOwnerPropertiesScrolling)
1627 { 1627 {
1628 FrameTestHelpers::TestWebViewClient viewClient; 1628 FrameTestHelpers::TestWebViewClient viewClient;
1629 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 1629 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
1630 WebView* view = WebView::create(&viewClient); 1630 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
1631 view->settings()->setJavaScriptEnabled(true); 1631 view->settings()->setJavaScriptEnabled(true);
1632 view->setMainFrame(remoteClient.frame()); 1632 view->setMainFrame(remoteClient.frame());
1633 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); 1633 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame();
1634 root->setReplicatedOrigin(SecurityOrigin::createUnique()); 1634 root->setReplicatedOrigin(SecurityOrigin::createUnique());
1635 1635
1636 WebFrameOwnerProperties properties; 1636 WebFrameOwnerProperties properties;
1637 // Turn off scrolling in the subframe. 1637 // Turn off scrolling in the subframe.
1638 properties.scrollingMode = WebFrameOwnerProperties::ScrollingMode::AlwaysOff ; 1638 properties.scrollingMode = WebFrameOwnerProperties::ScrollingMode::AlwaysOff ;
1639 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root, "frameN ame", nullptr, nullptr, properties); 1639 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root, "frameN ame", nullptr, nullptr, properties);
1640 1640
(...skipping 5442 matching lines...) Expand 10 before | Expand all | Expand 10 after
7083 } 7083 }
7084 7084
7085 // Make sure that an embedder-triggered detach with a remote frame parent 7085 // Make sure that an embedder-triggered detach with a remote frame parent
7086 // doesn't leave behind dangling pointers. 7086 // doesn't leave behind dangling pointers.
7087 TEST_P(ParameterizedWebFrameTest, EmbedderTriggeredDetachWithRemoteMainFrame) 7087 TEST_P(ParameterizedWebFrameTest, EmbedderTriggeredDetachWithRemoteMainFrame)
7088 { 7088 {
7089 // FIXME: Refactor some of this logic into WebViewHelper to make it easier t o 7089 // FIXME: Refactor some of this logic into WebViewHelper to make it easier t o
7090 // write tests with a top-level remote frame. 7090 // write tests with a top-level remote frame.
7091 FrameTestHelpers::TestWebViewClient viewClient; 7091 FrameTestHelpers::TestWebViewClient viewClient;
7092 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7092 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7093 WebView* view = WebView::create(&viewClient); 7093 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
7094 view->setMainFrame(remoteClient.frame()); 7094 view->setMainFrame(remoteClient.frame());
7095 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra me()->toWebRemoteFrame()); 7095 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra me()->toWebRemoteFrame());
7096 7096
7097 // Purposely keep the LocalFrame alive so it's the last thing to be destroye d. 7097 // Purposely keep the LocalFrame alive so it's the last thing to be destroye d.
7098 Persistent<Frame> childCoreFrame = childFrame->toImplBase()->frame(); 7098 Persistent<Frame> childCoreFrame = childFrame->toImplBase()->frame();
7099 view->close(); 7099 view->close();
7100 childCoreFrame.clear(); 7100 childCoreFrame.clear();
7101 } 7101 }
7102 7102
7103 class WebFrameSwapTest : public WebFrameTest { 7103 class WebFrameSwapTest : public WebFrameTest {
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after
7729 TEST_F(WebFrameTest, WindowOpenRemoteClose) 7729 TEST_F(WebFrameTest, WindowOpenRemoteClose)
7730 { 7730 {
7731 FrameTestHelpers::WebViewHelper mainWebView; 7731 FrameTestHelpers::WebViewHelper mainWebView;
7732 mainWebView.initialize(true); 7732 mainWebView.initialize(true);
7733 7733
7734 // Create a remote window that will be closed later in the test. 7734 // Create a remote window that will be closed later in the test.
7735 RemoteWindowCloseClient viewClient; 7735 RemoteWindowCloseClient viewClient;
7736 FrameTestHelpers::TestWebRemoteFrameClient frameClient; 7736 FrameTestHelpers::TestWebRemoteFrameClient frameClient;
7737 WebRemoteFrameImpl* webRemoteFrame = frameClient.frame(); 7737 WebRemoteFrameImpl* webRemoteFrame = frameClient.frame();
7738 7738
7739 WebView* view = WebView::create(&viewClient); 7739 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
7740 view->setMainFrame(webRemoteFrame); 7740 view->setMainFrame(webRemoteFrame);
7741 view->mainFrame()->setOpener(mainWebView.webView()->mainFrame()); 7741 view->mainFrame()->setOpener(mainWebView.webView()->mainFrame());
7742 webRemoteFrame->setReplicatedOrigin(WebSecurityOrigin::createFromString("htt p://127.0.0.1")); 7742 webRemoteFrame->setReplicatedOrigin(WebSecurityOrigin::createFromString("htt p://127.0.0.1"));
7743 7743
7744 LocalFrame* localFrame = toLocalFrame(mainWebView.webView()->mainFrame()->to ImplBase()->frame()); 7744 LocalFrame* localFrame = toLocalFrame(mainWebView.webView()->mainFrame()->to ImplBase()->frame());
7745 RemoteFrame* remoteFrame = webRemoteFrame->frame(); 7745 RemoteFrame* remoteFrame = webRemoteFrame->frame();
7746 7746
7747 // Attempt to close the window, which should fail as it isn't opened 7747 // Attempt to close the window, which should fail as it isn't opened
7748 // by a script. 7748 // by a script.
7749 remoteFrame->domWindow()->close(localFrame->document()); 7749 remoteFrame->domWindow()->close(localFrame->document());
7750 EXPECT_FALSE(viewClient.closed()); 7750 EXPECT_FALSE(viewClient.closed());
7751 7751
7752 // Marking it as opened by a script should now allow it to be closed. 7752 // Marking it as opened by a script should now allow it to be closed.
7753 remoteFrame->page()->setOpenedByDOM(); 7753 remoteFrame->page()->setOpenedByDOM();
7754 remoteFrame->domWindow()->close(localFrame->document()); 7754 remoteFrame->domWindow()->close(localFrame->document());
7755 EXPECT_TRUE(viewClient.closed()); 7755 EXPECT_TRUE(viewClient.closed());
7756 7756
7757 view->close(); 7757 view->close();
7758 } 7758 }
7759 7759
7760 TEST_F(WebFrameTest, NavigateRemoteToLocalWithOpener) 7760 TEST_F(WebFrameTest, NavigateRemoteToLocalWithOpener)
7761 { 7761 {
7762 FrameTestHelpers::WebViewHelper mainWebView; 7762 FrameTestHelpers::WebViewHelper mainWebView;
7763 mainWebView.initialize(true); 7763 mainWebView.initialize(true);
7764 WebFrame* mainFrame = mainWebView.webView()->mainFrame(); 7764 WebFrame* mainFrame = mainWebView.webView()->mainFrame();
7765 7765
7766 // Create a popup with a remote frame and set its opener to the main frame. 7766 // Create a popup with a remote frame and set its opener to the main frame.
7767 FrameTestHelpers::TestWebViewClient popupViewClient; 7767 FrameTestHelpers::TestWebViewClient popupViewClient;
7768 WebView* popupView = WebView::create(&popupViewClient); 7768 WebView* popupView = WebView::create(&popupViewClient, WebPageVisibilityStat eVisible);
7769 FrameTestHelpers::TestWebRemoteFrameClient popupRemoteClient; 7769 FrameTestHelpers::TestWebRemoteFrameClient popupRemoteClient;
7770 WebRemoteFrame* popupRemoteFrame = popupRemoteClient.frame(); 7770 WebRemoteFrame* popupRemoteFrame = popupRemoteClient.frame();
7771 popupView->setMainFrame(popupRemoteFrame); 7771 popupView->setMainFrame(popupRemoteFrame);
7772 popupRemoteFrame->setOpener(mainFrame); 7772 popupRemoteFrame->setOpener(mainFrame);
7773 popupRemoteFrame->setReplicatedOrigin(WebSecurityOrigin::createFromString("h ttp://foo.com")); 7773 popupRemoteFrame->setReplicatedOrigin(WebSecurityOrigin::createFromString("h ttp://foo.com"));
7774 EXPECT_FALSE(mainFrame->getSecurityOrigin().canAccess(popupView->mainFrame() ->getSecurityOrigin())); 7774 EXPECT_FALSE(mainFrame->getSecurityOrigin().canAccess(popupView->mainFrame() ->getSecurityOrigin()));
7775 7775
7776 // Do a remote-to-local swap in the popup. 7776 // Do a remote-to-local swap in the popup.
7777 FrameTestHelpers::TestWebFrameClient popupLocalClient; 7777 FrameTestHelpers::TestWebFrameClient popupLocalClient;
7778 WebLocalFrame* popupLocalFrame = WebLocalFrame::createProvisional(&popupLoca lClient, popupRemoteFrame, WebSandboxFlags::None); 7778 WebLocalFrame* popupLocalFrame = WebLocalFrame::createProvisional(&popupLoca lClient, popupRemoteFrame, WebSandboxFlags::None);
7779 popupRemoteFrame->swap(popupLocalFrame); 7779 popupRemoteFrame->swap(popupLocalFrame);
7780 7780
7781 // The initial document created during the remote-to-local swap should have 7781 // The initial document created during the remote-to-local swap should have
7782 // inherited its opener's SecurityOrigin. 7782 // inherited its opener's SecurityOrigin.
7783 EXPECT_TRUE(mainFrame->getSecurityOrigin().canAccess(popupView->mainFrame()- >getSecurityOrigin())); 7783 EXPECT_TRUE(mainFrame->getSecurityOrigin().canAccess(popupView->mainFrame()- >getSecurityOrigin()));
7784 7784
7785 popupView->close(); 7785 popupView->close();
7786 } 7786 }
7787 7787
7788 TEST_F(WebFrameTest, SwapWithOpenerCycle) 7788 TEST_F(WebFrameTest, SwapWithOpenerCycle)
7789 { 7789 {
7790 // First, create a remote main frame with itself as the opener. 7790 // First, create a remote main frame with itself as the opener.
7791 FrameTestHelpers::TestWebViewClient viewClient; 7791 FrameTestHelpers::TestWebViewClient viewClient;
7792 WebView* view = WebView::create(&viewClient); 7792 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
7793 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7793 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7794 WebRemoteFrame* remoteFrame = remoteClient.frame(); 7794 WebRemoteFrame* remoteFrame = remoteClient.frame();
7795 view->setMainFrame(remoteFrame); 7795 view->setMainFrame(remoteFrame);
7796 remoteFrame->setOpener(remoteFrame); 7796 remoteFrame->setOpener(remoteFrame);
7797 7797
7798 // Now swap in a local frame. It shouldn't crash. 7798 // Now swap in a local frame. It shouldn't crash.
7799 FrameTestHelpers::TestWebFrameClient localClient; 7799 FrameTestHelpers::TestWebFrameClient localClient;
7800 WebLocalFrame* localFrame = WebLocalFrame::createProvisional(&localClient, r emoteFrame, WebSandboxFlags::None); 7800 WebLocalFrame* localFrame = WebLocalFrame::createProvisional(&localClient, r emoteFrame, WebSandboxFlags::None);
7801 remoteFrame->swap(localFrame); 7801 remoteFrame->swap(localFrame);
7802 7802
(...skipping 18 matching lines...) Expand all
7821 WebHistoryCommitType historyCommitType() const { return m_historyCommitType; } 7821 WebHistoryCommitType historyCommitType() const { return m_historyCommitType; }
7822 7822
7823 private: 7823 private:
7824 WebHistoryCommitType m_historyCommitType; 7824 WebHistoryCommitType m_historyCommitType;
7825 }; 7825 };
7826 7826
7827 TEST_P(ParameterizedWebFrameTest, RemoteFrameInitialCommitType) 7827 TEST_P(ParameterizedWebFrameTest, RemoteFrameInitialCommitType)
7828 { 7828 {
7829 FrameTestHelpers::TestWebViewClient viewClient; 7829 FrameTestHelpers::TestWebViewClient viewClient;
7830 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7830 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7831 WebView* view = WebView::create(&viewClient); 7831 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
7832 view->setMainFrame(remoteClient.frame()); 7832 view->setMainFrame(remoteClient.frame());
7833 remoteClient.frame()->setReplicatedOrigin(WebSecurityOrigin::createFromStrin g(WebString::fromUTF8(m_baseURL))); 7833 remoteClient.frame()->setReplicatedOrigin(WebSecurityOrigin::createFromStrin g(WebString::fromUTF8(m_baseURL)));
7834 7834
7835 // If an iframe has a remote main frame, ensure the inital commit is correct ly identified as WebInitialCommitInChildFrame. 7835 // If an iframe has a remote main frame, ensure the inital commit is correct ly identified as WebInitialCommitInChildFrame.
7836 CommitTypeWebFrameClient childFrameClient; 7836 CommitTypeWebFrameClient childFrameClient;
7837 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra me()->toWebRemoteFrame(), "frameName", &childFrameClient); 7837 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra me()->toWebRemoteFrame(), "frameName", &childFrameClient);
7838 registerMockedHttpURLLoad("foo.html"); 7838 registerMockedHttpURLLoad("foo.html");
7839 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "foo.html"); 7839 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "foo.html");
7840 EXPECT_EQ(WebInitialCommitInChildFrame, childFrameClient.historyCommitType() ); 7840 EXPECT_EQ(WebInitialCommitInChildFrame, childFrameClient.historyCommitType() );
7841 view->close(); 7841 view->close();
7842 } 7842 }
7843 7843
7844 class GestureEventTestWebViewClient : public FrameTestHelpers::TestWebViewClient { 7844 class GestureEventTestWebViewClient : public FrameTestHelpers::TestWebViewClient {
7845 public: 7845 public:
7846 GestureEventTestWebViewClient() : m_didHandleGestureEvent(false) { } 7846 GestureEventTestWebViewClient() : m_didHandleGestureEvent(false) { }
7847 void didHandleGestureEvent(const WebGestureEvent& event, bool eventCancelled ) override { m_didHandleGestureEvent = true; } 7847 void didHandleGestureEvent(const WebGestureEvent& event, bool eventCancelled ) override { m_didHandleGestureEvent = true; }
7848 bool didHandleGestureEvent() const { return m_didHandleGestureEvent; } 7848 bool didHandleGestureEvent() const { return m_didHandleGestureEvent; }
7849 7849
7850 private: 7850 private:
7851 bool m_didHandleGestureEvent; 7851 bool m_didHandleGestureEvent;
7852 }; 7852 };
7853 7853
7854 TEST_P(ParameterizedWebFrameTest, FrameWidgetTest) 7854 TEST_P(ParameterizedWebFrameTest, FrameWidgetTest)
7855 { 7855 {
7856 FrameTestHelpers::TestWebViewClient viewClient; 7856 FrameTestHelpers::TestWebViewClient viewClient;
7857 WebView* view = WebView::create(&viewClient); 7857 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
7858 7858
7859 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7859 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7860 view->setMainFrame(remoteClient.frame()); 7860 view->setMainFrame(remoteClient.frame());
7861 7861
7862 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra me()->toWebRemoteFrame()); 7862 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra me()->toWebRemoteFrame());
7863 7863
7864 GestureEventTestWebViewClient childViewClient; 7864 GestureEventTestWebViewClient childViewClient;
7865 WebFrameWidget* widget = WebFrameWidget::create(childViewClient.widgetClient (), childFrame); 7865 WebFrameWidget* widget = WebFrameWidget::create(childViewClient.widgetClient (), childFrame);
7866 7866
7867 view->resize(WebSize(1000, 1000)); 7867 view->resize(WebSize(1000, 1000));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
7917 options.crossOriginRequestPolicy = AllowCrossOriginRequests; 7917 options.crossOriginRequestPolicy = AllowCrossOriginRequests;
7918 DocumentThreadableLoader::loadResourceSynchronously( 7918 DocumentThreadableLoader::loadResourceSynchronously(
7919 *frame->document(), request, client, options, resourceLoaderOptions); 7919 *frame->document(), request, client, options, resourceLoaderOptions);
7920 EXPECT_FALSE(client.failed()); 7920 EXPECT_FALSE(client.failed());
7921 } 7921 }
7922 7922
7923 TEST_P(ParameterizedWebFrameTest, DetachRemoteFrame) 7923 TEST_P(ParameterizedWebFrameTest, DetachRemoteFrame)
7924 { 7924 {
7925 FrameTestHelpers::TestWebViewClient viewClient; 7925 FrameTestHelpers::TestWebViewClient viewClient;
7926 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7926 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7927 WebView* view = WebView::create(&viewClient); 7927 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
7928 view->setMainFrame(remoteClient.frame()); 7928 view->setMainFrame(remoteClient.frame());
7929 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient; 7929 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient;
7930 WebRemoteFrame* childFrame = FrameTestHelpers::createRemoteChild(view->mainF rame()->toWebRemoteFrame(), &childFrameClient); 7930 WebRemoteFrame* childFrame = FrameTestHelpers::createRemoteChild(view->mainF rame()->toWebRemoteFrame(), &childFrameClient);
7931 childFrame->detach(); 7931 childFrame->detach();
7932 view->close(); 7932 view->close();
7933 childFrame->close(); 7933 childFrame->close();
7934 } 7934 }
7935 7935
7936 class TestConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameCl ient { 7936 class TestConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameCl ient {
7937 public: 7937 public:
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
8042 params.screenPosition = WebDeviceEmulationParams::Mobile; 8042 params.screenPosition = WebDeviceEmulationParams::Mobile;
8043 m_webViewHelper.webView()->enableDeviceEmulation(params); 8043 m_webViewHelper.webView()->enableDeviceEmulation(params);
8044 EXPECT_EQ("20x20", dumpSize("pointer")); 8044 EXPECT_EQ("20x20", dumpSize("pointer"));
8045 m_webViewHelper.webView()->disableDeviceEmulation(); 8045 m_webViewHelper.webView()->disableDeviceEmulation();
8046 } 8046 }
8047 8047
8048 TEST_P(ParameterizedWebFrameTest, CreateLocalChildWithPreviousSibling) 8048 TEST_P(ParameterizedWebFrameTest, CreateLocalChildWithPreviousSibling)
8049 { 8049 {
8050 FrameTestHelpers::TestWebViewClient viewClient; 8050 FrameTestHelpers::TestWebViewClient viewClient;
8051 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 8051 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
8052 WebView* view = WebView::create(&viewClient); 8052 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
8053 view->setMainFrame(remoteClient.frame()); 8053 view->setMainFrame(remoteClient.frame());
8054 WebRemoteFrame* parent = view->mainFrame()->toWebRemoteFrame(); 8054 WebRemoteFrame* parent = view->mainFrame()->toWebRemoteFrame();
8055 8055
8056 WebLocalFrame* secondFrame(FrameTestHelpers::createLocalChild(parent, "name2 ")); 8056 WebLocalFrame* secondFrame(FrameTestHelpers::createLocalChild(parent, "name2 "));
8057 WebLocalFrame* fourthFrame(FrameTestHelpers::createLocalChild(parent, "name4 ", nullptr, secondFrame)); 8057 WebLocalFrame* fourthFrame(FrameTestHelpers::createLocalChild(parent, "name4 ", nullptr, secondFrame));
8058 WebLocalFrame* thirdFrame(FrameTestHelpers::createLocalChild(parent, "name3" , nullptr, secondFrame)); 8058 WebLocalFrame* thirdFrame(FrameTestHelpers::createLocalChild(parent, "name3" , nullptr, secondFrame));
8059 WebLocalFrame* firstFrame(FrameTestHelpers::createLocalChild(parent, "name1" )); 8059 WebLocalFrame* firstFrame(FrameTestHelpers::createLocalChild(parent, "name1" ));
8060 8060
8061 EXPECT_EQ(firstFrame, parent->firstChild()); 8061 EXPECT_EQ(firstFrame, parent->firstChild());
8062 EXPECT_EQ(nullptr, firstFrame->previousSibling()); 8062 EXPECT_EQ(nullptr, firstFrame->previousSibling());
(...skipping 14 matching lines...) Expand all
8077 EXPECT_EQ(parent, thirdFrame->parent()); 8077 EXPECT_EQ(parent, thirdFrame->parent());
8078 EXPECT_EQ(parent, fourthFrame->parent()); 8078 EXPECT_EQ(parent, fourthFrame->parent());
8079 8079
8080 view->close(); 8080 view->close();
8081 } 8081 }
8082 8082
8083 TEST_P(ParameterizedWebFrameTest, SendBeaconFromChildWithRemoteMainFrame) 8083 TEST_P(ParameterizedWebFrameTest, SendBeaconFromChildWithRemoteMainFrame)
8084 { 8084 {
8085 FrameTestHelpers::TestWebViewClient viewClient; 8085 FrameTestHelpers::TestWebViewClient viewClient;
8086 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 8086 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
8087 WebView* view = WebView::create(&viewClient); 8087 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
8088 view->settings()->setJavaScriptEnabled(true); 8088 view->settings()->setJavaScriptEnabled(true);
8089 view->setMainFrame(remoteClient.frame()); 8089 view->setMainFrame(remoteClient.frame());
8090 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); 8090 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame();
8091 root->setReplicatedOrigin(SecurityOrigin::createUnique()); 8091 root->setReplicatedOrigin(SecurityOrigin::createUnique());
8092 8092
8093 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root); 8093 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root);
8094 8094
8095 // Finally, make sure an embedder triggered load in the local frame swapped 8095 // Finally, make sure an embedder triggered load in the local frame swapped
8096 // back in works. 8096 // back in works.
8097 registerMockedHttpURLLoad("send_beacon.html"); 8097 registerMockedHttpURLLoad("send_beacon.html");
8098 registerMockedHttpURLLoad("reload_post.html"); // url param to sendBeacon() 8098 registerMockedHttpURLLoad("reload_post.html"); // url param to sendBeacon()
8099 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "send_beacon.html"); 8099 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "send_beacon.html");
8100 8100
8101 view->close(); 8101 view->close();
8102 } 8102 }
8103 8103
8104 TEST_P(ParameterizedWebFrameTest, FirstPartyForCookiesFromChildWithRemoteMainFra me) 8104 TEST_P(ParameterizedWebFrameTest, FirstPartyForCookiesFromChildWithRemoteMainFra me)
8105 { 8105 {
8106 FrameTestHelpers::TestWebViewClient viewClient; 8106 FrameTestHelpers::TestWebViewClient viewClient;
8107 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 8107 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
8108 WebView* view = WebView::create(&viewClient); 8108 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
8109 view->setMainFrame(remoteClient.frame()); 8109 view->setMainFrame(remoteClient.frame());
8110 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); 8110 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame();
8111 root->setReplicatedOrigin(SecurityOrigin::create(toKURL(m_notBaseURL))); 8111 root->setReplicatedOrigin(SecurityOrigin::create(toKURL(m_notBaseURL)));
8112 8112
8113 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root); 8113 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root);
8114 8114
8115 registerMockedHttpURLLoad("foo.html"); 8115 registerMockedHttpURLLoad("foo.html");
8116 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "foo.html"); 8116 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "foo.html");
8117 EXPECT_EQ(WebURL(SecurityOrigin::urlWithUniqueSecurityOrigin()), localFrame- >document().firstPartyForCookies()); 8117 EXPECT_EQ(WebURL(SecurityOrigin::urlWithUniqueSecurityOrigin()), localFrame- >document().firstPartyForCookies());
8118 8118
8119 SchemeRegistry::registerURLSchemeAsFirstPartyWhenTopLevel("http"); 8119 SchemeRegistry::registerURLSchemeAsFirstPartyWhenTopLevel("http");
8120 EXPECT_EQ(WebURL(toKURL(m_notBaseURL)), localFrame->document().firstPartyFor Cookies()); 8120 EXPECT_EQ(WebURL(toKURL(m_notBaseURL)), localFrame->document().firstPartyFor Cookies());
8121 SchemeRegistry::removeURLSchemeAsFirstPartyWhenTopLevel("http"); 8121 SchemeRegistry::removeURLSchemeAsFirstPartyWhenTopLevel("http");
8122 8122
8123 view->close(); 8123 view->close();
8124 } 8124 }
8125 8125
8126 // See https://crbug.com/525285. 8126 // See https://crbug.com/525285.
8127 TEST_P(ParameterizedWebFrameTest, RemoteToLocalSwapOnMainFrameInitializesCoreFra me) 8127 TEST_P(ParameterizedWebFrameTest, RemoteToLocalSwapOnMainFrameInitializesCoreFra me)
8128 { 8128 {
8129 FrameTestHelpers::TestWebViewClient viewClient; 8129 FrameTestHelpers::TestWebViewClient viewClient;
8130 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 8130 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
8131 WebView* view = WebView::create(&viewClient); 8131 WebView* view = WebView::create(&viewClient, WebPageVisibilityStateVisible);
8132 view->setMainFrame(remoteClient.frame()); 8132 view->setMainFrame(remoteClient.frame());
8133 WebRemoteFrame* remoteRoot = view->mainFrame()->toWebRemoteFrame(); 8133 WebRemoteFrame* remoteRoot = view->mainFrame()->toWebRemoteFrame();
8134 remoteRoot->setReplicatedOrigin(SecurityOrigin::createUnique()); 8134 remoteRoot->setReplicatedOrigin(SecurityOrigin::createUnique());
8135 8135
8136 FrameTestHelpers::createLocalChild(remoteRoot); 8136 FrameTestHelpers::createLocalChild(remoteRoot);
8137 8137
8138 // Do a remote-to-local swap of the top frame. 8138 // Do a remote-to-local swap of the top frame.
8139 FrameTestHelpers::TestWebFrameClient localClient; 8139 FrameTestHelpers::TestWebFrameClient localClient;
8140 WebLocalFrame* localRoot = WebLocalFrame::createProvisional(&localClient, re moteRoot, WebSandboxFlags::None); 8140 WebLocalFrame* localRoot = WebLocalFrame::createProvisional(&localClient, re moteRoot, WebSandboxFlags::None);
8141 remoteRoot->swap(localRoot); 8141 remoteRoot->swap(localRoot);
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
8757 ASSERT_FALSE(grandchildFrame->canHaveSecureChild()); 8757 ASSERT_FALSE(grandchildFrame->canHaveSecureChild());
8758 Document* mainDocument = mainFrame->document(); 8758 Document* mainDocument = mainFrame->document();
8759 Document* childDocument = childFrame->document(); 8759 Document* childDocument = childFrame->document();
8760 Document* grandchildDocument = grandchildFrame->document(); 8760 Document* grandchildDocument = grandchildFrame->document();
8761 ASSERT_FALSE(mainDocument->isSecureContext()); 8761 ASSERT_FALSE(mainDocument->isSecureContext());
8762 ASSERT_TRUE(childDocument->isSecureContext()); 8762 ASSERT_TRUE(childDocument->isSecureContext());
8763 ASSERT_FALSE(grandchildDocument->isSecureContext()); 8763 ASSERT_FALSE(grandchildDocument->isSecureContext());
8764 } 8764 }
8765 8765
8766 } // namespace blink 8766 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698