| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/frame/VisualViewport.h" | 5 #include "core/frame/VisualViewport.h" |
| 6 | 6 |
| 7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
| 8 #include "core/frame/BrowserControls.h" | 8 #include "core/frame/BrowserControls.h" |
| 9 #include "core/frame/FrameView.h" | 9 #include "core/frame/FrameView.h" |
| 10 #include "core/frame/LocalFrame.h" | 10 #include "core/frame/LocalFrame.h" |
| 11 #include "core/html/HTMLBodyElement.h" | 11 #include "core/html/HTMLBodyElement.h" |
| 12 #include "core/html/HTMLElement.h" | 12 #include "core/html/HTMLElement.h" |
| 13 #include "core/input/EventHandler.h" | 13 #include "core/input/EventHandler.h" |
| 14 #include "core/layout/LayoutObject.h" | 14 #include "core/layout/LayoutObject.h" |
| 15 #include "core/layout/api/LayoutViewItem.h" | 15 #include "core/layout/api/LayoutViewItem.h" |
| 16 #include "core/layout/compositing/PaintLayerCompositor.h" | 16 #include "core/layout/compositing/PaintLayerCompositor.h" |
| 17 #include "core/loader/DocumentLoader.h" | 17 #include "core/loader/DocumentLoader.h" |
| 18 #include "core/page/Page.h" | 18 #include "core/page/Page.h" |
| 19 #include "core/paint/PaintLayer.h" | 19 #include "core/paint/PaintLayer.h" |
| 20 #include "platform/geometry/DoublePoint.h" | 20 #include "platform/geometry/DoublePoint.h" |
| 21 #include "platform/geometry/DoubleRect.h" | 21 #include "platform/geometry/DoubleRect.h" |
| 22 #include "platform/graphics/CompositorElementId.h" | 22 #include "platform/graphics/CompositorElementId.h" |
| 23 #include "platform/graphics/GraphicsLayer.h" |
| 23 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h" | 24 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h" |
| 24 #include "platform/testing/URLTestHelpers.h" | 25 #include "platform/testing/URLTestHelpers.h" |
| 25 #include "platform/testing/UnitTestHelpers.h" | 26 #include "platform/testing/UnitTestHelpers.h" |
| 26 #include "public/platform/Platform.h" | 27 #include "public/platform/Platform.h" |
| 27 #include "public/platform/WebCachePolicy.h" | 28 #include "public/platform/WebCachePolicy.h" |
| 29 #include "public/platform/WebCoalescedInputEvent.h" |
| 28 #include "public/platform/WebInputEvent.h" | 30 #include "public/platform/WebInputEvent.h" |
| 29 #include "public/platform/WebLayerTreeView.h" | 31 #include "public/platform/WebLayerTreeView.h" |
| 30 #include "public/platform/WebURLLoaderMockFactory.h" | 32 #include "public/platform/WebURLLoaderMockFactory.h" |
| 31 #include "public/web/WebContextMenuData.h" | 33 #include "public/web/WebContextMenuData.h" |
| 32 #include "public/web/WebDocument.h" | 34 #include "public/web/WebDocument.h" |
| 33 #include "public/web/WebFrameClient.h" | 35 #include "public/web/WebFrameClient.h" |
| 34 #include "public/web/WebScriptSource.h" | 36 #include "public/web/WebScriptSource.h" |
| 35 #include "public/web/WebSettings.h" | 37 #include "public/web/WebSettings.h" |
| 36 #include "public/web/WebViewClient.h" | 38 #include "public/web/WebViewClient.h" |
| 37 #include "testing/gmock/include/gmock/gmock.h" | 39 #include "testing/gmock/include/gmock/gmock.h" |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 WebLayer* getRootScrollLayer() { | 161 WebLayer* getRootScrollLayer() { |
| 160 PaintLayerCompositor* compositor = | 162 PaintLayerCompositor* compositor = |
| 161 frame()->ContentLayoutItem().Compositor(); | 163 frame()->ContentLayoutItem().Compositor(); |
| 162 DCHECK(compositor); | 164 DCHECK(compositor); |
| 163 DCHECK(compositor->ScrollLayer()); | 165 DCHECK(compositor->ScrollLayer()); |
| 164 | 166 |
| 165 WebLayer* webScrollLayer = compositor->ScrollLayer()->PlatformLayer(); | 167 WebLayer* webScrollLayer = compositor->ScrollLayer()->PlatformLayer(); |
| 166 return webScrollLayer; | 168 return webScrollLayer; |
| 167 } | 169 } |
| 168 | 170 |
| 169 WebViewImpl* webViewImpl() const { return m_helper.WebView(); } | 171 WebViewBase* webViewImpl() const { return m_helper.WebView(); } |
| 170 LocalFrame* frame() const { | 172 LocalFrame* frame() const { |
| 171 return m_helper.WebView()->MainFrameImpl()->GetFrame(); | 173 return m_helper.WebView()->MainFrameImpl()->GetFrame(); |
| 172 } | 174 } |
| 173 | 175 |
| 174 static void configureSettings(WebSettings* settings) { | 176 static void configureSettings(WebSettings* settings) { |
| 175 settings->SetJavaScriptEnabled(true); | 177 settings->SetJavaScriptEnabled(true); |
| 176 settings->SetPreferCompositingToLCDTextEnabled(true); | 178 settings->SetPreferCompositingToLCDTextEnabled(true); |
| 177 } | 179 } |
| 178 | 180 |
| 179 static void configureAndroidSettings(WebSettings* settings) { | 181 static void configureAndroidSettings(WebSettings* settings) { |
| (...skipping 1928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2108 // when using inert (non-layout affecting) browser controls. | 2110 // when using inert (non-layout affecting) browser controls. |
| 2109 TEST_P(VisualViewportTest, ResizeCompositedAndFixedBackground) { | 2111 TEST_P(VisualViewportTest, ResizeCompositedAndFixedBackground) { |
| 2110 bool originalInertTopControls = | 2112 bool originalInertTopControls = |
| 2111 RuntimeEnabledFeatures::inertTopControlsEnabled(); | 2113 RuntimeEnabledFeatures::inertTopControlsEnabled(); |
| 2112 RuntimeEnabledFeatures::setInertTopControlsEnabled(true); | 2114 RuntimeEnabledFeatures::setInertTopControlsEnabled(true); |
| 2113 | 2115 |
| 2114 std::unique_ptr<FrameTestHelpers::TestWebViewClient> | 2116 std::unique_ptr<FrameTestHelpers::TestWebViewClient> |
| 2115 fakeCompositingWebViewClient = | 2117 fakeCompositingWebViewClient = |
| 2116 WTF::MakeUnique<FrameTestHelpers::TestWebViewClient>(); | 2118 WTF::MakeUnique<FrameTestHelpers::TestWebViewClient>(); |
| 2117 FrameTestHelpers::WebViewHelper webViewHelper; | 2119 FrameTestHelpers::WebViewHelper webViewHelper; |
| 2118 WebViewImpl* webViewImpl = webViewHelper.Initialize( | 2120 WebViewBase* webViewImpl = webViewHelper.Initialize( |
| 2119 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, | 2121 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, |
| 2120 &configureAndroidCompositing); | 2122 &configureAndroidCompositing); |
| 2121 | 2123 |
| 2122 int pageWidth = 640; | 2124 int pageWidth = 640; |
| 2123 int pageHeight = 480; | 2125 int pageHeight = 480; |
| 2124 float browserControlsHeight = 50.0f; | 2126 float browserControlsHeight = 50.0f; |
| 2125 int smallestHeight = pageHeight - browserControlsHeight; | 2127 int smallestHeight = pageHeight - browserControlsHeight; |
| 2126 | 2128 |
| 2127 webViewImpl->ResizeWithBrowserControls(WebSize(pageWidth, pageHeight), | 2129 webViewImpl->ResizeWithBrowserControls(WebSize(pageWidth, pageHeight), |
| 2128 browserControlsHeight, false); | 2130 browserControlsHeight, false); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2191 } | 2193 } |
| 2192 | 2194 |
| 2193 // Make sure a non-composited background-attachment:fixed background gets | 2195 // Make sure a non-composited background-attachment:fixed background gets |
| 2194 // resized when using inert (non-layout affecting) browser controls. | 2196 // resized when using inert (non-layout affecting) browser controls. |
| 2195 TEST_P(VisualViewportTest, ResizeNonCompositedAndFixedBackground) { | 2197 TEST_P(VisualViewportTest, ResizeNonCompositedAndFixedBackground) { |
| 2196 bool originalInertTopControls = | 2198 bool originalInertTopControls = |
| 2197 RuntimeEnabledFeatures::inertTopControlsEnabled(); | 2199 RuntimeEnabledFeatures::inertTopControlsEnabled(); |
| 2198 RuntimeEnabledFeatures::setInertTopControlsEnabled(true); | 2200 RuntimeEnabledFeatures::setInertTopControlsEnabled(true); |
| 2199 | 2201 |
| 2200 FrameTestHelpers::WebViewHelper webViewHelper; | 2202 FrameTestHelpers::WebViewHelper webViewHelper; |
| 2201 WebViewImpl* webViewImpl = webViewHelper.Initialize( | 2203 WebViewBase* webViewImpl = webViewHelper.Initialize( |
| 2202 true, nullptr, nullptr, nullptr, &configureAndroidNonCompositing); | 2204 true, nullptr, nullptr, nullptr, &configureAndroidNonCompositing); |
| 2203 | 2205 |
| 2204 int pageWidth = 640; | 2206 int pageWidth = 640; |
| 2205 int pageHeight = 480; | 2207 int pageHeight = 480; |
| 2206 float browserControlsHeight = 50.0f; | 2208 float browserControlsHeight = 50.0f; |
| 2207 int smallestHeight = pageHeight - browserControlsHeight; | 2209 int smallestHeight = pageHeight - browserControlsHeight; |
| 2208 | 2210 |
| 2209 webViewImpl->ResizeWithBrowserControls(WebSize(pageWidth, pageHeight), | 2211 webViewImpl->ResizeWithBrowserControls(WebSize(pageWidth, pageHeight), |
| 2210 browserControlsHeight, false); | 2212 browserControlsHeight, false); |
| 2211 | 2213 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2297 // background doesn't cause invalidation or layout. | 2299 // background doesn't cause invalidation or layout. |
| 2298 TEST_P(VisualViewportTest, ResizeNonFixedBackgroundNoLayoutOrInvalidation) { | 2300 TEST_P(VisualViewportTest, ResizeNonFixedBackgroundNoLayoutOrInvalidation) { |
| 2299 bool originalInertTopControls = | 2301 bool originalInertTopControls = |
| 2300 RuntimeEnabledFeatures::inertTopControlsEnabled(); | 2302 RuntimeEnabledFeatures::inertTopControlsEnabled(); |
| 2301 RuntimeEnabledFeatures::setInertTopControlsEnabled(true); | 2303 RuntimeEnabledFeatures::setInertTopControlsEnabled(true); |
| 2302 | 2304 |
| 2303 std::unique_ptr<FrameTestHelpers::TestWebViewClient> | 2305 std::unique_ptr<FrameTestHelpers::TestWebViewClient> |
| 2304 fakeCompositingWebViewClient = | 2306 fakeCompositingWebViewClient = |
| 2305 WTF::MakeUnique<FrameTestHelpers::TestWebViewClient>(); | 2307 WTF::MakeUnique<FrameTestHelpers::TestWebViewClient>(); |
| 2306 FrameTestHelpers::WebViewHelper webViewHelper; | 2308 FrameTestHelpers::WebViewHelper webViewHelper; |
| 2307 WebViewImpl* webViewImpl = webViewHelper.Initialize( | 2309 WebViewBase* webViewImpl = webViewHelper.Initialize( |
| 2308 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, | 2310 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, |
| 2309 &configureAndroidCompositing); | 2311 &configureAndroidCompositing); |
| 2310 | 2312 |
| 2311 int pageWidth = 640; | 2313 int pageWidth = 640; |
| 2312 int pageHeight = 480; | 2314 int pageHeight = 480; |
| 2313 float browserControlsHeight = 50.0f; | 2315 float browserControlsHeight = 50.0f; |
| 2314 int smallestHeight = pageHeight - browserControlsHeight; | 2316 int smallestHeight = pageHeight - browserControlsHeight; |
| 2315 | 2317 |
| 2316 webViewImpl->ResizeWithBrowserControls(WebSize(pageWidth, pageHeight), | 2318 webViewImpl->ResizeWithBrowserControls(WebSize(pageWidth, pageHeight), |
| 2317 browserControlsHeight, false); | 2319 browserControlsHeight, false); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2381 | 2383 |
| 2382 TEST_P(VisualViewportTest, InvalidateLayoutViewWhenDocumentSmallerThanView) { | 2384 TEST_P(VisualViewportTest, InvalidateLayoutViewWhenDocumentSmallerThanView) { |
| 2383 bool originalInertTopControls = | 2385 bool originalInertTopControls = |
| 2384 RuntimeEnabledFeatures::inertTopControlsEnabled(); | 2386 RuntimeEnabledFeatures::inertTopControlsEnabled(); |
| 2385 RuntimeEnabledFeatures::setInertTopControlsEnabled(true); | 2387 RuntimeEnabledFeatures::setInertTopControlsEnabled(true); |
| 2386 | 2388 |
| 2387 std::unique_ptr<FrameTestHelpers::TestWebViewClient> | 2389 std::unique_ptr<FrameTestHelpers::TestWebViewClient> |
| 2388 fakeCompositingWebViewClient = | 2390 fakeCompositingWebViewClient = |
| 2389 WTF::MakeUnique<FrameTestHelpers::TestWebViewClient>(); | 2391 WTF::MakeUnique<FrameTestHelpers::TestWebViewClient>(); |
| 2390 FrameTestHelpers::WebViewHelper webViewHelper; | 2392 FrameTestHelpers::WebViewHelper webViewHelper; |
| 2391 WebViewImpl* webViewImpl = webViewHelper.Initialize( | 2393 WebViewBase* webViewImpl = webViewHelper.Initialize( |
| 2392 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, | 2394 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, |
| 2393 &configureAndroidCompositing); | 2395 &configureAndroidCompositing); |
| 2394 | 2396 |
| 2395 int pageWidth = 320; | 2397 int pageWidth = 320; |
| 2396 int pageHeight = 590; | 2398 int pageHeight = 590; |
| 2397 float browserControlsHeight = 50.0f; | 2399 float browserControlsHeight = 50.0f; |
| 2398 int largestHeight = pageHeight + browserControlsHeight; | 2400 int largestHeight = pageHeight + browserControlsHeight; |
| 2399 | 2401 |
| 2400 webViewImpl->ResizeWithBrowserControls(WebSize(pageWidth, pageHeight), | 2402 webViewImpl->ResizeWithBrowserControls(WebSize(pageWidth, pageHeight), |
| 2401 browserControlsHeight, true); | 2403 browserControlsHeight, true); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2448 " body {" | 2450 " body {" |
| 2449 " margin: 0px;" | 2451 " margin: 0px;" |
| 2450 " }" | 2452 " }" |
| 2451 " div { height:110vh; width: 110vw; }" | 2453 " div { height:110vh; width: 110vw; }" |
| 2452 "</style>" | 2454 "</style>" |
| 2453 "<div></div>", | 2455 "<div></div>", |
| 2454 baseURL); | 2456 baseURL); |
| 2455 } | 2457 } |
| 2456 | 2458 |
| 2457 } // namespace | 2459 } // namespace |
| OLD | NEW |