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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 #include "public/web/WebTextCheckingCompletion.h" | 138 #include "public/web/WebTextCheckingCompletion.h" |
139 #include "public/web/WebTextCheckingResult.h" | 139 #include "public/web/WebTextCheckingResult.h" |
140 #include "public/web/WebViewClient.h" | 140 #include "public/web/WebViewClient.h" |
141 #include "testing/gmock/include/gmock/gmock.h" | 141 #include "testing/gmock/include/gmock/gmock.h" |
142 #include "testing/gtest/include/gtest/gtest.h" | 142 #include "testing/gtest/include/gtest/gtest.h" |
143 #include "web/TextFinder.h" | 143 #include "web/TextFinder.h" |
144 #include "web/WebLocalFrameImpl.h" | 144 #include "web/WebLocalFrameImpl.h" |
145 #include "web/WebRemoteFrameImpl.h" | 145 #include "web/WebRemoteFrameImpl.h" |
146 #include "web/WebViewImpl.h" | 146 #include "web/WebViewImpl.h" |
147 #include "web/tests/FrameTestHelpers.h" | 147 #include "web/tests/FrameTestHelpers.h" |
148 #include "web/tests/sim/SimDisplayItemList.h" | |
149 #include "web/tests/sim/SimRequest.h" | |
150 #include "web/tests/sim/SimTest.h" | |
151 #include "wtf/Forward.h" | 148 #include "wtf/Forward.h" |
152 #include "wtf/PtrUtil.h" | 149 #include "wtf/PtrUtil.h" |
153 #include "wtf/dtoa/utils.h" | 150 #include "wtf/dtoa/utils.h" |
154 | 151 |
155 using blink::URLTestHelpers::toKURL; | 152 using blink::URLTestHelpers::toKURL; |
156 using blink::testing::runPendingTasks; | 153 using blink::testing::runPendingTasks; |
157 using testing::ElementsAre; | 154 using testing::ElementsAre; |
158 using testing::Mock; | 155 using testing::Mock; |
159 using testing::_; | 156 using testing::_; |
160 | 157 |
(...skipping 11137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11298 webViewHelper.initializeAndLoad(m_baseURL + "frameset-repeated-name.html"); | 11295 webViewHelper.initializeAndLoad(m_baseURL + "frameset-repeated-name.html"); |
11299 Frame* mainFrame = webViewHelper.webView()->mainFrameImpl()->frame(); | 11296 Frame* mainFrame = webViewHelper.webView()->mainFrameImpl()->frame(); |
11300 HashSet<AtomicString> names; | 11297 HashSet<AtomicString> names; |
11301 for (Frame* frame = mainFrame->tree().firstChild(); frame; | 11298 for (Frame* frame = mainFrame->tree().firstChild(); frame; |
11302 frame = frame->tree().traverseNext()) { | 11299 frame = frame->tree().traverseNext()) { |
11303 EXPECT_TRUE(names.insert(frame->tree().uniqueName()).isNewEntry); | 11300 EXPECT_TRUE(names.insert(frame->tree().uniqueName()).isNewEntry); |
11304 } | 11301 } |
11305 EXPECT_EQ(10u, names.size()); | 11302 EXPECT_EQ(10u, names.size()); |
11306 } | 11303 } |
11307 | 11304 |
11308 class WebFrameSimTest : public SimTest {}; | |
11309 | |
11310 TEST_F(WebFrameSimTest, DisplayNoneIFrameHasNoLayoutObjects) { | |
11311 SimRequest mainResource("https://example.com/test.html", "text/html"); | |
11312 SimRequest frameResource("https://example.com/frame.html", "text/html"); | |
11313 | |
11314 loadURL("https://example.com/test.html"); | |
11315 mainResource.complete( | |
11316 "<!DOCTYPE html>" | |
11317 "<iframe src=frame.html style='display: none'></iframe>"); | |
11318 frameResource.complete( | |
11319 "<!DOCTYPE html>" | |
11320 "<html><body>This is a visible iframe.</body></html>"); | |
11321 | |
11322 Element* element = document().querySelector("iframe"); | |
11323 HTMLFrameOwnerElement* frameOwnerElement = toHTMLFrameOwnerElement(element); | |
11324 Document* iframeDoc = frameOwnerElement->contentDocument(); | |
11325 EXPECT_FALSE(iframeDoc->documentElement()->layoutObject()); | |
11326 | |
11327 // Changing the display from 'none' -> 'block' should cause layout objects to | |
11328 // appear. | |
11329 element->setInlineStyleProperty(CSSPropertyDisplay, CSSValueBlock); | |
11330 compositor().beginFrame(); | |
11331 EXPECT_TRUE(iframeDoc->documentElement()->layoutObject()); | |
11332 | |
11333 // Changing the display from 'block' -> 'none' should cause layout objects to | |
11334 // disappear. | |
11335 element->setInlineStyleProperty(CSSPropertyDisplay, CSSValueNone); | |
11336 | |
11337 compositor().beginFrame(); | |
11338 EXPECT_FALSE(iframeDoc->documentElement()->layoutObject()); | |
11339 } | |
11340 | |
11341 TEST_F(WebFrameSimTest, NormalIFrameHasLayoutObjects) { | |
11342 SimRequest mainResource("https://example.com/test.html", "text/html"); | |
11343 SimRequest frameResource("https://example.com/frame.html", "text/html"); | |
11344 | |
11345 loadURL("https://example.com/test.html"); | |
11346 mainResource.complete( | |
11347 "<!DOCTYPE html>" | |
11348 "<iframe src=frame.html style='display: block'></iframe>"); | |
11349 frameResource.complete( | |
11350 "<!DOCTYPE html>" | |
11351 "<html><body>This is a visible iframe.</body></html>"); | |
11352 | |
11353 Element* element = document().querySelector("iframe"); | |
11354 HTMLFrameOwnerElement* frameOwnerElement = toHTMLFrameOwnerElement(element); | |
11355 Document* iframeDoc = frameOwnerElement->contentDocument(); | |
11356 EXPECT_TRUE(iframeDoc->documentElement()->layoutObject()); | |
11357 | |
11358 // Changing the display from 'block' -> 'none' should cause layout objects to | |
11359 // disappear. | |
11360 element->setInlineStyleProperty(CSSPropertyDisplay, CSSValueNone); | |
11361 compositor().beginFrame(); | |
11362 EXPECT_FALSE(iframeDoc->documentElement()->layoutObject()); | |
11363 } | |
11364 | |
11365 TEST_F(WebFrameTest, NoLoadingCompletionCallbacksInDetach) { | 11305 TEST_F(WebFrameTest, NoLoadingCompletionCallbacksInDetach) { |
11366 class LoadingObserverFrameClient | 11306 class LoadingObserverFrameClient |
11367 : public FrameTestHelpers::TestWebFrameClient { | 11307 : public FrameTestHelpers::TestWebFrameClient { |
11368 public: | 11308 public: |
11369 void frameDetached(WebLocalFrame*, DetachType) override { | 11309 void frameDetached(WebLocalFrame*, DetachType) override { |
11370 m_didCallFrameDetached = true; | 11310 m_didCallFrameDetached = true; |
11371 } | 11311 } |
11372 | 11312 |
11373 void didStopLoading() override { | 11313 void didStopLoading() override { |
11374 // TODO(dcheng): Investigate not calling this as well during frame detach. | 11314 // TODO(dcheng): Investigate not calling this as well during frame detach. |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11448 | 11388 |
11449 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); | 11389 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); |
11450 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); | 11390 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); |
11451 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); | 11391 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); |
11452 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); | 11392 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); |
11453 | 11393 |
11454 webViewHelper.reset(); | 11394 webViewHelper.reset(); |
11455 } | 11395 } |
11456 | 11396 |
11457 } // namespace blink | 11397 } // namespace blink |
OLD | NEW |