OLD | NEW |
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 1590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1601 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; | 1601 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; |
1602 WebView* view = WebView::create(&viewClient); | 1602 WebView* view = WebView::create(&viewClient); |
1603 view->settings()->setJavaScriptEnabled(true); | 1603 view->settings()->setJavaScriptEnabled(true); |
1604 view->setMainFrame(remoteClient.frame()); | 1604 view->setMainFrame(remoteClient.frame()); |
1605 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); | 1605 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); |
1606 root->setReplicatedOrigin(SecurityOrigin::createUnique()); | 1606 root->setReplicatedOrigin(SecurityOrigin::createUnique()); |
1607 | 1607 |
1608 WebFrameOwnerProperties properties; | 1608 WebFrameOwnerProperties properties; |
1609 properties.marginWidth = 11; | 1609 properties.marginWidth = 11; |
1610 properties.marginHeight = 22; | 1610 properties.marginHeight = 22; |
1611 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root, "frameN
ame", nullptr, nullptr, properties); | 1611 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root, "frameN
ame", nullptr, nullptr, nullptr, properties); |
1612 | 1612 |
1613 registerMockedHttpURLLoad("frame_owner_properties.html"); | 1613 registerMockedHttpURLLoad("frame_owner_properties.html"); |
1614 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "frame_owner_properties.
html"); | 1614 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "frame_owner_properties.
html"); |
1615 | 1615 |
1616 // Check if the LocalFrame has seen the marginwidth and marginheight | 1616 // Check if the LocalFrame has seen the marginwidth and marginheight |
1617 // properties. | 1617 // properties. |
1618 Document* childDocument = toWebLocalFrameImpl(localFrame)->frame()->document
(); | 1618 Document* childDocument = toWebLocalFrameImpl(localFrame)->frame()->document
(); |
1619 EXPECT_EQ(11, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNa
mes::marginwidthAttr)); | 1619 EXPECT_EQ(11, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNa
mes::marginwidthAttr)); |
1620 EXPECT_EQ(22, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNa
mes::marginheightAttr)); | 1620 EXPECT_EQ(22, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNa
mes::marginheightAttr)); |
1621 | 1621 |
(...skipping 11 matching lines...) Expand all Loading... |
1633 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; | 1633 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; |
1634 WebView* view = WebView::create(&viewClient); | 1634 WebView* view = WebView::create(&viewClient); |
1635 view->settings()->setJavaScriptEnabled(true); | 1635 view->settings()->setJavaScriptEnabled(true); |
1636 view->setMainFrame(remoteClient.frame()); | 1636 view->setMainFrame(remoteClient.frame()); |
1637 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); | 1637 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); |
1638 root->setReplicatedOrigin(SecurityOrigin::createUnique()); | 1638 root->setReplicatedOrigin(SecurityOrigin::createUnique()); |
1639 | 1639 |
1640 WebFrameOwnerProperties properties; | 1640 WebFrameOwnerProperties properties; |
1641 // Turn off scrolling in the subframe. | 1641 // Turn off scrolling in the subframe. |
1642 properties.scrollingMode = WebFrameOwnerProperties::ScrollingMode::AlwaysOff
; | 1642 properties.scrollingMode = WebFrameOwnerProperties::ScrollingMode::AlwaysOff
; |
1643 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root, "frameN
ame", nullptr, nullptr, properties); | 1643 WebLocalFrame* localFrame = FrameTestHelpers::createLocalChild(root, "frameN
ame", nullptr, nullptr, nullptr, properties); |
1644 | 1644 |
1645 registerMockedHttpURLLoad("frame_owner_properties.html"); | 1645 registerMockedHttpURLLoad("frame_owner_properties.html"); |
1646 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "frame_owner_properties.
html"); | 1646 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "frame_owner_properties.
html"); |
1647 | 1647 |
1648 Document* childDocument = toWebLocalFrameImpl(localFrame)->frame()->document
(); | 1648 Document* childDocument = toWebLocalFrameImpl(localFrame)->frame()->document
(); |
1649 EXPECT_EQ(0, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNam
es::marginwidthAttr)); | 1649 EXPECT_EQ(0, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNam
es::marginwidthAttr)); |
1650 EXPECT_EQ(0, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNam
es::marginheightAttr)); | 1650 EXPECT_EQ(0, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNam
es::marginheightAttr)); |
1651 | 1651 |
1652 FrameView* frameView = static_cast<WebLocalFrameImpl*>(localFrame)->frameVie
w(); | 1652 FrameView* frameView = static_cast<WebLocalFrameImpl*>(localFrame)->frameVie
w(); |
1653 EXPECT_EQ(nullptr, frameView->horizontalScrollbar()); | 1653 EXPECT_EQ(nullptr, frameView->horizontalScrollbar()); |
(...skipping 5473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7127 FrameTestHelpers::WebViewHelper m_webViewHelper; | 7127 FrameTestHelpers::WebViewHelper m_webViewHelper; |
7128 }; | 7128 }; |
7129 | 7129 |
7130 TEST_F(WebFrameSwapTest, SwapMainFrame) | 7130 TEST_F(WebFrameSwapTest, SwapMainFrame) |
7131 { | 7131 { |
7132 WebRemoteFrame* remoteFrame = WebRemoteFrame::create(WebTreeScopeType::Docum
ent, nullptr); | 7132 WebRemoteFrame* remoteFrame = WebRemoteFrame::create(WebTreeScopeType::Docum
ent, nullptr); |
7133 mainFrame()->swap(remoteFrame); | 7133 mainFrame()->swap(remoteFrame); |
7134 | 7134 |
7135 FrameTestHelpers::TestWebFrameClient client; | 7135 FrameTestHelpers::TestWebFrameClient client; |
7136 WebLocalFrame* localFrame = WebLocalFrame::createProvisional(&client, remote
Frame, WebSandboxFlags::None); | 7136 WebLocalFrame* localFrame = WebLocalFrame::createProvisional(&client, remote
Frame, WebSandboxFlags::None); |
| 7137 FrameTestHelpers::TestWebWidgetClient webWidgetClient; |
| 7138 WebFrameWidget::create(&webWidgetClient, localFrame); |
7137 remoteFrame->swap(localFrame); | 7139 remoteFrame->swap(localFrame); |
7138 | 7140 |
7139 // Finally, make sure an embedder triggered load in the local frame swapped | 7141 // Finally, make sure an embedder triggered load in the local frame swapped |
7140 // back in works. | 7142 // back in works. |
7141 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "subframe-hello.html"); | 7143 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "subframe-hello.html"); |
7142 | 7144 |
7143 std::string content = WebFrameContentDumper::dumpWebViewAsText(webView(), 10
24).utf8(); | 7145 std::string content = WebFrameContentDumper::dumpWebViewAsText(webView(), 10
24).utf8(); |
7144 EXPECT_EQ("hello", content); | 7146 EXPECT_EQ("hello", content); |
7145 | 7147 |
7146 // Manually reset to break WebViewHelper's dependency on the stack allocated | 7148 // Manually reset to break WebViewHelper's dependency on the stack allocated |
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7840 | 7842 |
7841 // If an iframe has a remote main frame, ensure the inital commit is correct
ly identified as WebInitialCommitInChildFrame. | 7843 // If an iframe has a remote main frame, ensure the inital commit is correct
ly identified as WebInitialCommitInChildFrame. |
7842 CommitTypeWebFrameClient childFrameClient; | 7844 CommitTypeWebFrameClient childFrameClient; |
7843 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra
me()->toWebRemoteFrame(), "frameName", &childFrameClient); | 7845 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra
me()->toWebRemoteFrame(), "frameName", &childFrameClient); |
7844 registerMockedHttpURLLoad("foo.html"); | 7846 registerMockedHttpURLLoad("foo.html"); |
7845 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "foo.html"); | 7847 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "foo.html"); |
7846 EXPECT_EQ(WebInitialCommitInChildFrame, childFrameClient.historyCommitType()
); | 7848 EXPECT_EQ(WebInitialCommitInChildFrame, childFrameClient.historyCommitType()
); |
7847 view->close(); | 7849 view->close(); |
7848 } | 7850 } |
7849 | 7851 |
7850 class GestureEventTestWebViewClient : public FrameTestHelpers::TestWebViewClient
{ | 7852 class GestureEventTestWebWidgetClient : public FrameTestHelpers::TestWebWidgetCl
ient { |
7851 public: | 7853 public: |
7852 GestureEventTestWebViewClient() : m_didHandleGestureEvent(false) { } | 7854 GestureEventTestWebWidgetClient() |
| 7855 : m_didHandleGestureEvent(false) |
| 7856 { |
| 7857 } |
7853 void didHandleGestureEvent(const WebGestureEvent& event, bool eventCancelled
) override { m_didHandleGestureEvent = true; } | 7858 void didHandleGestureEvent(const WebGestureEvent& event, bool eventCancelled
) override { m_didHandleGestureEvent = true; } |
7854 bool didHandleGestureEvent() const { return m_didHandleGestureEvent; } | 7859 bool didHandleGestureEvent() const { return m_didHandleGestureEvent; } |
7855 | 7860 |
7856 private: | 7861 private: |
7857 bool m_didHandleGestureEvent; | 7862 bool m_didHandleGestureEvent; |
7858 }; | 7863 }; |
7859 | 7864 |
7860 TEST_P(ParameterizedWebFrameTest, FrameWidgetTest) | 7865 TEST_P(ParameterizedWebFrameTest, FrameWidgetTest) |
7861 { | 7866 { |
7862 FrameTestHelpers::TestWebViewClient viewClient; | 7867 FrameTestHelpers::TestWebViewClient viewClient; |
7863 WebView* view = WebView::create(&viewClient); | 7868 WebView* view = WebView::create(&viewClient); |
7864 | 7869 |
7865 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; | 7870 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; |
7866 view->setMainFrame(remoteClient.frame()); | 7871 view->setMainFrame(remoteClient.frame()); |
7867 | 7872 |
7868 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra
me()->toWebRemoteFrame()); | 7873 GestureEventTestWebWidgetClient childWidgetClient; |
7869 | 7874 WebLocalFrame* childFrame = FrameTestHelpers::createLocalChild(view->mainFra
me()->toWebRemoteFrame(), WebString(), nullptr, &childWidgetClient); |
7870 GestureEventTestWebViewClient childViewClient; | |
7871 WebFrameWidget* widget = WebFrameWidget::create(childViewClient.widgetClient
(), childFrame); | |
7872 | 7875 |
7873 view->resize(WebSize(1000, 1000)); | 7876 view->resize(WebSize(1000, 1000)); |
7874 | 7877 |
7875 widget->handleInputEvent(fatTap(20, 20)); | 7878 childFrame->frameWidget()->handleInputEvent(fatTap(20, 20)); |
7876 EXPECT_TRUE(childViewClient.didHandleGestureEvent()); | 7879 EXPECT_TRUE(childWidgetClient.didHandleGestureEvent()); |
7877 | 7880 |
7878 widget->close(); | |
7879 view->close(); | 7881 view->close(); |
7880 } | 7882 } |
7881 | 7883 |
7882 class MockDocumentThreadableLoaderClient : public DocumentThreadableLoaderClient
{ | 7884 class MockDocumentThreadableLoaderClient : public DocumentThreadableLoaderClient
{ |
7883 public: | 7885 public: |
7884 MockDocumentThreadableLoaderClient() : m_failed(false) { } | 7886 MockDocumentThreadableLoaderClient() : m_failed(false) { } |
7885 void didFail(const ResourceError&) override { m_failed = true;} | 7887 void didFail(const ResourceError&) override { m_failed = true;} |
7886 | 7888 |
7887 void reset() { m_failed = false; } | 7889 void reset() { m_failed = false; } |
7888 bool failed() { return m_failed; } | 7890 bool failed() { return m_failed; } |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8053 | 8055 |
8054 TEST_P(ParameterizedWebFrameTest, CreateLocalChildWithPreviousSibling) | 8056 TEST_P(ParameterizedWebFrameTest, CreateLocalChildWithPreviousSibling) |
8055 { | 8057 { |
8056 FrameTestHelpers::TestWebViewClient viewClient; | 8058 FrameTestHelpers::TestWebViewClient viewClient; |
8057 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; | 8059 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; |
8058 WebView* view = WebView::create(&viewClient); | 8060 WebView* view = WebView::create(&viewClient); |
8059 view->setMainFrame(remoteClient.frame()); | 8061 view->setMainFrame(remoteClient.frame()); |
8060 WebRemoteFrame* parent = view->mainFrame()->toWebRemoteFrame(); | 8062 WebRemoteFrame* parent = view->mainFrame()->toWebRemoteFrame(); |
8061 | 8063 |
8062 WebLocalFrame* secondFrame(FrameTestHelpers::createLocalChild(parent, "name2
")); | 8064 WebLocalFrame* secondFrame(FrameTestHelpers::createLocalChild(parent, "name2
")); |
8063 WebLocalFrame* fourthFrame(FrameTestHelpers::createLocalChild(parent, "name4
", nullptr, secondFrame)); | 8065 WebLocalFrame* fourthFrame(FrameTestHelpers::createLocalChild(parent, "name4
", nullptr, nullptr, secondFrame)); |
8064 WebLocalFrame* thirdFrame(FrameTestHelpers::createLocalChild(parent, "name3"
, nullptr, secondFrame)); | 8066 WebLocalFrame* thirdFrame(FrameTestHelpers::createLocalChild(parent, "name3"
, nullptr, nullptr, secondFrame)); |
8065 WebLocalFrame* firstFrame(FrameTestHelpers::createLocalChild(parent, "name1"
)); | 8067 WebLocalFrame* firstFrame(FrameTestHelpers::createLocalChild(parent, "name1"
)); |
8066 | 8068 |
8067 EXPECT_EQ(firstFrame, parent->firstChild()); | 8069 EXPECT_EQ(firstFrame, parent->firstChild()); |
8068 EXPECT_EQ(nullptr, firstFrame->previousSibling()); | 8070 EXPECT_EQ(nullptr, firstFrame->previousSibling()); |
8069 EXPECT_EQ(secondFrame, firstFrame->nextSibling()); | 8071 EXPECT_EQ(secondFrame, firstFrame->nextSibling()); |
8070 | 8072 |
8071 EXPECT_EQ(firstFrame, secondFrame->previousSibling()); | 8073 EXPECT_EQ(firstFrame, secondFrame->previousSibling()); |
8072 EXPECT_EQ(thirdFrame, secondFrame->nextSibling()); | 8074 EXPECT_EQ(thirdFrame, secondFrame->nextSibling()); |
8073 | 8075 |
8074 EXPECT_EQ(secondFrame, thirdFrame->previousSibling()); | 8076 EXPECT_EQ(secondFrame, thirdFrame->previousSibling()); |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8812 request.setURL(toKURL("javascript:location='" + redirectURL + "'")); | 8814 request.setURL(toKURL("javascript:location='" + redirectURL + "'")); |
8813 helper.webViewImpl()->mainFrame()->toWebLocalFrame()->loadRequest(request); | 8815 helper.webViewImpl()->mainFrame()->toWebLocalFrame()->loadRequest(request); |
8814 | 8816 |
8815 // Normally, the result of the JS url replaces the existing contents on the | 8817 // Normally, the result of the JS url replaces the existing contents on the |
8816 // Document. However, if the JS triggers a navigation, the contents should | 8818 // Document. However, if the JS triggers a navigation, the contents should |
8817 // not be replaced. | 8819 // not be replaced. |
8818 EXPECT_EQ("", toLocalFrame(helper.webViewImpl()->page()->mainFrame())->docum
ent()->documentElement()->innerText()); | 8820 EXPECT_EQ("", toLocalFrame(helper.webViewImpl()->page()->mainFrame())->docum
ent()->documentElement()->innerText()); |
8819 } | 8821 } |
8820 | 8822 |
8821 } // namespace blink | 8823 } // namespace blink |
OLD | NEW |