OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 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 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1465 | 1465 |
1466 // Make the page scale and scroll with the given paremeters. | 1466 // Make the page scale and scroll with the given paremeters. |
1467 webViewImpl->setPageScaleFactor(2.0f); | 1467 webViewImpl->setPageScaleFactor(2.0f); |
1468 webViewImpl->mainFrame()->setScrollOffset(WebSize(94, 111)); | 1468 webViewImpl->mainFrame()->setScrollOffset(WebSize(94, 111)); |
1469 EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); | 1469 EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); |
1470 EXPECT_EQ(94, webViewImpl->mainFrame()->scrollOffset().width); | 1470 EXPECT_EQ(94, webViewImpl->mainFrame()->scrollOffset().width); |
1471 EXPECT_EQ(111, webViewImpl->mainFrame()->scrollOffset().height); | 1471 EXPECT_EQ(111, webViewImpl->mainFrame()->scrollOffset().height); |
1472 LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFrame()); | 1472 LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFrame()); |
1473 mainFrameLocal->loader().saveScrollState(); | 1473 mainFrameLocal->loader().saveScrollState(); |
1474 EXPECT_EQ(2.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor()); | 1474 EXPECT_EQ(2.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor()); |
1475 EXPECT_EQ(94, mainFrameLocal->loader().currentItem()->scrollPoint().x()); | 1475 EXPECT_EQ(94, mainFrameLocal->loader().currentItem()->scrollOffset().width()); |
1476 EXPECT_EQ(111, mainFrameLocal->loader().currentItem()->scrollPoint().y()); | 1476 EXPECT_EQ(111, |
| 1477 mainFrameLocal->loader().currentItem()->scrollOffset().height()); |
1477 | 1478 |
1478 // Confirm that resetting the page state resets the saved scroll position. | 1479 // Confirm that resetting the page state resets the saved scroll position. |
1479 webViewImpl->resetScrollAndScaleState(); | 1480 webViewImpl->resetScrollAndScaleState(); |
1480 EXPECT_EQ(1.0f, webViewImpl->pageScaleFactor()); | 1481 EXPECT_EQ(1.0f, webViewImpl->pageScaleFactor()); |
1481 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width); | 1482 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width); |
1482 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); | 1483 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); |
1483 EXPECT_EQ(1.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor()); | 1484 EXPECT_EQ(1.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor()); |
1484 EXPECT_EQ(0, mainFrameLocal->loader().currentItem()->scrollPoint().x()); | 1485 EXPECT_EQ(0, mainFrameLocal->loader().currentItem()->scrollOffset().width()); |
1485 EXPECT_EQ(0, mainFrameLocal->loader().currentItem()->scrollPoint().y()); | 1486 EXPECT_EQ(0, mainFrameLocal->loader().currentItem()->scrollOffset().height()); |
1486 } | 1487 } |
1487 | 1488 |
1488 TEST_F(WebViewTest, BackForwardRestoreScroll) { | 1489 TEST_F(WebViewTest, BackForwardRestoreScroll) { |
1489 URLTestHelpers::registerMockedURLFromBaseURL( | 1490 URLTestHelpers::registerMockedURLFromBaseURL( |
1490 WebString::fromUTF8(m_baseURL.c_str()), | 1491 WebString::fromUTF8(m_baseURL.c_str()), |
1491 WebString::fromUTF8("back_forward_restore_scroll.html")); | 1492 WebString::fromUTF8("back_forward_restore_scroll.html")); |
1492 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad( | 1493 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad( |
1493 m_baseURL + "back_forward_restore_scroll.html"); | 1494 m_baseURL + "back_forward_restore_scroll.html"); |
1494 webViewImpl->resize(WebSize(640, 480)); | 1495 webViewImpl->resize(WebSize(640, 480)); |
1495 webViewImpl->updateAllLifecyclePhases(); | 1496 webViewImpl->updateAllLifecyclePhases(); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1561 | 1562 |
1562 // Enter fullscreen. | 1563 // Enter fullscreen. |
1563 Element* element = static_cast<Element*>( | 1564 Element* element = static_cast<Element*>( |
1564 webViewImpl->mainFrame()->document().getElementById("fullscreenElement")); | 1565 webViewImpl->mainFrame()->document().getElementById("fullscreenElement")); |
1565 webViewImpl->enterFullscreenForElement(element); | 1566 webViewImpl->enterFullscreenForElement(element); |
1566 webViewImpl->didEnterFullscreen(); | 1567 webViewImpl->didEnterFullscreen(); |
1567 webViewImpl->updateAllLifecyclePhases(); | 1568 webViewImpl->updateAllLifecyclePhases(); |
1568 | 1569 |
1569 // Sanity-check. There should be no scrolling possible. | 1570 // Sanity-check. There should be no scrolling possible. |
1570 ASSERT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); | 1571 ASSERT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); |
1571 ASSERT_EQ( | 1572 ASSERT_EQ(0, webViewImpl->mainFrameImpl() |
1572 0, | 1573 ->frameView() |
1573 webViewImpl->mainFrameImpl()->frameView()->maximumScrollPosition().y()); | 1574 ->maximumScrollOffset() |
| 1575 .height()); |
1574 | 1576 |
1575 // Confirm that after exiting and doing a layout, the scroll and scale | 1577 // Confirm that after exiting and doing a layout, the scroll and scale |
1576 // parameters are reset. The page sets display: none on overflowing elements | 1578 // parameters are reset. The page sets display: none on overflowing elements |
1577 // while in fullscreen so if we try to restore before the style and layout | 1579 // while in fullscreen so if we try to restore before the style and layout |
1578 // is applied the offsets will be clamped. | 1580 // is applied the offsets will be clamped. |
1579 webViewImpl->didExitFullscreen(); | 1581 webViewImpl->didExitFullscreen(); |
1580 EXPECT_TRUE(webViewImpl->mainFrameImpl()->frameView()->needsLayout()); | 1582 EXPECT_TRUE(webViewImpl->mainFrameImpl()->frameView()->needsLayout()); |
1581 webViewImpl->updateAllLifecyclePhases(); | 1583 webViewImpl->updateAllLifecyclePhases(); |
1582 | 1584 |
1583 EXPECT_EQ(2000, webViewImpl->mainFrame()->scrollOffset().height); | 1585 EXPECT_EQ(2000, webViewImpl->mainFrame()->scrollOffset().height); |
(...skipping 16 matching lines...) Expand all Loading... |
1600 | 1602 |
1601 // Enter fullscreen. | 1603 // Enter fullscreen. |
1602 Element* element = static_cast<Element*>( | 1604 Element* element = static_cast<Element*>( |
1603 webViewImpl->mainFrame()->document().getElementById("fullscreenElement")); | 1605 webViewImpl->mainFrame()->document().getElementById("fullscreenElement")); |
1604 webViewImpl->enterFullscreenForElement(element); | 1606 webViewImpl->enterFullscreenForElement(element); |
1605 webViewImpl->didEnterFullscreen(); | 1607 webViewImpl->didEnterFullscreen(); |
1606 webViewImpl->updateAllLifecyclePhases(); | 1608 webViewImpl->updateAllLifecyclePhases(); |
1607 | 1609 |
1608 // Sanity-check. There should be no scrolling possible. | 1610 // Sanity-check. There should be no scrolling possible. |
1609 ASSERT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); | 1611 ASSERT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); |
1610 ASSERT_EQ( | 1612 ASSERT_EQ(0, webViewImpl->mainFrameImpl() |
1611 0, | 1613 ->frameView() |
1612 webViewImpl->mainFrameImpl()->frameView()->maximumScrollPosition().y()); | 1614 ->maximumScrollOffset() |
| 1615 .height()); |
1613 | 1616 |
1614 // Exit and, without performing a layout, reenter fullscreen again. We | 1617 // Exit and, without performing a layout, reenter fullscreen again. We |
1615 // shouldn't try to restore the scroll and scale values when we layout to | 1618 // shouldn't try to restore the scroll and scale values when we layout to |
1616 // enter fullscreen. | 1619 // enter fullscreen. |
1617 webViewImpl->exitFullscreenForElement(element); | 1620 webViewImpl->exitFullscreenForElement(element); |
1618 webViewImpl->didExitFullscreen(); | 1621 webViewImpl->didExitFullscreen(); |
1619 webViewImpl->enterFullscreenForElement(element); | 1622 webViewImpl->enterFullscreenForElement(element); |
1620 webViewImpl->didEnterFullscreen(); | 1623 webViewImpl->didEnterFullscreen(); |
1621 webViewImpl->updateAllLifecyclePhases(); | 1624 webViewImpl->updateAllLifecyclePhases(); |
1622 | 1625 |
1623 // Sanity-check. There should be no scrolling possible. | 1626 // Sanity-check. There should be no scrolling possible. |
1624 ASSERT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); | 1627 ASSERT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); |
1625 ASSERT_EQ( | 1628 ASSERT_EQ(0, webViewImpl->mainFrameImpl() |
1626 0, | 1629 ->frameView() |
1627 webViewImpl->mainFrameImpl()->frameView()->maximumScrollPosition().y()); | 1630 ->maximumScrollOffset() |
| 1631 .height()); |
1628 | 1632 |
1629 // When we exit now, we should restore the original scroll value. | 1633 // When we exit now, we should restore the original scroll value. |
1630 webViewImpl->exitFullscreenForElement(element); | 1634 webViewImpl->exitFullscreenForElement(element); |
1631 webViewImpl->didExitFullscreen(); | 1635 webViewImpl->didExitFullscreen(); |
1632 webViewImpl->updateAllLifecyclePhases(); | 1636 webViewImpl->updateAllLifecyclePhases(); |
1633 | 1637 |
1634 EXPECT_EQ(2000, webViewImpl->mainFrame()->scrollOffset().height); | 1638 EXPECT_EQ(2000, webViewImpl->mainFrame()->scrollOffset().height); |
1635 } | 1639 } |
1636 | 1640 |
1637 TEST_F(WebViewTest, EnterFullscreenResetScrollAndScaleState) { | 1641 TEST_F(WebViewTest, EnterFullscreenResetScrollAndScaleState) { |
(...skipping 2402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4040 DevToolsEmulator* devToolsEmulator = webViewImpl->devToolsEmulator(); | 4044 DevToolsEmulator* devToolsEmulator = webViewImpl->devToolsEmulator(); |
4041 | 4045 |
4042 TransformationMatrix expectedMatrix; | 4046 TransformationMatrix expectedMatrix; |
4043 expectedMatrix.makeIdentity(); | 4047 expectedMatrix.makeIdentity(); |
4044 EXPECT_EQ(expectedMatrix, | 4048 EXPECT_EQ(expectedMatrix, |
4045 webViewImpl->getDeviceEmulationTransformForTesting()); | 4049 webViewImpl->getDeviceEmulationTransformForTesting()); |
4046 | 4050 |
4047 // Initial transform takes current page scale and scroll position into | 4051 // Initial transform takes current page scale and scroll position into |
4048 // account. | 4052 // account. |
4049 webViewImpl->setPageScaleFactor(1.5f); | 4053 webViewImpl->setPageScaleFactor(1.5f); |
4050 frameView->setScrollPosition(DoublePoint(100, 150), ProgrammaticScroll, | 4054 frameView->setScrollOffset(ScrollOffset(100, 150), ProgrammaticScroll, |
4051 ScrollBehaviorInstant); | 4055 ScrollBehaviorInstant); |
4052 devToolsEmulator->forceViewport(WebFloatPoint(50, 55), 2.f); | 4056 devToolsEmulator->forceViewport(WebFloatPoint(50, 55), 2.f); |
4053 expectedMatrix.makeIdentity() | 4057 expectedMatrix.makeIdentity() |
4054 .scale(2.f) | 4058 .scale(2.f) |
4055 .translate(-50, -55) | 4059 .translate(-50, -55) |
4056 .translate(100, 150) | 4060 .translate(100, 150) |
4057 .scale(1. / 1.5f); | 4061 .scale(1. / 1.5f); |
4058 EXPECT_EQ(expectedMatrix, | 4062 EXPECT_EQ(expectedMatrix, |
4059 webViewImpl->getDeviceEmulationTransformForTesting()); | 4063 webViewImpl->getDeviceEmulationTransformForTesting()); |
4060 // Page scroll and scale are irrelevant for visibleContentRect. | 4064 // Page scroll and scale are irrelevant for visibleContentRect. |
4061 EXPECT_EQ(IntRect(50, 55, 50, 75), | 4065 EXPECT_EQ(IntRect(50, 55, 50, 75), |
4062 *devToolsEmulator->visibleContentRectForPainting()); | 4066 *devToolsEmulator->visibleContentRectForPainting()); |
4063 | 4067 |
4064 // Transform adapts to scroll changes. | 4068 // Transform adapts to scroll changes. |
4065 frameView->setScrollPosition(DoublePoint(50, 55), ProgrammaticScroll, | 4069 frameView->setScrollOffset(ScrollOffset(50, 55), ProgrammaticScroll, |
4066 ScrollBehaviorInstant); | 4070 ScrollBehaviorInstant); |
4067 expectedMatrix.makeIdentity() | 4071 expectedMatrix.makeIdentity() |
4068 .scale(2.f) | 4072 .scale(2.f) |
4069 .translate(-50, -55) | 4073 .translate(-50, -55) |
4070 .translate(50, 55) | 4074 .translate(50, 55) |
4071 .scale(1. / 1.5f); | 4075 .scale(1. / 1.5f); |
4072 EXPECT_EQ(expectedMatrix, | 4076 EXPECT_EQ(expectedMatrix, |
4073 webViewImpl->getDeviceEmulationTransformForTesting()); | 4077 webViewImpl->getDeviceEmulationTransformForTesting()); |
4074 // visibleContentRect doesn't change. | 4078 // visibleContentRect doesn't change. |
4075 EXPECT_EQ(IntRect(50, 55, 50, 75), | 4079 EXPECT_EQ(IntRect(50, 55, 50, 75), |
4076 *devToolsEmulator->visibleContentRectForPainting()); | 4080 *devToolsEmulator->visibleContentRectForPainting()); |
4077 | 4081 |
4078 // Transform adapts to page scale changes. | 4082 // Transform adapts to page scale changes. |
4079 webViewImpl->setPageScaleFactor(2.f); | 4083 webViewImpl->setPageScaleFactor(2.f); |
4080 expectedMatrix.makeIdentity() | 4084 expectedMatrix.makeIdentity() |
4081 .scale(2.f) | 4085 .scale(2.f) |
4082 .translate(-50, -55) | 4086 .translate(-50, -55) |
4083 .translate(50, 55) | 4087 .translate(50, 55) |
4084 .scale(1. / 2.f); | 4088 .scale(1. / 2.f); |
4085 EXPECT_EQ(expectedMatrix, | 4089 EXPECT_EQ(expectedMatrix, |
4086 webViewImpl->getDeviceEmulationTransformForTesting()); | 4090 webViewImpl->getDeviceEmulationTransformForTesting()); |
4087 // visibleContentRect doesn't change. | 4091 // visibleContentRect doesn't change. |
4088 EXPECT_EQ(IntRect(50, 55, 50, 75), | 4092 EXPECT_EQ(IntRect(50, 55, 50, 75), |
4089 *devToolsEmulator->visibleContentRectForPainting()); | 4093 *devToolsEmulator->visibleContentRectForPainting()); |
4090 } | 4094 } |
4091 | 4095 |
4092 } // namespace blink | 4096 } // namespace blink |
OLD | NEW |