| 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 #include "core/frame/RemoteFrame.h" | 57 #include "core/frame/RemoteFrame.h" |
| 58 #include "core/frame/Settings.h" | 58 #include "core/frame/Settings.h" |
| 59 #include "core/frame/VisualViewport.h" | 59 #include "core/frame/VisualViewport.h" |
| 60 #include "core/html/HTMLBodyElement.h" | 60 #include "core/html/HTMLBodyElement.h" |
| 61 #include "core/html/HTMLDocument.h" | 61 #include "core/html/HTMLDocument.h" |
| 62 #include "core/html/HTMLFormElement.h" | 62 #include "core/html/HTMLFormElement.h" |
| 63 #include "core/html/HTMLMediaElement.h" | 63 #include "core/html/HTMLMediaElement.h" |
| 64 #include "core/html/ImageDocument.h" | 64 #include "core/html/ImageDocument.h" |
| 65 #include "core/input/EventHandler.h" | 65 #include "core/input/EventHandler.h" |
| 66 #include "core/layout/HitTestResult.h" | 66 #include "core/layout/HitTestResult.h" |
| 67 #include "core/layout/LayoutFullScreen.h" |
| 68 #include "core/layout/api/LayoutViewItem.h" |
| 67 #include "core/layout/compositing/PaintLayerCompositor.h" | 69 #include "core/layout/compositing/PaintLayerCompositor.h" |
| 68 #include "core/loader/DocumentLoader.h" | 70 #include "core/loader/DocumentLoader.h" |
| 69 #include "core/loader/DocumentThreadableLoader.h" | 71 #include "core/loader/DocumentThreadableLoader.h" |
| 70 #include "core/loader/DocumentThreadableLoaderClient.h" | 72 #include "core/loader/DocumentThreadableLoaderClient.h" |
| 71 #include "core/loader/FrameLoadRequest.h" | 73 #include "core/loader/FrameLoadRequest.h" |
| 72 #include "core/loader/ThreadableLoader.h" | 74 #include "core/loader/ThreadableLoader.h" |
| 73 #include "core/page/Page.h" | 75 #include "core/page/Page.h" |
| 74 #include "core/page/ScopedPageLoadDeferrer.h" | 76 #include "core/page/ScopedPageLoadDeferrer.h" |
| 75 #include "core/paint/PaintLayer.h" | 77 #include "core/paint/PaintLayer.h" |
| 76 #include "core/testing/NullExecutionContext.h" | 78 #include "core/testing/NullExecutionContext.h" |
| (...skipping 6350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6427 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); | 6429 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); |
| 6428 webViewHelper.webView()->settings()->setLoadWithOverviewMode(true); | 6430 webViewHelper.webView()->settings()->setLoadWithOverviewMode(true); |
| 6429 webViewHelper.webView()->settings()->setUseWideViewport(true); | 6431 webViewHelper.webView()->settings()->setUseWideViewport(true); |
| 6430 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); | 6432 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); |
| 6431 webViewHelper.webView()->updateAllLifecyclePhases(); | 6433 webViewHelper.webView()->updateAllLifecyclePhases(); |
| 6432 | 6434 |
| 6433 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView()
; | 6435 FrameView* frameView = webViewHelper.webView()->mainFrameImpl()->frameView()
; |
| 6434 EXPECT_LT(frameView->maximumScrollPosition().x(), 0); | 6436 EXPECT_LT(frameView->maximumScrollPosition().x(), 0); |
| 6435 } | 6437 } |
| 6436 | 6438 |
| 6437 TEST_F(WebFrameTest, FullscreenCleanTopLayerAndFullscreenStack) | |
| 6438 { | |
| 6439 FakeCompositingWebViewClient client; | |
| 6440 registerMockedHttpURLLoad("fullscreen_div.html"); | |
| 6441 FrameTestHelpers::WebViewHelper webViewHelper; | |
| 6442 int viewportWidth = 640; | |
| 6443 int viewportHeight = 480; | |
| 6444 client.m_screenInfo.rect.width = viewportWidth; | |
| 6445 client.m_screenInfo.rect.height = viewportHeight; | |
| 6446 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad( | |
| 6447 m_baseURL + "fullscreen_div.html", true, 0, &client, nullptr, configureA
ndroid); | |
| 6448 webViewImpl->resize(WebSize(viewportWidth, viewportHeight)); | |
| 6449 webViewImpl->updateAllLifecyclePhases(); | |
| 6450 | |
| 6451 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); | |
| 6452 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); | |
| 6453 Fullscreen& fullscreen = Fullscreen::from(*document); | |
| 6454 | |
| 6455 Element* divFullscreen = document->getElementById("div1"); | |
| 6456 fullscreen.requestFullscreen(*divFullscreen, Fullscreen::PrefixedRequest); | |
| 6457 webViewImpl->didEnterFullscreen(); | |
| 6458 ASSERT_TRUE(Fullscreen::isFullScreen(*document)); | |
| 6459 | |
| 6460 // Sanity check. We should have both in our stack. | |
| 6461 ASSERT_EQ(fullscreen.fullScreenElementStack().size(), 1UL); | |
| 6462 ASSERT_EQ(document->topLayerElements().size(), 2UL); | |
| 6463 | |
| 6464 fullscreen.exitFullscreen(); | |
| 6465 webViewImpl->didExitFullscreen(); | |
| 6466 | |
| 6467 ASSERT_EQ(fullscreen.fullScreenElementStack().size(), 0UL); | |
| 6468 ASSERT_EQ(document->topLayerElements().size(), 0UL); | |
| 6469 } | |
| 6470 | |
| 6471 TEST_P(ParameterizedWebFrameTest, FullscreenLayerSize) | 6439 TEST_P(ParameterizedWebFrameTest, FullscreenLayerSize) |
| 6472 { | 6440 { |
| 6473 FakeCompositingWebViewClient client; | 6441 FakeCompositingWebViewClient client; |
| 6474 registerMockedHttpURLLoad("fullscreen_div.html"); | 6442 registerMockedHttpURLLoad("fullscreen_div.html"); |
| 6475 FrameTestHelpers::WebViewHelper webViewHelper(this); | 6443 FrameTestHelpers::WebViewHelper webViewHelper(this); |
| 6476 int viewportWidth = 640; | 6444 int viewportWidth = 640; |
| 6477 int viewportHeight = 480; | 6445 int viewportHeight = 480; |
| 6478 client.m_screenInfo.rect.width = viewportWidth; | 6446 client.m_screenInfo.rect.width = viewportWidth; |
| 6479 client.m_screenInfo.rect.height = viewportHeight; | 6447 client.m_screenInfo.rect.height = viewportHeight; |
| 6480 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full
screen_div.html", true, nullptr, &client, nullptr, configureAndroid); | 6448 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full
screen_div.html", true, nullptr, &client, nullptr, configureAndroid); |
| 6481 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); | 6449 webViewHelper.resize(WebSize(viewportWidth, viewportHeight)); |
| 6482 webViewImpl->updateAllLifecyclePhases(); | 6450 webViewImpl->updateAllLifecyclePhases(); |
| 6483 | 6451 |
| 6484 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); | 6452 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); |
| 6485 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); | 6453 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); |
| 6486 Element* divFullscreen = document->getElementById("div1"); | 6454 Element* divFullscreen = document->getElementById("div1"); |
| 6487 Fullscreen::from(*document).requestFullscreen(*divFullscreen, Fullscreen::Pr
efixedRequest); | 6455 Fullscreen::from(*document).requestFullscreen(*divFullscreen, Fullscreen::Pr
efixedRequest); |
| 6488 webViewImpl->didEnterFullscreen(); | 6456 webViewImpl->didEnterFullscreen(); |
| 6489 webViewImpl->updateAllLifecyclePhases(); | 6457 webViewImpl->updateAllLifecyclePhases(); |
| 6490 ASSERT_TRUE(Fullscreen::isFullScreen(*document)); | 6458 ASSERT_TRUE(Fullscreen::isFullScreen(*document)); |
| 6491 | 6459 |
| 6492 // Verify that the element is sized to the viewport. | 6460 // Verify that the element is sized to the viewport. |
| 6493 Element* fullscreenElement = Fullscreen::currentFullScreenElementFrom(*docum
ent); | 6461 LayoutFullScreen* fullscreenLayoutObject = Fullscreen::from(*document).fullS
creenLayoutObject(); |
| 6494 LayoutBox* fullscreenLayoutObject = toLayoutBox(fullscreenElement->layoutObj
ect()); | |
| 6495 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalWidth().toInt()); | 6462 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalWidth().toInt()); |
| 6496 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalHeight().toInt()); | 6463 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalHeight().toInt()); |
| 6497 | 6464 |
| 6498 // Verify it's updated after a device rotation. | 6465 // Verify it's updated after a device rotation. |
| 6499 client.m_screenInfo.rect.width = viewportHeight; | 6466 client.m_screenInfo.rect.width = viewportHeight; |
| 6500 client.m_screenInfo.rect.height = viewportWidth; | 6467 client.m_screenInfo.rect.height = viewportWidth; |
| 6501 webViewHelper.resize(WebSize(viewportHeight, viewportWidth)); | 6468 webViewHelper.resize(WebSize(viewportHeight, viewportWidth)); |
| 6502 webViewImpl->updateAllLifecyclePhases(); | 6469 webViewImpl->updateAllLifecyclePhases(); |
| 6503 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalWidth().toInt()); | 6470 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalWidth().toInt()); |
| 6504 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalHeight().toInt()); | 6471 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalHeight().toInt()); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6588 webViewImpl->updateAllLifecyclePhases(); | 6555 webViewImpl->updateAllLifecyclePhases(); |
| 6589 | 6556 |
| 6590 Document* document = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame(
)->firstChild())->frame()->document(); | 6557 Document* document = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame(
)->firstChild())->frame()->document(); |
| 6591 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); | 6558 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); |
| 6592 Element* divFullscreen = document->getElementById("div1"); | 6559 Element* divFullscreen = document->getElementById("div1"); |
| 6593 Fullscreen::from(*document).requestFullscreen(*divFullscreen, Fullscreen::Pr
efixedRequest); | 6560 Fullscreen::from(*document).requestFullscreen(*divFullscreen, Fullscreen::Pr
efixedRequest); |
| 6594 webViewImpl->didEnterFullscreen(); | 6561 webViewImpl->didEnterFullscreen(); |
| 6595 webViewImpl->updateAllLifecyclePhases(); | 6562 webViewImpl->updateAllLifecyclePhases(); |
| 6596 | 6563 |
| 6597 // Verify that the element is sized to the viewport. | 6564 // Verify that the element is sized to the viewport. |
| 6598 Element* fullscreenElement = Fullscreen::currentFullScreenElementFrom(*docum
ent); | 6565 LayoutFullScreen* fullscreenLayoutObject = Fullscreen::from(*document).fullS
creenLayoutObject(); |
| 6599 LayoutBox* fullscreenLayoutObject = toLayoutBox(fullscreenElement->layoutObj
ect()); | |
| 6600 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalWidth().toInt()); | 6566 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalWidth().toInt()); |
| 6601 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalHeight().toInt()); | 6567 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalHeight().toInt()); |
| 6602 | 6568 |
| 6603 // Verify it's updated after a device rotation. | 6569 // Verify it's updated after a device rotation. |
| 6604 client.m_screenInfo.rect.width = viewportHeight; | 6570 client.m_screenInfo.rect.width = viewportHeight; |
| 6605 client.m_screenInfo.rect.height = viewportWidth; | 6571 client.m_screenInfo.rect.height = viewportWidth; |
| 6606 webViewHelper.resize(WebSize(viewportHeight, viewportWidth)); | 6572 webViewHelper.resize(WebSize(viewportHeight, viewportWidth)); |
| 6607 webViewImpl->updateAllLifecyclePhases(); | 6573 webViewImpl->updateAllLifecyclePhases(); |
| 6608 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalWidth().toInt()); | 6574 EXPECT_EQ(viewportHeight, fullscreenLayoutObject->logicalWidth().toInt()); |
| 6609 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalHeight().toInt()); | 6575 EXPECT_EQ(viewportWidth, fullscreenLayoutObject->logicalHeight().toInt()); |
| (...skipping 2259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8869 request.setRequestorOrigin(WebSecurityOrigin::createUnique()); | 8835 request.setRequestorOrigin(WebSecurityOrigin::createUnique()); |
| 8870 helper.webView()->mainFrameImpl()->loadRequest(request); | 8836 helper.webView()->mainFrameImpl()->loadRequest(request); |
| 8871 | 8837 |
| 8872 // Normally, the result of the JS url replaces the existing contents on the | 8838 // Normally, the result of the JS url replaces the existing contents on the |
| 8873 // Document. However, if the JS triggers a navigation, the contents should | 8839 // Document. However, if the JS triggers a navigation, the contents should |
| 8874 // not be replaced. | 8840 // not be replaced. |
| 8875 EXPECT_EQ("", toLocalFrame(helper.webView()->page()->mainFrame())->document(
)->documentElement()->innerText()); | 8841 EXPECT_EQ("", toLocalFrame(helper.webView()->page()->mainFrame())->document(
)->documentElement()->innerText()); |
| 8876 } | 8842 } |
| 8877 | 8843 |
| 8878 } // namespace blink | 8844 } // namespace blink |
| OLD | NEW |