| 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 3032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3043 ASSERT_EQ(initial_page_scale_factor, | 3043 ASSERT_EQ(initial_page_scale_factor, |
| 3044 web_view_helper.WebView()->PageScaleFactor()); | 3044 web_view_helper.WebView()->PageScaleFactor()); |
| 3045 web_view_helper.Resize( | 3045 web_view_helper.Resize( |
| 3046 WebSize(viewport_size.height, viewport_size.width)); | 3046 WebSize(viewport_size.height, viewport_size.width)); |
| 3047 float expected_page_scale_factor = | 3047 float expected_page_scale_factor = |
| 3048 initial_page_scale_factor * | 3048 initial_page_scale_factor * |
| 3049 (should_scale_relative_to_viewport_width ? 1 / aspect_ratio : 1); | 3049 (should_scale_relative_to_viewport_width ? 1 / aspect_ratio : 1); |
| 3050 EXPECT_NEAR(expected_page_scale_factor, | 3050 EXPECT_NEAR(expected_page_scale_factor, |
| 3051 web_view_helper.WebView()->PageScaleFactor(), 0.05f); | 3051 web_view_helper.WebView()->PageScaleFactor(), 0.05f); |
| 3052 EXPECT_EQ(WebSize(), | 3052 EXPECT_EQ(WebSize(), |
| 3053 web_view_helper.WebView()->MainFrame()->GetScrollOffset()); | 3053 web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset()); |
| 3054 } | 3054 } |
| 3055 | 3055 |
| 3056 // Resizing just the height should not affect pageScaleFactor or | 3056 // Resizing just the height should not affect pageScaleFactor or |
| 3057 // scrollOffset. | 3057 // scrollOffset. |
| 3058 { | 3058 { |
| 3059 web_view_helper.Resize( | 3059 web_view_helper.Resize( |
| 3060 WebSize(viewport_size.width, viewport_size.height)); | 3060 WebSize(viewport_size.width, viewport_size.height)); |
| 3061 web_view_helper.WebView()->SetPageScaleFactor(initial_page_scale_factor); | 3061 web_view_helper.WebView()->SetPageScaleFactor(initial_page_scale_factor); |
| 3062 web_view_helper.WebView()->MainFrame()->SetScrollOffset(scroll_offset); | 3062 web_view_helper.WebView()->MainFrameImpl()->SetScrollOffset( |
| 3063 scroll_offset); |
| 3063 web_view_helper.WebView()->UpdateAllLifecyclePhases(); | 3064 web_view_helper.WebView()->UpdateAllLifecyclePhases(); |
| 3064 const WebSize expected_scroll_offset = | 3065 const WebSize expected_scroll_offset = |
| 3065 web_view_helper.WebView()->MainFrame()->GetScrollOffset(); | 3066 web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset(); |
| 3066 web_view_helper.Resize( | 3067 web_view_helper.Resize( |
| 3067 WebSize(viewport_size.width, viewport_size.height * 0.8f)); | 3068 WebSize(viewport_size.width, viewport_size.height * 0.8f)); |
| 3068 EXPECT_EQ(initial_page_scale_factor, | 3069 EXPECT_EQ(initial_page_scale_factor, |
| 3069 web_view_helper.WebView()->PageScaleFactor()); | 3070 web_view_helper.WebView()->PageScaleFactor()); |
| 3070 EXPECT_EQ(expected_scroll_offset, | 3071 EXPECT_EQ(expected_scroll_offset, |
| 3071 web_view_helper.WebView()->MainFrame()->GetScrollOffset()); | 3072 web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset()); |
| 3072 web_view_helper.Resize( | 3073 web_view_helper.Resize( |
| 3073 WebSize(viewport_size.width, viewport_size.height * 0.8f)); | 3074 WebSize(viewport_size.width, viewport_size.height * 0.8f)); |
| 3074 EXPECT_EQ(initial_page_scale_factor, | 3075 EXPECT_EQ(initial_page_scale_factor, |
| 3075 web_view_helper.WebView()->PageScaleFactor()); | 3076 web_view_helper.WebView()->PageScaleFactor()); |
| 3076 EXPECT_EQ(expected_scroll_offset, | 3077 EXPECT_EQ(expected_scroll_offset, |
| 3077 web_view_helper.WebView()->MainFrame()->GetScrollOffset()); | 3078 web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset()); |
| 3078 } | 3079 } |
| 3079 } | 3080 } |
| 3080 }; | 3081 }; |
| 3081 | 3082 |
| 3082 INSTANTIATE_TEST_CASE_P(All, WebFrameResizeTest, ::testing::Bool()); | 3083 INSTANTIATE_TEST_CASE_P(All, WebFrameResizeTest, ::testing::Bool()); |
| 3083 | 3084 |
| 3084 TEST_P(WebFrameResizeTest, | 3085 TEST_P(WebFrameResizeTest, |
| 3085 ResizeYieldsCorrectScrollAndScaleForWidthEqualsDeviceWidth) { | 3086 ResizeYieldsCorrectScrollAndScaleForWidthEqualsDeviceWidth) { |
| 3086 // With width=device-width, pageScaleFactor is preserved across resizes as | 3087 // With width=device-width, pageScaleFactor is preserved across resizes as |
| 3087 // long as the content adjusts according to the device-width. | 3088 // long as the content adjusts according to the device-width. |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3235 EXPECT_FALSE( | 3236 EXPECT_FALSE( |
| 3236 view->GetLayoutViewItem().Compositor()->LayerForHorizontalScrollbar()); | 3237 view->GetLayoutViewItem().Compositor()->LayerForHorizontalScrollbar()); |
| 3237 EXPECT_FALSE( | 3238 EXPECT_FALSE( |
| 3238 view->GetLayoutViewItem().Compositor()->LayerForVerticalScrollbar()); | 3239 view->GetLayoutViewItem().Compositor()->LayerForVerticalScrollbar()); |
| 3239 } | 3240 } |
| 3240 | 3241 |
| 3241 void SetScaleAndScrollAndLayout(WebViewBase* web_view, | 3242 void SetScaleAndScrollAndLayout(WebViewBase* web_view, |
| 3242 WebPoint scroll, | 3243 WebPoint scroll, |
| 3243 float scale) { | 3244 float scale) { |
| 3244 web_view->SetPageScaleFactor(scale); | 3245 web_view->SetPageScaleFactor(scale); |
| 3245 web_view->MainFrame()->SetScrollOffset(WebSize(scroll.x, scroll.y)); | 3246 web_view->MainFrameImpl()->SetScrollOffset(WebSize(scroll.x, scroll.y)); |
| 3246 web_view->UpdateAllLifecyclePhases(); | 3247 web_view->UpdateAllLifecyclePhases(); |
| 3247 } | 3248 } |
| 3248 | 3249 |
| 3249 void SimulatePageScale(WebViewBase* web_view_impl, float& scale) { | 3250 void SimulatePageScale(WebViewBase* web_view_impl, float& scale) { |
| 3250 ScrollOffset scroll_delta = | 3251 ScrollOffset scroll_delta = |
| 3251 ToScrollOffset( | 3252 ToScrollOffset( |
| 3252 web_view_impl->FakePageScaleAnimationTargetPositionForTesting()) - | 3253 web_view_impl->FakePageScaleAnimationTargetPositionForTesting()) - |
| 3253 web_view_impl->MainFrameImpl()->GetFrameView()->GetScrollOffset(); | 3254 web_view_impl->MainFrameImpl()->GetFrameView()->GetScrollOffset(); |
| 3254 float scale_delta = | 3255 float scale_delta = |
| 3255 web_view_impl->FakePageScaleAnimationPageScaleForTesting() / | 3256 web_view_impl->FakePageScaleAnimationPageScaleForTesting() / |
| (...skipping 980 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4236 const int kPageHeight = 100; | 4237 const int kPageHeight = 100; |
| 4237 | 4238 |
| 4238 RegisterMockedHttpURLLoad(first_url); | 4239 RegisterMockedHttpURLLoad(first_url); |
| 4239 RegisterMockedHttpURLLoad(second_url); | 4240 RegisterMockedHttpURLLoad(second_url); |
| 4240 RegisterMockedHttpURLLoad(third_url); | 4241 RegisterMockedHttpURLLoad(third_url); |
| 4241 | 4242 |
| 4242 ClearScrollStateOnCommitWebFrameClient client; | 4243 ClearScrollStateOnCommitWebFrameClient client; |
| 4243 FrameTestHelpers::WebViewHelper web_view_helper; | 4244 FrameTestHelpers::WebViewHelper web_view_helper; |
| 4244 web_view_helper.InitializeAndLoad(base_url_ + first_url, &client); | 4245 web_view_helper.InitializeAndLoad(base_url_ + first_url, &client); |
| 4245 web_view_helper.Resize(WebSize(kPageWidth, kPageHeight)); | 4246 web_view_helper.Resize(WebSize(kPageWidth, kPageHeight)); |
| 4246 web_view_helper.WebView()->MainFrame()->SetScrollOffset( | 4247 web_view_helper.WebView()->MainFrameImpl()->SetScrollOffset( |
| 4247 WebSize(kPageWidth / 4, kPageHeight / 4)); | 4248 WebSize(kPageWidth / 4, kPageHeight / 4)); |
| 4248 web_view_helper.WebView()->SetPageScaleFactor(kPageScaleFactor); | 4249 web_view_helper.WebView()->SetPageScaleFactor(kPageScaleFactor); |
| 4249 | 4250 |
| 4250 // Reload the page and end up at the same url. State should not be propagated. | 4251 // Reload the page and end up at the same url. State should not be propagated. |
| 4251 web_view_helper.WebView()->MainFrame()->ReloadWithOverrideURL( | 4252 web_view_helper.WebView()->MainFrame()->ReloadWithOverrideURL( |
| 4252 ToKURL(base_url_ + first_url), WebFrameLoadType::kReload); | 4253 ToKURL(base_url_ + first_url), WebFrameLoadType::kReload); |
| 4253 FrameTestHelpers::PumpPendingRequestsForFrameToLoad( | 4254 FrameTestHelpers::PumpPendingRequestsForFrameToLoad( |
| 4254 web_view_helper.WebView()->MainFrame()); | 4255 web_view_helper.WebView()->MainFrame()); |
| 4255 EXPECT_EQ(0, web_view_helper.WebView()->MainFrame()->GetScrollOffset().width); | 4256 EXPECT_EQ( |
| 4256 EXPECT_EQ(0, | 4257 0, web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset().width); |
| 4257 web_view_helper.WebView()->MainFrame()->GetScrollOffset().height); | 4258 EXPECT_EQ( |
| 4259 0, web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset().height); |
| 4258 EXPECT_EQ(1.0f, web_view_helper.WebView()->PageScaleFactor()); | 4260 EXPECT_EQ(1.0f, web_view_helper.WebView()->PageScaleFactor()); |
| 4259 | 4261 |
| 4260 // Reload the page using the cache. State should not be propagated. | 4262 // Reload the page using the cache. State should not be propagated. |
| 4261 web_view_helper.WebView()->MainFrame()->ReloadWithOverrideURL( | 4263 web_view_helper.WebView()->MainFrame()->ReloadWithOverrideURL( |
| 4262 ToKURL(base_url_ + second_url), WebFrameLoadType::kReload); | 4264 ToKURL(base_url_ + second_url), WebFrameLoadType::kReload); |
| 4263 FrameTestHelpers::PumpPendingRequestsForFrameToLoad( | 4265 FrameTestHelpers::PumpPendingRequestsForFrameToLoad( |
| 4264 web_view_helper.WebView()->MainFrame()); | 4266 web_view_helper.WebView()->MainFrame()); |
| 4265 EXPECT_EQ(0, web_view_helper.WebView()->MainFrame()->GetScrollOffset().width); | 4267 EXPECT_EQ( |
| 4266 EXPECT_EQ(0, | 4268 0, web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset().width); |
| 4267 web_view_helper.WebView()->MainFrame()->GetScrollOffset().height); | 4269 EXPECT_EQ( |
| 4270 0, web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset().height); |
| 4268 EXPECT_EQ(1.0f, web_view_helper.WebView()->PageScaleFactor()); | 4271 EXPECT_EQ(1.0f, web_view_helper.WebView()->PageScaleFactor()); |
| 4269 | 4272 |
| 4270 // Reload the page while bypassing the cache. State should not be propagated. | 4273 // Reload the page while bypassing the cache. State should not be propagated. |
| 4271 web_view_helper.WebView()->MainFrame()->ReloadWithOverrideURL( | 4274 web_view_helper.WebView()->MainFrame()->ReloadWithOverrideURL( |
| 4272 ToKURL(base_url_ + third_url), WebFrameLoadType::kReloadBypassingCache); | 4275 ToKURL(base_url_ + third_url), WebFrameLoadType::kReloadBypassingCache); |
| 4273 FrameTestHelpers::PumpPendingRequestsForFrameToLoad( | 4276 FrameTestHelpers::PumpPendingRequestsForFrameToLoad( |
| 4274 web_view_helper.WebView()->MainFrame()); | 4277 web_view_helper.WebView()->MainFrame()); |
| 4275 EXPECT_EQ(0, web_view_helper.WebView()->MainFrame()->GetScrollOffset().width); | 4278 EXPECT_EQ( |
| 4276 EXPECT_EQ(0, | 4279 0, web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset().width); |
| 4277 web_view_helper.WebView()->MainFrame()->GetScrollOffset().height); | 4280 EXPECT_EQ( |
| 4281 0, web_view_helper.WebView()->MainFrameImpl()->GetScrollOffset().height); |
| 4278 EXPECT_EQ(1.0f, web_view_helper.WebView()->PageScaleFactor()); | 4282 EXPECT_EQ(1.0f, web_view_helper.WebView()->PageScaleFactor()); |
| 4279 } | 4283 } |
| 4280 | 4284 |
| 4281 TEST_P(ParameterizedWebFrameTest, ReloadWhileProvisional) { | 4285 TEST_P(ParameterizedWebFrameTest, ReloadWhileProvisional) { |
| 4282 // Test that reloading while the previous load is still pending does not cause | 4286 // Test that reloading while the previous load is still pending does not cause |
| 4283 // the initial request to get lost. | 4287 // the initial request to get lost. |
| 4284 RegisterMockedHttpURLLoad("fixed_layout.html"); | 4288 RegisterMockedHttpURLLoad("fixed_layout.html"); |
| 4285 | 4289 |
| 4286 FrameTestHelpers::WebViewHelper web_view_helper; | 4290 FrameTestHelpers::WebViewHelper web_view_helper; |
| 4287 web_view_helper.Initialize(); | 4291 web_view_helper.Initialize(); |
| (...skipping 2029 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6317 nullptr, ConfigureAndroid); | 6321 nullptr, ConfigureAndroid); |
| 6318 | 6322 |
| 6319 WebViewBase* web_view_impl = web_view_helper.WebView(); | 6323 WebViewBase* web_view_impl = web_view_helper.WebView(); |
| 6320 ASSERT_TRUE(web_view_impl); | 6324 ASSERT_TRUE(web_view_impl); |
| 6321 LocalFrame* frame = web_view_impl->MainFrameImpl()->GetFrame(); | 6325 LocalFrame* frame = web_view_impl->MainFrameImpl()->GetFrame(); |
| 6322 ASSERT_TRUE(frame); | 6326 ASSERT_TRUE(frame); |
| 6323 | 6327 |
| 6324 web_view_helper.Resize(WebSize(100, 200)); | 6328 web_view_helper.Resize(WebSize(100, 200)); |
| 6325 | 6329 |
| 6326 // Scroll main frame to the bottom of the document | 6330 // Scroll main frame to the bottom of the document |
| 6327 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 400)); | 6331 web_view_impl->MainFrameImpl()->SetScrollOffset(WebSize(0, 400)); |
| 6328 EXPECT_SIZE_EQ(ScrollOffset(0, 400), frame->View()->GetScrollOffset()); | 6332 EXPECT_SIZE_EQ(ScrollOffset(0, 400), frame->View()->GetScrollOffset()); |
| 6329 | 6333 |
| 6330 web_view_impl->SetPageScaleFactor(2.0); | 6334 web_view_impl->SetPageScaleFactor(2.0); |
| 6331 | 6335 |
| 6332 // Scroll visual viewport to the top of the main frame. | 6336 // Scroll visual viewport to the top of the main frame. |
| 6333 VisualViewport& visual_viewport = frame->GetPage()->GetVisualViewport(); | 6337 VisualViewport& visual_viewport = frame->GetPage()->GetVisualViewport(); |
| 6334 visual_viewport.SetLocation(FloatPoint(0, 0)); | 6338 visual_viewport.SetLocation(FloatPoint(0, 0)); |
| 6335 EXPECT_SIZE_EQ(ScrollOffset(0, 0), visual_viewport.GetScrollOffset()); | 6339 EXPECT_SIZE_EQ(ScrollOffset(0, 0), visual_viewport.GetScrollOffset()); |
| 6336 | 6340 |
| 6337 // Tap at the top: there is nothing there. | 6341 // Tap at the top: there is nothing there. |
| (...skipping 1549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7887 WebViewBase* web_view = web_view_helper.WebView(); | 7891 WebViewBase* web_view = web_view_helper.WebView(); |
| 7888 LocalFrameView* frame_view = | 7892 LocalFrameView* frame_view = |
| 7889 web_view_helper.WebView()->MainFrameImpl()->GetFrameView(); | 7893 web_view_helper.WebView()->MainFrameImpl()->GetFrameView(); |
| 7890 | 7894 |
| 7891 float browser_controls_height = 40; | 7895 float browser_controls_height = 40; |
| 7892 web_view->ResizeWithBrowserControls(WebSize(100, 100), | 7896 web_view->ResizeWithBrowserControls(WebSize(100, 100), |
| 7893 browser_controls_height, false); | 7897 browser_controls_height, false); |
| 7894 web_view->SetPageScaleFactor(2.0f); | 7898 web_view->SetPageScaleFactor(2.0f); |
| 7895 web_view->UpdateAllLifecyclePhases(); | 7899 web_view->UpdateAllLifecyclePhases(); |
| 7896 | 7900 |
| 7897 web_view->MainFrame()->SetScrollOffset(WebSize(0, 2000)); | 7901 web_view->MainFrameImpl()->SetScrollOffset(WebSize(0, 2000)); |
| 7898 EXPECT_SIZE_EQ(ScrollOffset(0, 1900), frame_view->GetScrollOffset()); | 7902 EXPECT_SIZE_EQ(ScrollOffset(0, 1900), frame_view->GetScrollOffset()); |
| 7899 | 7903 |
| 7900 // Simulate the browser controls showing by 20px, thus shrinking the viewport | 7904 // Simulate the browser controls showing by 20px, thus shrinking the viewport |
| 7901 // and allowing it to scroll an additional 20px. | 7905 // and allowing it to scroll an additional 20px. |
| 7902 web_view->ApplyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7906 web_view->ApplyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7903 1.0f, 20.0f / browser_controls_height); | 7907 1.0f, 20.0f / browser_controls_height); |
| 7904 EXPECT_SIZE_EQ(ScrollOffset(0, 1920), frame_view->MaximumScrollOffset()); | 7908 EXPECT_SIZE_EQ(ScrollOffset(0, 1920), frame_view->MaximumScrollOffset()); |
| 7905 | 7909 |
| 7906 // Show more, make sure the scroll actually gets clamped. | 7910 // Show more, make sure the scroll actually gets clamped. |
| 7907 web_view->ApplyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7911 web_view->ApplyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7908 1.0f, 20.0f / browser_controls_height); | 7912 1.0f, 20.0f / browser_controls_height); |
| 7909 web_view->MainFrame()->SetScrollOffset(WebSize(0, 2000)); | 7913 web_view->MainFrameImpl()->SetScrollOffset(WebSize(0, 2000)); |
| 7910 EXPECT_SIZE_EQ(ScrollOffset(0, 1940), frame_view->GetScrollOffset()); | 7914 EXPECT_SIZE_EQ(ScrollOffset(0, 1940), frame_view->GetScrollOffset()); |
| 7911 | 7915 |
| 7912 // Hide until there's 10px showing. | 7916 // Hide until there's 10px showing. |
| 7913 web_view->ApplyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7917 web_view->ApplyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7914 1.0f, -30.0f / browser_controls_height); | 7918 1.0f, -30.0f / browser_controls_height); |
| 7915 EXPECT_SIZE_EQ(ScrollOffset(0, 1910), frame_view->MaximumScrollOffset()); | 7919 EXPECT_SIZE_EQ(ScrollOffset(0, 1910), frame_view->MaximumScrollOffset()); |
| 7916 | 7920 |
| 7917 // Simulate a LayoutEmbeddedContent::resize. The frame is resized to | 7921 // Simulate a LayoutEmbeddedContent::resize. The frame is resized to |
| 7918 // accomodate the browser controls and Blink's view of the browser controls | 7922 // accomodate the browser controls and Blink's view of the browser controls |
| 7919 // matches that of the CC | 7923 // matches that of the CC |
| (...skipping 4298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12218 if (obj->IsText()) { | 12222 if (obj->IsText()) { |
| 12219 LayoutText* layout_text = ToLayoutText(obj); | 12223 LayoutText* layout_text = ToLayoutText(obj); |
| 12220 text = layout_text->GetText(); | 12224 text = layout_text->GetText(); |
| 12221 break; | 12225 break; |
| 12222 } | 12226 } |
| 12223 } | 12227 } |
| 12224 EXPECT_EQ("foo alt", text.Utf8()); | 12228 EXPECT_EQ("foo alt", text.Utf8()); |
| 12225 } | 12229 } |
| 12226 | 12230 |
| 12227 } // namespace blink | 12231 } // namespace blink |
| OLD | NEW |