| 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 7336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7347 webViewHelper.initializeAndLoad("about:blank"); | 7347 webViewHelper.initializeAndLoad("about:blank"); |
| 7348 webViewHelper.resize(WebSize(200, 200)); | 7348 webViewHelper.resize(WebSize(200, 200)); |
| 7349 webViewHelper.webView()->updateAllLifecyclePhases(); | 7349 webViewHelper.webView()->updateAllLifecyclePhases(); |
| 7350 | 7350 |
| 7351 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView(); | 7351 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView(); |
| 7352 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), frameView->frameRect()); | 7352 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), frameView->frameRect()); |
| 7353 frameView->setFrameRect(IntRect(100, 100, 200, 200)); | 7353 frameView->setFrameRect(IntRect(100, 100, 200, 200)); |
| 7354 EXPECT_RECT_EQ(IntRect(100, 100, 200, 200), frameView->frameRect()); | 7354 EXPECT_RECT_EQ(IntRect(100, 100, 200, 200), frameView->frameRect()); |
| 7355 } | 7355 } |
| 7356 | 7356 |
| 7357 TEST_F(WebFrameTest, FrameViewScrollAccountsForTopControls) { | 7357 TEST_F(WebFrameTest, FrameViewScrollAccountsForBrowserControls) { |
| 7358 FakeCompositingWebViewClient client; | 7358 FakeCompositingWebViewClient client; |
| 7359 registerMockedHttpURLLoad("long_scroll.html"); | 7359 registerMockedHttpURLLoad("long_scroll.html"); |
| 7360 FrameTestHelpers::WebViewHelper webViewHelper; | 7360 FrameTestHelpers::WebViewHelper webViewHelper; |
| 7361 webViewHelper.initializeAndLoad(m_baseURL + "long_scroll.html", true, nullptr, | 7361 webViewHelper.initializeAndLoad(m_baseURL + "long_scroll.html", true, nullptr, |
| 7362 &client, nullptr, configureAndroid); | 7362 &client, nullptr, configureAndroid); |
| 7363 | 7363 |
| 7364 WebViewImpl* webView = webViewHelper.webView(); | 7364 WebViewImpl* webView = webViewHelper.webView(); |
| 7365 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView(); | 7365 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView(); |
| 7366 | 7366 |
| 7367 float topControlsHeight = 40; | 7367 float browserControlsHeight = 40; |
| 7368 webView->resizeWithTopControls(WebSize(100, 100), topControlsHeight, false); | 7368 webView->resizeWithBrowserControls(WebSize(100, 100), browserControlsHeight, |
| 7369 false); |
| 7369 webView->setPageScaleFactor(2.0f); | 7370 webView->setPageScaleFactor(2.0f); |
| 7370 webView->updateAllLifecyclePhases(); | 7371 webView->updateAllLifecyclePhases(); |
| 7371 | 7372 |
| 7372 webView->mainFrame()->setScrollOffset(WebSize(0, 2000)); | 7373 webView->mainFrame()->setScrollOffset(WebSize(0, 2000)); |
| 7373 EXPECT_SIZE_EQ(ScrollOffset(0, 1900), frameView->scrollOffset()); | 7374 EXPECT_SIZE_EQ(ScrollOffset(0, 1900), frameView->scrollOffset()); |
| 7374 | 7375 |
| 7375 // Simulate the top controls showing by 20px, thus shrinking the viewport | 7376 // Simulate the browser controls showing by 20px, thus shrinking the viewport |
| 7376 // and allowing it to scroll an additional 20px. | 7377 // and allowing it to scroll an additional 20px. |
| 7377 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7378 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7378 1.0f, 20.0f / topControlsHeight); | 7379 1.0f, 20.0f / browserControlsHeight); |
| 7379 EXPECT_SIZE_EQ(ScrollOffset(0, 1920), frameView->maximumScrollOffset()); | 7380 EXPECT_SIZE_EQ(ScrollOffset(0, 1920), frameView->maximumScrollOffset()); |
| 7380 | 7381 |
| 7381 // Show more, make sure the scroll actually gets clamped. | 7382 // Show more, make sure the scroll actually gets clamped. |
| 7382 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7383 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7383 1.0f, 20.0f / topControlsHeight); | 7384 1.0f, 20.0f / browserControlsHeight); |
| 7384 webView->mainFrame()->setScrollOffset(WebSize(0, 2000)); | 7385 webView->mainFrame()->setScrollOffset(WebSize(0, 2000)); |
| 7385 EXPECT_SIZE_EQ(ScrollOffset(0, 1940), frameView->scrollOffset()); | 7386 EXPECT_SIZE_EQ(ScrollOffset(0, 1940), frameView->scrollOffset()); |
| 7386 | 7387 |
| 7387 // Hide until there's 10px showing. | 7388 // Hide until there's 10px showing. |
| 7388 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7389 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7389 1.0f, -30.0f / topControlsHeight); | 7390 1.0f, -30.0f / browserControlsHeight); |
| 7390 EXPECT_SIZE_EQ(ScrollOffset(0, 1910), frameView->maximumScrollOffset()); | 7391 EXPECT_SIZE_EQ(ScrollOffset(0, 1910), frameView->maximumScrollOffset()); |
| 7391 | 7392 |
| 7392 // Simulate a LayoutPart::resize. The frame is resized to accomodate | 7393 // Simulate a LayoutPart::resize. The frame is resized to accomodate |
| 7393 // the top controls and Blink's view of the top controls matches that of | 7394 // the browser controls and Blink's view of the browser controls matches that |
| 7394 // the CC | 7395 // of the CC |
| 7395 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7396 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7396 1.0f, 30.0f / topControlsHeight); | 7397 1.0f, 30.0f / browserControlsHeight); |
| 7397 webView->resizeWithTopControls(WebSize(100, 60), 40.0f, true); | 7398 webView->resizeWithBrowserControls(WebSize(100, 60), 40.0f, true); |
| 7398 webView->updateAllLifecyclePhases(); | 7399 webView->updateAllLifecyclePhases(); |
| 7399 EXPECT_SIZE_EQ(ScrollOffset(0, 1940), frameView->maximumScrollOffset()); | 7400 EXPECT_SIZE_EQ(ScrollOffset(0, 1940), frameView->maximumScrollOffset()); |
| 7400 | 7401 |
| 7401 // Now simulate hiding. | 7402 // Now simulate hiding. |
| 7402 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7403 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7403 1.0f, -10.0f / topControlsHeight); | 7404 1.0f, -10.0f / browserControlsHeight); |
| 7404 EXPECT_SIZE_EQ(ScrollOffset(0, 1930), frameView->maximumScrollOffset()); | 7405 EXPECT_SIZE_EQ(ScrollOffset(0, 1930), frameView->maximumScrollOffset()); |
| 7405 | 7406 |
| 7406 // Reset to original state: 100px widget height, top controls fully hidden. | 7407 // Reset to original state: 100px widget height, browser controls fully |
| 7408 // hidden. |
| 7407 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7409 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7408 1.0f, -30.0f / topControlsHeight); | 7410 1.0f, -30.0f / browserControlsHeight); |
| 7409 webView->resizeWithTopControls(WebSize(100, 100), topControlsHeight, false); | 7411 webView->resizeWithBrowserControls(WebSize(100, 100), browserControlsHeight, |
| 7412 false); |
| 7410 webView->updateAllLifecyclePhases(); | 7413 webView->updateAllLifecyclePhases(); |
| 7411 EXPECT_SIZE_EQ(ScrollOffset(0, 1900), frameView->maximumScrollOffset()); | 7414 EXPECT_SIZE_EQ(ScrollOffset(0, 1900), frameView->maximumScrollOffset()); |
| 7412 | 7415 |
| 7413 // Show the top controls by just 1px, since we're zoomed in to 2X, that | 7416 // Show the browser controls by just 1px, since we're zoomed in to 2X, that |
| 7414 // should allow an extra 0.5px of scrolling in the visual viewport. Make | 7417 // should allow an extra 0.5px of scrolling in the visual viewport. Make |
| 7415 // sure we're not losing any pixels when applying the adjustment on the | 7418 // sure we're not losing any pixels when applying the adjustment on the |
| 7416 // main frame. | 7419 // main frame. |
| 7417 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7420 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7418 1.0f, 1.0f / topControlsHeight); | 7421 1.0f, 1.0f / browserControlsHeight); |
| 7419 EXPECT_SIZE_EQ(ScrollOffset(0, 1901), frameView->maximumScrollOffset()); | 7422 EXPECT_SIZE_EQ(ScrollOffset(0, 1901), frameView->maximumScrollOffset()); |
| 7420 | 7423 |
| 7421 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), | 7424 webView->applyViewportDeltas(WebFloatSize(), WebFloatSize(), WebFloatSize(), |
| 7422 1.0f, 2.0f / topControlsHeight); | 7425 1.0f, 2.0f / browserControlsHeight); |
| 7423 EXPECT_SIZE_EQ(ScrollOffset(0, 1903), frameView->maximumScrollOffset()); | 7426 EXPECT_SIZE_EQ(ScrollOffset(0, 1903), frameView->maximumScrollOffset()); |
| 7424 } | 7427 } |
| 7425 | 7428 |
| 7426 TEST_F(WebFrameTest, MaximumScrollPositionCanBeNegative) { | 7429 TEST_F(WebFrameTest, MaximumScrollPositionCanBeNegative) { |
| 7427 registerMockedHttpURLLoad("rtl-overview-mode.html"); | 7430 registerMockedHttpURLLoad("rtl-overview-mode.html"); |
| 7428 | 7431 |
| 7429 FixedLayoutTestWebViewClient client; | 7432 FixedLayoutTestWebViewClient client; |
| 7430 client.m_screenInfo.deviceScaleFactor = 1; | 7433 client.m_screenInfo.deviceScaleFactor = 1; |
| 7431 int viewportWidth = 640; | 7434 int viewportWidth = 640; |
| 7432 int viewportHeight = 480; | 7435 int viewportHeight = 480; |
| (...skipping 2827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10260 webViewHelper.webView()->handleInputEvent(endEvent); | 10263 webViewHelper.webView()->handleInputEvent(endEvent); |
| 10261 webViewHelper.webView()->handleInputEvent(updateEvent); | 10264 webViewHelper.webView()->handleInputEvent(updateEvent); |
| 10262 | 10265 |
| 10263 // Try a full Begin/Update/End cycle. | 10266 // Try a full Begin/Update/End cycle. |
| 10264 webViewHelper.webView()->handleInputEvent(beginEvent); | 10267 webViewHelper.webView()->handleInputEvent(beginEvent); |
| 10265 webViewHelper.webView()->handleInputEvent(updateEvent); | 10268 webViewHelper.webView()->handleInputEvent(updateEvent); |
| 10266 webViewHelper.webView()->handleInputEvent(endEvent); | 10269 webViewHelper.webView()->handleInputEvent(endEvent); |
| 10267 } | 10270 } |
| 10268 | 10271 |
| 10269 } // namespace blink | 10272 } // namespace blink |
| OLD | NEW |