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

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

Issue 1635873003: Replicating WebFrame::uniqueName across renderers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dump-render-tree3
Patch Set: Removed unnecessary crbug comment. 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 1563 matching lines...) Expand 10 before | Expand all | Expand 10 after
1574 WebView* view = WebView::create(&viewClient); 1574 WebView* view = WebView::create(&viewClient);
1575 view->settings()->setJavaScriptEnabled(true); 1575 view->settings()->setJavaScriptEnabled(true);
1576 view->setMainFrame(remoteClient.frame()); 1576 view->setMainFrame(remoteClient.frame());
1577 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); 1577 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame();
1578 root->setReplicatedOrigin(SecurityOrigin::createUnique()); 1578 root->setReplicatedOrigin(SecurityOrigin::createUnique());
1579 1579
1580 WebFrameOwnerProperties properties; 1580 WebFrameOwnerProperties properties;
1581 properties.marginWidth = 11; 1581 properties.marginWidth = 11;
1582 properties.marginHeight = 22; 1582 properties.marginHeight = 22;
1583 FrameTestHelpers::TestWebFrameClient localFrameClient; 1583 FrameTestHelpers::TestWebFrameClient localFrameClient;
1584 WebLocalFrame* localFrame = root->createLocalChild(WebTreeScopeType::Documen t, "", WebSandboxFlags::None, &localFrameClient, nullptr, properties); 1584 WebLocalFrame* localFrame = root->createLocalChild(WebTreeScopeType::Documen t, "", "", WebSandboxFlags::None, &localFrameClient, nullptr, properties);
1585 1585
1586 registerMockedHttpURLLoad("frame_owner_properties.html"); 1586 registerMockedHttpURLLoad("frame_owner_properties.html");
1587 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "frame_owner_properties. html"); 1587 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "frame_owner_properties. html");
1588 1588
1589 // Check if the LocalFrame has seen the marginwidth and marginheight 1589 // Check if the LocalFrame has seen the marginwidth and marginheight
1590 // properties. 1590 // properties.
1591 Document* childDocument = toWebLocalFrameImpl(localFrame)->frame()->document (); 1591 Document* childDocument = toWebLocalFrameImpl(localFrame)->frame()->document ();
1592 EXPECT_EQ(11, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNa mes::marginwidthAttr)); 1592 EXPECT_EQ(11, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNa mes::marginwidthAttr));
1593 EXPECT_EQ(22, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNa mes::marginheightAttr)); 1593 EXPECT_EQ(22, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNa mes::marginheightAttr));
1594 1594
(...skipping 12 matching lines...) Expand all
1607 WebView* view = WebView::create(&viewClient); 1607 WebView* view = WebView::create(&viewClient);
1608 view->settings()->setJavaScriptEnabled(true); 1608 view->settings()->setJavaScriptEnabled(true);
1609 view->setMainFrame(remoteClient.frame()); 1609 view->setMainFrame(remoteClient.frame());
1610 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); 1610 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame();
1611 root->setReplicatedOrigin(SecurityOrigin::createUnique()); 1611 root->setReplicatedOrigin(SecurityOrigin::createUnique());
1612 1612
1613 WebFrameOwnerProperties properties; 1613 WebFrameOwnerProperties properties;
1614 // Turn off scrolling in the subframe. 1614 // Turn off scrolling in the subframe.
1615 properties.scrollingMode = WebFrameOwnerProperties::ScrollingMode::AlwaysOff ; 1615 properties.scrollingMode = WebFrameOwnerProperties::ScrollingMode::AlwaysOff ;
1616 FrameTestHelpers::TestWebFrameClient localFrameClient; 1616 FrameTestHelpers::TestWebFrameClient localFrameClient;
1617 WebLocalFrame* localFrame = root->createLocalChild(WebTreeScopeType::Documen t, "", WebSandboxFlags::None, &localFrameClient, nullptr, properties); 1617 WebLocalFrame* localFrame = root->createLocalChild(WebTreeScopeType::Documen t, "", "", WebSandboxFlags::None, &localFrameClient, nullptr, properties);
1618 1618
1619 registerMockedHttpURLLoad("frame_owner_properties.html"); 1619 registerMockedHttpURLLoad("frame_owner_properties.html");
1620 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "frame_owner_properties. html"); 1620 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "frame_owner_properties. html");
1621 1621
1622 Document* childDocument = toWebLocalFrameImpl(localFrame)->frame()->document (); 1622 Document* childDocument = toWebLocalFrameImpl(localFrame)->frame()->document ();
1623 EXPECT_EQ(0, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNam es::marginwidthAttr)); 1623 EXPECT_EQ(0, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNam es::marginwidthAttr));
1624 EXPECT_EQ(0, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNam es::marginheightAttr)); 1624 EXPECT_EQ(0, childDocument->firstBodyElement()->getIntegralAttribute(HTMLNam es::marginheightAttr));
1625 1625
1626 FrameView* frameView = static_cast<WebLocalFrameImpl*>(localFrame)->frameVie w(); 1626 FrameView* frameView = static_cast<WebLocalFrameImpl*>(localFrame)->frameVie w();
1627 EXPECT_EQ(nullptr, frameView->horizontalScrollbar()); 1627 EXPECT_EQ(nullptr, frameView->horizontalScrollbar());
(...skipping 4251 matching lines...) Expand 10 before | Expand all | Expand 10 after
5879 , m_willSendRequestCallCount(0) 5879 , m_willSendRequestCallCount(0)
5880 , m_childFrameCreationCount(0) 5880 , m_childFrameCreationCount(0)
5881 { 5881 {
5882 } 5882 }
5883 5883
5884 void setChildWebFrameClient(TestCachePolicyWebFrameClient* client) { m_child Client = client; } 5884 void setChildWebFrameClient(TestCachePolicyWebFrameClient* client) { m_child Client = client; }
5885 WebURLRequest::CachePolicy cachePolicy() const { return m_policy; } 5885 WebURLRequest::CachePolicy cachePolicy() const { return m_policy; }
5886 int willSendRequestCallCount() const { return m_willSendRequestCallCount; } 5886 int willSendRequestCallCount() const { return m_willSendRequestCallCount; }
5887 int childFrameCreationCount() const { return m_childFrameCreationCount; } 5887 int childFrameCreationCount() const { return m_childFrameCreationCount; }
5888 5888
5889 virtual WebFrame* createChildFrame(WebLocalFrame* parent, WebTreeScopeType s cope, const WebString&, WebSandboxFlags, const WebFrameOwnerProperties& frameOwn erProperties) 5889 virtual WebFrame* createChildFrame(WebLocalFrame* parent, WebTreeScopeType s cope, const WebString&, const WebString&, WebSandboxFlags, const WebFrameOwnerPr operties& frameOwnerProperties)
5890 { 5890 {
5891 ASSERT(m_childClient); 5891 ASSERT(m_childClient);
5892 m_childFrameCreationCount++; 5892 m_childFrameCreationCount++;
5893 WebFrame* frame = WebLocalFrame::create(scope, m_childClient); 5893 WebFrame* frame = WebLocalFrame::create(scope, m_childClient);
5894 parent->appendChild(frame); 5894 parent->appendChild(frame);
5895 return frame; 5895 return frame;
5896 } 5896 }
5897 5897
5898 virtual void didStartLoading(bool toDifferentDocument) 5898 virtual void didStartLoading(bool toDifferentDocument)
5899 { 5899 {
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
6268 // After commit, there is. 6268 // After commit, there is.
6269 HistoryItem* item = mainFrameLoader.currentItem(); 6269 HistoryItem* item = mainFrameLoader.currentItem();
6270 ASSERT_TRUE(item); 6270 ASSERT_TRUE(item);
6271 EXPECT_EQ(WTF::String(url.data()), item->urlString()); 6271 EXPECT_EQ(WTF::String(url.data()), item->urlString());
6272 } 6272 }
6273 6273
6274 class FailCreateChildFrame : public FrameTestHelpers::TestWebFrameClient { 6274 class FailCreateChildFrame : public FrameTestHelpers::TestWebFrameClient {
6275 public: 6275 public:
6276 FailCreateChildFrame() : m_callCount(0) { } 6276 FailCreateChildFrame() : m_callCount(0) { }
6277 6277
6278 WebFrame* createChildFrame(WebLocalFrame* parent, WebTreeScopeType scope, co nst WebString& frameName, WebSandboxFlags sandboxFlags, const WebFrameOwnerPrope rties& frameOwnerProperties) override 6278 WebFrame* createChildFrame(WebLocalFrame* parent, WebTreeScopeType scope, co nst WebString& frameName, const WebString& frameUniqueName, WebSandboxFlags sand boxFlags, const WebFrameOwnerProperties& frameOwnerProperties) override
6279 { 6279 {
6280 ++m_callCount; 6280 ++m_callCount;
6281 return 0; 6281 return 0;
6282 } 6282 }
6283 6283
6284 int callCount() const { return m_callCount; } 6284 int callCount() const { return m_callCount; }
6285 6285
6286 private: 6286 private:
6287 int m_callCount; 6287 int m_callCount;
6288 }; 6288 };
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after
6927 // doesn't leave behind dangling pointers. 6927 // doesn't leave behind dangling pointers.
6928 TEST_P(ParameterizedWebFrameTest, EmbedderTriggeredDetachWithRemoteMainFrame) 6928 TEST_P(ParameterizedWebFrameTest, EmbedderTriggeredDetachWithRemoteMainFrame)
6929 { 6929 {
6930 // FIXME: Refactor some of this logic into WebViewHelper to make it easier t o 6930 // FIXME: Refactor some of this logic into WebViewHelper to make it easier t o
6931 // write tests with a top-level remote frame. 6931 // write tests with a top-level remote frame.
6932 FrameTestHelpers::TestWebViewClient viewClient; 6932 FrameTestHelpers::TestWebViewClient viewClient;
6933 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 6933 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
6934 WebView* view = WebView::create(&viewClient); 6934 WebView* view = WebView::create(&viewClient);
6935 view->setMainFrame(remoteClient.frame()); 6935 view->setMainFrame(remoteClient.frame());
6936 FrameTestHelpers::TestWebFrameClient childFrameClient; 6936 FrameTestHelpers::TestWebFrameClient childFrameClient;
6937 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClient , nullptr, WebFrameOwnerProperties()); 6937 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", "", WebSandboxFlags::None, &childFrameCl ient, nullptr, WebFrameOwnerProperties());
6938 6938
6939 // Purposely keep the LocalFrame alive so it's the last thing to be destroye d. 6939 // Purposely keep the LocalFrame alive so it's the last thing to be destroye d.
6940 RefPtrWillBePersistent<Frame> childCoreFrame = childFrame->toImplBase()->fra me(); 6940 RefPtrWillBePersistent<Frame> childCoreFrame = childFrame->toImplBase()->fra me();
6941 view->close(); 6941 view->close();
6942 childCoreFrame.clear(); 6942 childCoreFrame.clear();
6943 } 6943 }
6944 6944
6945 class WebFrameSwapTest : public WebFrameTest { 6945 class WebFrameSwapTest : public WebFrameTest {
6946 protected: 6946 protected:
6947 WebFrameSwapTest() 6947 WebFrameSwapTest()
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
7175 WebRemoteFrame* remoteFrame = WebRemoteFrame::create(WebTreeScopeType::Docum ent, &remoteFrameClient1); 7175 WebRemoteFrame* remoteFrame = WebRemoteFrame::create(WebTreeScopeType::Docum ent, &remoteFrameClient1);
7176 WebFrame* targetFrame = mainFrame()->firstChild()->nextSibling(); 7176 WebFrame* targetFrame = mainFrame()->firstChild()->nextSibling();
7177 EXPECT_TRUE(targetFrame); 7177 EXPECT_TRUE(targetFrame);
7178 swapAndVerifySubframeConsistency("local->remote", targetFrame, remoteFrame); 7178 swapAndVerifySubframeConsistency("local->remote", targetFrame, remoteFrame);
7179 7179
7180 targetFrame = mainFrame()->firstChild()->nextSibling(); 7180 targetFrame = mainFrame()->firstChild()->nextSibling();
7181 EXPECT_TRUE(targetFrame); 7181 EXPECT_TRUE(targetFrame);
7182 7182
7183 // Create child frames in the target frame before testing the swap. 7183 // Create child frames in the target frame before testing the swap.
7184 FrameTestHelpers::TestWebRemoteFrameClient remoteFrameClient2; 7184 FrameTestHelpers::TestWebRemoteFrameClient remoteFrameClient2;
7185 WebRemoteFrame* childRemoteFrame = remoteFrame->createRemoteChild(WebTreeSco peType::Document, "", WebSandboxFlags::None, &remoteFrameClient2); 7185 WebRemoteFrame* childRemoteFrame = remoteFrame->createRemoteChild(WebTreeSco peType::Document, "", "uniqueName0", WebSandboxFlags::None, &remoteFrameClient2) ;
7186 7186
7187 FrameTestHelpers::TestWebFrameClient client; 7187 FrameTestHelpers::TestWebFrameClient client;
7188 WebLocalFrame* localFrame = WebLocalFrame::createProvisional(&client, remote Frame, WebSandboxFlags::None, WebFrameOwnerProperties()); 7188 WebLocalFrame* localFrame = WebLocalFrame::createProvisional(&client, remote Frame, WebSandboxFlags::None, WebFrameOwnerProperties());
7189 swapAndVerifySubframeConsistency("remote->local", targetFrame, localFrame); 7189 swapAndVerifySubframeConsistency("remote->local", targetFrame, localFrame);
7190 7190
7191 // FIXME: This almost certainly fires more load events on the iframe element 7191 // FIXME: This almost certainly fires more load events on the iframe element
7192 // than it should. 7192 // than it should.
7193 // Finally, make sure an embedder triggered load in the local frame swapped 7193 // Finally, make sure an embedder triggered load in the local frame swapped
7194 // back in works. 7194 // back in works.
7195 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "subframe-hello.html"); 7195 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "subframe-hello.html");
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
7325 TEST_F(WebFrameSwapTest, FramesOfRemoteParentAreIndexable) 7325 TEST_F(WebFrameSwapTest, FramesOfRemoteParentAreIndexable)
7326 { 7326 {
7327 v8::HandleScope scope(v8::Isolate::GetCurrent()); 7327 v8::HandleScope scope(v8::Isolate::GetCurrent());
7328 7328
7329 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7329 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7330 WebRemoteFrame* remoteParentFrame = remoteClient.frame(); 7330 WebRemoteFrame* remoteParentFrame = remoteClient.frame();
7331 mainFrame()->swap(remoteParentFrame); 7331 mainFrame()->swap(remoteParentFrame);
7332 remoteParentFrame->setReplicatedOrigin(SecurityOrigin::createUnique()); 7332 remoteParentFrame->setReplicatedOrigin(SecurityOrigin::createUnique());
7333 7333
7334 FrameTestHelpers::TestWebFrameClient childFrameClient; 7334 FrameTestHelpers::TestWebFrameClient childFrameClient;
7335 WebLocalFrame* childFrame = remoteParentFrame->createLocalChild(WebTreeScope Type::Document, "", WebSandboxFlags::None, &childFrameClient, nullptr, WebFrameO wnerProperties()); 7335 WebLocalFrame* childFrame = remoteParentFrame->createLocalChild(WebTreeScope Type::Document, "", "", WebSandboxFlags::None, &childFrameClient, nullptr, WebFr ameOwnerProperties());
7336 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "subframe-hello.html"); 7336 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "subframe-hello.html");
7337 7337
7338 v8::Local<v8::Value> window = childFrame->executeScriptAndReturnValue(WebScr iptSource("window")); 7338 v8::Local<v8::Value> window = childFrame->executeScriptAndReturnValue(WebScr iptSource("window"));
7339 v8::Local<v8::Value> childOfRemoteParent = childFrame->executeScriptAndRetur nValue(WebScriptSource("parent.frames[0]")); 7339 v8::Local<v8::Value> childOfRemoteParent = childFrame->executeScriptAndRetur nValue(WebScriptSource("parent.frames[0]"));
7340 EXPECT_TRUE(childOfRemoteParent->IsObject()); 7340 EXPECT_TRUE(childOfRemoteParent->IsObject());
7341 EXPECT_TRUE(window->StrictEquals(childOfRemoteParent)); 7341 EXPECT_TRUE(window->StrictEquals(childOfRemoteParent));
7342 7342
7343 v8::Local<v8::Value> windowLength = childFrame->executeScriptAndReturnValue( WebScriptSource("parent.frames.length")); 7343 v8::Local<v8::Value> windowLength = childFrame->executeScriptAndReturnValue( WebScriptSource("parent.frames.length"));
7344 ASSERT_TRUE(windowLength->IsInt32()); 7344 ASSERT_TRUE(windowLength->IsInt32());
7345 EXPECT_EQ(1, windowLength.As<v8::Int32>()->Value()); 7345 EXPECT_EQ(1, windowLength.As<v8::Int32>()->Value());
7346 7346
7347 // Manually reset to break WebViewHelper's dependency on the stack allocated clients. 7347 // Manually reset to break WebViewHelper's dependency on the stack allocated clients.
7348 reset(); 7348 reset();
7349 } 7349 }
7350 7350
7351 // Check that frames with a remote parent don't crash while accessing window.fra meElement. 7351 // Check that frames with a remote parent don't crash while accessing window.fra meElement.
7352 TEST_F(WebFrameSwapTest, FrameElementInFramesWithRemoteParent) 7352 TEST_F(WebFrameSwapTest, FrameElementInFramesWithRemoteParent)
7353 { 7353 {
7354 v8::HandleScope scope(v8::Isolate::GetCurrent()); 7354 v8::HandleScope scope(v8::Isolate::GetCurrent());
7355 7355
7356 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7356 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7357 WebRemoteFrame* remoteParentFrame = remoteClient.frame(); 7357 WebRemoteFrame* remoteParentFrame = remoteClient.frame();
7358 mainFrame()->swap(remoteParentFrame); 7358 mainFrame()->swap(remoteParentFrame);
7359 remoteParentFrame->setReplicatedOrigin(SecurityOrigin::createUnique()); 7359 remoteParentFrame->setReplicatedOrigin(SecurityOrigin::createUnique());
7360 7360
7361 FrameTestHelpers::TestWebFrameClient childFrameClient; 7361 FrameTestHelpers::TestWebFrameClient childFrameClient;
7362 WebLocalFrame* childFrame = remoteParentFrame->createLocalChild(WebTreeScope Type::Document, "", WebSandboxFlags::None, &childFrameClient, nullptr, WebFrameO wnerProperties()); 7362 WebLocalFrame* childFrame = remoteParentFrame->createLocalChild(WebTreeScope Type::Document, "", "", WebSandboxFlags::None, &childFrameClient, nullptr, WebFr ameOwnerProperties());
7363 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "subframe-hello.html"); 7363 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "subframe-hello.html");
7364 7364
7365 v8::Local<v8::Value> frameElement = childFrame->executeScriptAndReturnValue( WebScriptSource("window.frameElement")); 7365 v8::Local<v8::Value> frameElement = childFrame->executeScriptAndReturnValue( WebScriptSource("window.frameElement"));
7366 // frameElement should be null if cross-origin. 7366 // frameElement should be null if cross-origin.
7367 ASSERT_FALSE(frameElement.IsEmpty()); 7367 ASSERT_FALSE(frameElement.IsEmpty());
7368 EXPECT_TRUE(frameElement->IsNull()); 7368 EXPECT_TRUE(frameElement->IsNull());
7369 7369
7370 // Manually reset to break WebViewHelper's dependency on the stack allocated clients. 7370 // Manually reset to break WebViewHelper's dependency on the stack allocated clients.
7371 reset(); 7371 reset();
7372 } 7372 }
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
7669 TEST_P(ParameterizedWebFrameTest, RemoteFrameInitialCommitType) 7669 TEST_P(ParameterizedWebFrameTest, RemoteFrameInitialCommitType)
7670 { 7670 {
7671 FrameTestHelpers::TestWebViewClient viewClient; 7671 FrameTestHelpers::TestWebViewClient viewClient;
7672 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7672 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7673 WebView* view = WebView::create(&viewClient); 7673 WebView* view = WebView::create(&viewClient);
7674 view->setMainFrame(remoteClient.frame()); 7674 view->setMainFrame(remoteClient.frame());
7675 remoteClient.frame()->setReplicatedOrigin(WebSecurityOrigin::createFromStrin g(WebString::fromUTF8(m_baseURL))); 7675 remoteClient.frame()->setReplicatedOrigin(WebSecurityOrigin::createFromStrin g(WebString::fromUTF8(m_baseURL)));
7676 7676
7677 // If an iframe has a remote main frame, ensure the inital commit is correct ly identified as WebInitialCommitInChildFrame. 7677 // If an iframe has a remote main frame, ensure the inital commit is correct ly identified as WebInitialCommitInChildFrame.
7678 CommitTypeWebFrameClient childFrameClient; 7678 CommitTypeWebFrameClient childFrameClient;
7679 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClient , nullptr, WebFrameOwnerProperties()); 7679 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", "", WebSandboxFlags::None, &childFrameCl ient, nullptr, WebFrameOwnerProperties());
7680 registerMockedHttpURLLoad("foo.html"); 7680 registerMockedHttpURLLoad("foo.html");
7681 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "foo.html"); 7681 FrameTestHelpers::loadFrame(childFrame, m_baseURL + "foo.html");
7682 EXPECT_EQ(WebInitialCommitInChildFrame, childFrameClient.historyCommitType() ); 7682 EXPECT_EQ(WebInitialCommitInChildFrame, childFrameClient.historyCommitType() );
7683 view->close(); 7683 view->close();
7684 } 7684 }
7685 7685
7686 class GestureEventTestWebViewClient : public FrameTestHelpers::TestWebViewClient { 7686 class GestureEventTestWebViewClient : public FrameTestHelpers::TestWebViewClient {
7687 public: 7687 public:
7688 GestureEventTestWebViewClient() : m_didHandleGestureEvent(false) { } 7688 GestureEventTestWebViewClient() : m_didHandleGestureEvent(false) { }
7689 void didHandleGestureEvent(const WebGestureEvent& event, bool eventCancelled ) override { m_didHandleGestureEvent = true; } 7689 void didHandleGestureEvent(const WebGestureEvent& event, bool eventCancelled ) override { m_didHandleGestureEvent = true; }
7690 bool didHandleGestureEvent() const { return m_didHandleGestureEvent; } 7690 bool didHandleGestureEvent() const { return m_didHandleGestureEvent; }
7691 7691
7692 private: 7692 private:
7693 bool m_didHandleGestureEvent; 7693 bool m_didHandleGestureEvent;
7694 }; 7694 };
7695 7695
7696 TEST_P(ParameterizedWebFrameTest, FrameWidgetTest) 7696 TEST_P(ParameterizedWebFrameTest, FrameWidgetTest)
7697 { 7697 {
7698 FrameTestHelpers::TestWebViewClient viewClient; 7698 FrameTestHelpers::TestWebViewClient viewClient;
7699 WebView* view = WebView::create(&viewClient); 7699 WebView* view = WebView::create(&viewClient);
7700 7700
7701 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7701 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7702 view->setMainFrame(remoteClient.frame()); 7702 view->setMainFrame(remoteClient.frame());
7703 7703
7704 FrameTestHelpers::TestWebFrameClient childFrameClient; 7704 FrameTestHelpers::TestWebFrameClient childFrameClient;
7705 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClient , nullptr, WebFrameOwnerProperties()); 7705 WebLocalFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createLoc alChild(WebTreeScopeType::Document, "", "", WebSandboxFlags::None, &childFrameCl ient, nullptr, WebFrameOwnerProperties());
7706 7706
7707 GestureEventTestWebViewClient childViewClient; 7707 GestureEventTestWebViewClient childViewClient;
7708 WebFrameWidget* widget = WebFrameWidget::create(&childViewClient, childFrame ); 7708 WebFrameWidget* widget = WebFrameWidget::create(&childViewClient, childFrame );
7709 7709
7710 view->resize(WebSize(1000, 1000)); 7710 view->resize(WebSize(1000, 1000));
7711 7711
7712 widget->handleInputEvent(fatTap(20, 20)); 7712 widget->handleInputEvent(fatTap(20, 20));
7713 EXPECT_TRUE(childViewClient.didHandleGestureEvent()); 7713 EXPECT_TRUE(childViewClient.didHandleGestureEvent());
7714 7714
7715 widget->close(); 7715 widget->close();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
7761 EXPECT_FALSE(client.failed()); 7761 EXPECT_FALSE(client.failed());
7762 } 7762 }
7763 7763
7764 TEST_P(ParameterizedWebFrameTest, DetachRemoteFrame) 7764 TEST_P(ParameterizedWebFrameTest, DetachRemoteFrame)
7765 { 7765 {
7766 FrameTestHelpers::TestWebViewClient viewClient; 7766 FrameTestHelpers::TestWebViewClient viewClient;
7767 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7767 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7768 WebView* view = WebView::create(&viewClient); 7768 WebView* view = WebView::create(&viewClient);
7769 view->setMainFrame(remoteClient.frame()); 7769 view->setMainFrame(remoteClient.frame());
7770 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient; 7770 FrameTestHelpers::TestWebRemoteFrameClient childFrameClient;
7771 WebRemoteFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createRe moteChild(WebTreeScopeType::Document, "", WebSandboxFlags::None, &childFrameClie nt); 7771 WebRemoteFrame* childFrame = view->mainFrame()->toWebRemoteFrame()->createRe moteChild(WebTreeScopeType::Document, "", "uniqueName1", WebSandboxFlags::None, &childFrameClient);
7772 childFrame->detach(); 7772 childFrame->detach();
7773 view->close(); 7773 view->close();
7774 childFrame->close(); 7774 childFrame->close();
7775 } 7775 }
7776 7776
7777 class TestConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameCl ient { 7777 class TestConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameCl ient {
7778 public: 7778 public:
7779 virtual void didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine, const WebString& stackTrace) 7779 virtual void didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine, const WebString& stackTrace)
7780 { 7780 {
7781 messages.append(message); 7781 messages.append(message);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
7913 7913
7914 7914
7915 TEST_P(ParameterizedWebFrameTest, CreateLocalChildWithPreviousSibling) 7915 TEST_P(ParameterizedWebFrameTest, CreateLocalChildWithPreviousSibling)
7916 { 7916 {
7917 FrameTestHelpers::TestWebViewClient viewClient; 7917 FrameTestHelpers::TestWebViewClient viewClient;
7918 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7918 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7919 WebView* view = WebView::create(&viewClient); 7919 WebView* view = WebView::create(&viewClient);
7920 view->setMainFrame(remoteClient.frame()); 7920 view->setMainFrame(remoteClient.frame());
7921 WebRemoteFrame* parent = view->mainFrame()->toWebRemoteFrame(); 7921 WebRemoteFrame* parent = view->mainFrame()->toWebRemoteFrame();
7922 7922
7923 WebLocalFrameScope secondFrame = parent->createLocalChild(WebTreeScopeType:: Document, "", WebSandboxFlags::None, nullptr, nullptr, WebFrameOwnerProperties() ); 7923 WebLocalFrameScope secondFrame = parent->createLocalChild(WebTreeScopeType:: Document, "", "", WebSandboxFlags::None, nullptr, nullptr, WebFrameOwnerProperti es());
7924 WebLocalFrameScope fourthFrame = parent->createLocalChild(WebTreeScopeType:: Document, "", WebSandboxFlags::None, nullptr, secondFrame, WebFrameOwnerProperti es()); 7924 WebLocalFrameScope fourthFrame = parent->createLocalChild(WebTreeScopeType:: Document, "", "", WebSandboxFlags::None, nullptr, secondFrame, WebFrameOwnerProp erties());
7925 WebLocalFrameScope thirdFrame = parent->createLocalChild(WebTreeScopeType::D ocument, "", WebSandboxFlags::None, nullptr, secondFrame, WebFrameOwnerPropertie s()); 7925 WebLocalFrameScope thirdFrame = parent->createLocalChild(WebTreeScopeType::D ocument, "", "", WebSandboxFlags::None, nullptr, secondFrame, WebFrameOwnerPrope rties());
7926 WebLocalFrameScope firstFrame = parent->createLocalChild(WebTreeScopeType::D ocument, "", WebSandboxFlags::None, nullptr, nullptr, WebFrameOwnerProperties()) ; 7926 WebLocalFrameScope firstFrame = parent->createLocalChild(WebTreeScopeType::D ocument, "", "", WebSandboxFlags::None, nullptr, nullptr, WebFrameOwnerPropertie s());
7927 7927
7928 EXPECT_EQ(firstFrame, parent->firstChild()); 7928 EXPECT_EQ(firstFrame, parent->firstChild());
7929 EXPECT_EQ(nullptr, firstFrame->previousSibling()); 7929 EXPECT_EQ(nullptr, firstFrame->previousSibling());
7930 EXPECT_EQ(secondFrame, firstFrame->nextSibling()); 7930 EXPECT_EQ(secondFrame, firstFrame->nextSibling());
7931 7931
7932 EXPECT_EQ(firstFrame, secondFrame->previousSibling()); 7932 EXPECT_EQ(firstFrame, secondFrame->previousSibling());
7933 EXPECT_EQ(thirdFrame, secondFrame->nextSibling()); 7933 EXPECT_EQ(thirdFrame, secondFrame->nextSibling());
7934 7934
7935 EXPECT_EQ(secondFrame, thirdFrame->previousSibling()); 7935 EXPECT_EQ(secondFrame, thirdFrame->previousSibling());
7936 EXPECT_EQ(fourthFrame, thirdFrame->nextSibling()); 7936 EXPECT_EQ(fourthFrame, thirdFrame->nextSibling());
(...skipping 14 matching lines...) Expand all
7951 { 7951 {
7952 FrameTestHelpers::TestWebViewClient viewClient; 7952 FrameTestHelpers::TestWebViewClient viewClient;
7953 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7953 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7954 WebView* view = WebView::create(&viewClient); 7954 WebView* view = WebView::create(&viewClient);
7955 view->settings()->setJavaScriptEnabled(true); 7955 view->settings()->setJavaScriptEnabled(true);
7956 view->setMainFrame(remoteClient.frame()); 7956 view->setMainFrame(remoteClient.frame());
7957 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame(); 7957 WebRemoteFrame* root = view->mainFrame()->toWebRemoteFrame();
7958 root->setReplicatedOrigin(SecurityOrigin::createUnique()); 7958 root->setReplicatedOrigin(SecurityOrigin::createUnique());
7959 7959
7960 FrameTestHelpers::TestWebFrameClient localFrameClient; 7960 FrameTestHelpers::TestWebFrameClient localFrameClient;
7961 WebLocalFrame* localFrame = root->createLocalChild(WebTreeScopeType::Documen t, "", WebSandboxFlags::None, &localFrameClient, nullptr, WebFrameOwnerPropertie s()); 7961 WebLocalFrame* localFrame = root->createLocalChild(WebTreeScopeType::Documen t, "", "", WebSandboxFlags::None, &localFrameClient, nullptr, WebFrameOwnerPrope rties());
7962 7962
7963 // Finally, make sure an embedder triggered load in the local frame swapped 7963 // Finally, make sure an embedder triggered load in the local frame swapped
7964 // back in works. 7964 // back in works.
7965 registerMockedHttpURLLoad("send_beacon.html"); 7965 registerMockedHttpURLLoad("send_beacon.html");
7966 registerMockedHttpURLLoad("reload_post.html"); // url param to sendBeacon() 7966 registerMockedHttpURLLoad("reload_post.html"); // url param to sendBeacon()
7967 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "send_beacon.html"); 7967 FrameTestHelpers::loadFrame(localFrame, m_baseURL + "send_beacon.html");
7968 7968
7969 view->close(); 7969 view->close();
7970 } 7970 }
7971 7971
7972 // See https://crbug.com/525285. 7972 // See https://crbug.com/525285.
7973 TEST_P(ParameterizedWebFrameTest, RemoteToLocalSwapOnMainFrameInitializesCoreFra me) 7973 TEST_P(ParameterizedWebFrameTest, RemoteToLocalSwapOnMainFrameInitializesCoreFra me)
7974 { 7974 {
7975 FrameTestHelpers::TestWebViewClient viewClient; 7975 FrameTestHelpers::TestWebViewClient viewClient;
7976 FrameTestHelpers::TestWebRemoteFrameClient remoteClient; 7976 FrameTestHelpers::TestWebRemoteFrameClient remoteClient;
7977 WebView* view = WebView::create(&viewClient); 7977 WebView* view = WebView::create(&viewClient);
7978 view->setMainFrame(remoteClient.frame()); 7978 view->setMainFrame(remoteClient.frame());
7979 WebRemoteFrame* remoteRoot = view->mainFrame()->toWebRemoteFrame(); 7979 WebRemoteFrame* remoteRoot = view->mainFrame()->toWebRemoteFrame();
7980 remoteRoot->setReplicatedOrigin(SecurityOrigin::createUnique()); 7980 remoteRoot->setReplicatedOrigin(SecurityOrigin::createUnique());
7981 7981
7982 FrameTestHelpers::TestWebFrameClient localFrameClient; 7982 FrameTestHelpers::TestWebFrameClient localFrameClient;
7983 remoteRoot->createLocalChild(WebTreeScopeType::Document, "", WebSandboxFlags ::None, &localFrameClient, nullptr, WebFrameOwnerProperties()); 7983 remoteRoot->createLocalChild(WebTreeScopeType::Document, "", "", WebSandboxF lags::None, &localFrameClient, nullptr, WebFrameOwnerProperties());
7984 7984
7985 // Do a remote-to-local swap of the top frame. 7985 // Do a remote-to-local swap of the top frame.
7986 FrameTestHelpers::TestWebFrameClient localClient; 7986 FrameTestHelpers::TestWebFrameClient localClient;
7987 WebLocalFrame* localRoot = WebLocalFrame::createProvisional(&localClient, re moteRoot, WebSandboxFlags::None, WebFrameOwnerProperties()); 7987 WebLocalFrame* localRoot = WebLocalFrame::createProvisional(&localClient, re moteRoot, WebSandboxFlags::None, WebFrameOwnerProperties());
7988 remoteRoot->swap(localRoot); 7988 remoteRoot->swap(localRoot);
7989 7989
7990 // Load a page with a child frame in the new root to make sure this doesn't 7990 // Load a page with a child frame in the new root to make sure this doesn't
7991 // crash when the child frame invokes setCoreFrame. 7991 // crash when the child frame invokes setCoreFrame.
7992 registerMockedHttpURLLoad("single_iframe.html"); 7992 registerMockedHttpURLLoad("single_iframe.html");
7993 registerMockedHttpURLLoad("visible_iframe.html"); 7993 registerMockedHttpURLLoad("visible_iframe.html");
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
8405 } 8405 }
8406 8406
8407 TEST_F(WebFrameVisibilityChangeTest, RemoteFrameParentVisibilityChange) 8407 TEST_F(WebFrameVisibilityChangeTest, RemoteFrameParentVisibilityChange)
8408 { 8408 {
8409 swapLocalFrameToRemoteFrame(); 8409 swapLocalFrameToRemoteFrame();
8410 executeScriptOnMainFrame(WebScriptSource("document.querySelector('iframe').p arentElement.style.display = 'none';")); 8410 executeScriptOnMainFrame(WebScriptSource("document.querySelector('iframe').p arentElement.style.display = 'none';"));
8411 EXPECT_FALSE(remoteFrameClient()->isVisible()); 8411 EXPECT_FALSE(remoteFrameClient()->isVisible());
8412 } 8412 }
8413 8413
8414 } // namespace blink 8414 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698