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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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/loader/DocumentThreadableLoader.h" | 64 #include "core/loader/DocumentThreadableLoader.h" |
65 #include "core/loader/DocumentThreadableLoaderClient.h" | 65 #include "core/loader/DocumentThreadableLoaderClient.h" |
66 #include "core/loader/FrameLoadRequest.h" | 66 #include "core/loader/FrameLoadRequest.h" |
67 #include "core/loader/ThreadableLoader.h" | 67 #include "core/loader/ThreadableLoader.h" |
68 #include "core/page/EventHandler.h" | 68 #include "core/page/EventHandler.h" |
69 #include "core/page/Page.h" | 69 #include "core/page/Page.h" |
70 #include "core/rendering/HitTestResult.h" | 70 #include "core/rendering/HitTestResult.h" |
71 #include "core/rendering/RenderFullScreen.h" | |
72 #include "core/rendering/RenderView.h" | 71 #include "core/rendering/RenderView.h" |
73 #include "core/rendering/compositing/RenderLayerCompositor.h" | 72 #include "core/rendering/compositing/RenderLayerCompositor.h" |
74 #include "core/testing/NullExecutionContext.h" | 73 #include "core/testing/NullExecutionContext.h" |
75 #include "core/testing/URLTestHelpers.h" | 74 #include "core/testing/URLTestHelpers.h" |
76 #include "modules/mediastream/MediaStream.h" | 75 #include "modules/mediastream/MediaStream.h" |
77 #include "modules/mediastream/MediaStreamRegistry.h" | 76 #include "modules/mediastream/MediaStreamRegistry.h" |
78 #include "platform/DragImage.h" | 77 #include "platform/DragImage.h" |
79 #include "platform/RuntimeEnabledFeatures.h" | 78 #include "platform/RuntimeEnabledFeatures.h" |
80 #include "platform/UserGestureIndicator.h" | 79 #include "platform/UserGestureIndicator.h" |
81 #include "platform/geometry/FloatRect.h" | 80 #include "platform/geometry/FloatRect.h" |
(...skipping 6083 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6165 // Show the top controls by just 1px, since we're zoomed in to 2X, that | 6164 // Show the top controls by just 1px, since we're zoomed in to 2X, that |
6166 // should allow an extra 0.5px of scrolling, but since we quantize to ints | 6165 // should allow an extra 0.5px of scrolling, but since we quantize to ints |
6167 // it should clamp such that we don't show anything outside bounds. | 6166 // it should clamp such that we don't show anything outside bounds. |
6168 webView->applyViewportDeltas(WebSize(0, 0), 1.0f, 1.0f); | 6167 webView->applyViewportDeltas(WebSize(0, 0), 1.0f, 1.0f); |
6169 EXPECT_POINT_EQ(IntPoint(50, 50), frameView->maximumScrollPosition()); | 6168 EXPECT_POINT_EQ(IntPoint(50, 50), frameView->maximumScrollPosition()); |
6170 | 6169 |
6171 webView->applyViewportDeltas(WebSize(0, 0), 1.0f, 2.0f); | 6170 webView->applyViewportDeltas(WebSize(0, 0), 1.0f, 2.0f); |
6172 EXPECT_POINT_EQ(IntPoint(50, 51), frameView->maximumScrollPosition()); | 6171 EXPECT_POINT_EQ(IntPoint(50, 51), frameView->maximumScrollPosition()); |
6173 } | 6172 } |
6174 | 6173 |
| 6174 TEST_F(WebFrameTest, FullscreenCleanTopLayerAndFullscreenStack) |
| 6175 { |
| 6176 FakeCompositingWebViewClient client; |
| 6177 registerMockedHttpURLLoad("fullscreen_div.html"); |
| 6178 FrameTestHelpers::WebViewHelper webViewHelper; |
| 6179 int viewportWidth = 640; |
| 6180 int viewportHeight = 480; |
| 6181 client.m_screenInfo.rect.width = viewportWidth; |
| 6182 client.m_screenInfo.rect.height = viewportHeight; |
| 6183 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full
screen_div.html", true, 0, &client, configurePinchVirtualViewport); |
| 6184 webViewImpl->resize(WebSize(viewportWidth, viewportHeight)); |
| 6185 webViewImpl->layout(); |
| 6186 |
| 6187 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); |
| 6188 Document* document = toWebLocalFrameImpl(webViewImpl->mainFrame())->frame()-
>document(); |
| 6189 Fullscreen& fullscreen = Fullscreen::from(*document); |
| 6190 |
| 6191 Element* divFullscreen = document->getElementById("div1"); |
| 6192 fullscreen.requestFullscreen(*divFullscreen, Fullscreen::PrefixedRequest); |
| 6193 webViewImpl->didEnterFullScreen(); |
| 6194 ASSERT_TRUE(Fullscreen::isFullScreen(*document)); |
| 6195 |
| 6196 // Sanity check. We should have both in our stack. |
| 6197 ASSERT_EQ(fullscreen.fullScreenElementStack().size(), 1UL); |
| 6198 ASSERT_EQ(document->topLayerElements().size(), 2UL); |
| 6199 |
| 6200 fullscreen.exitFullscreen(); |
| 6201 webViewImpl->didExitFullScreen(); |
| 6202 |
| 6203 ASSERT_EQ(fullscreen.fullScreenElementStack().size(), 0UL); |
| 6204 ASSERT_EQ(document->topLayerElements().size(), 0UL); |
| 6205 } |
| 6206 |
6175 TEST_F(WebFrameTest, FullscreenLayerSize) | 6207 TEST_F(WebFrameTest, FullscreenLayerSize) |
6176 { | 6208 { |
6177 FakeCompositingWebViewClient client; | 6209 FakeCompositingWebViewClient client; |
6178 registerMockedHttpURLLoad("fullscreen_div.html"); | 6210 registerMockedHttpURLLoad("fullscreen_div.html"); |
6179 FrameTestHelpers::WebViewHelper webViewHelper; | 6211 FrameTestHelpers::WebViewHelper webViewHelper; |
6180 int viewportWidth = 640; | 6212 int viewportWidth = 640; |
6181 int viewportHeight = 480; | 6213 int viewportHeight = 480; |
6182 client.m_screenInfo.rect.width = viewportWidth; | 6214 client.m_screenInfo.rect.width = viewportWidth; |
6183 client.m_screenInfo.rect.height = viewportHeight; | 6215 client.m_screenInfo.rect.height = viewportHeight; |
6184 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full
screen_div.html", true, 0, &client, configurePinchVirtualViewport); | 6216 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full
screen_div.html", true, 0, &client, configurePinchVirtualViewport); |
6185 webViewImpl->resize(WebSize(viewportWidth, viewportHeight)); | 6217 webViewImpl->resize(WebSize(viewportWidth, viewportHeight)); |
6186 webViewImpl->layout(); | 6218 webViewImpl->layout(); |
6187 | 6219 |
6188 Document* document = toWebLocalFrameImpl(webViewImpl->mainFrame())->frame()-
>document(); | 6220 Document* document = toWebLocalFrameImpl(webViewImpl->mainFrame())->frame()-
>document(); |
6189 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); | 6221 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); |
6190 Element* divFullscreen = document->getElementById("div1"); | 6222 Element* divFullscreen = document->getElementById("div1"); |
6191 Fullscreen::from(*document).requestFullscreen(*divFullscreen, Fullscreen::Pr
efixedRequest); | 6223 Fullscreen::from(*document).requestFullscreen(*divFullscreen, Fullscreen::Pr
efixedRequest); |
6192 webViewImpl->didEnterFullScreen(); | 6224 webViewImpl->didEnterFullScreen(); |
6193 webViewImpl->layout(); | 6225 webViewImpl->layout(); |
6194 ASSERT_TRUE(Fullscreen::isFullScreen(*document)); | 6226 ASSERT_TRUE(Fullscreen::isFullScreen(*document)); |
6195 | 6227 |
6196 // Verify that the element is sized to the viewport. | 6228 // Verify that the element is sized to the viewport. |
6197 RenderFullScreen* fullscreenRenderer = Fullscreen::from(*document).fullScree
nRenderer(); | 6229 Element* fullscreenElement = Fullscreen::currentFullScreenElementFrom(*docum
ent); |
| 6230 RenderBox* fullscreenRenderer = toRenderBox(fullscreenElement->renderer()); |
6198 EXPECT_EQ(viewportWidth, fullscreenRenderer->logicalWidth().toInt()); | 6231 EXPECT_EQ(viewportWidth, fullscreenRenderer->logicalWidth().toInt()); |
6199 EXPECT_EQ(viewportHeight, fullscreenRenderer->logicalHeight().toInt()); | 6232 EXPECT_EQ(viewportHeight, fullscreenRenderer->logicalHeight().toInt()); |
6200 | 6233 |
6201 // Verify it's updated after a device rotation. | 6234 // Verify it's updated after a device rotation. |
6202 client.m_screenInfo.rect.width = viewportHeight; | 6235 client.m_screenInfo.rect.width = viewportHeight; |
6203 client.m_screenInfo.rect.height = viewportWidth; | 6236 client.m_screenInfo.rect.height = viewportWidth; |
6204 webViewImpl->resize(WebSize(viewportHeight, viewportWidth)); | 6237 webViewImpl->resize(WebSize(viewportHeight, viewportWidth)); |
6205 webViewImpl->layout(); | 6238 webViewImpl->layout(); |
6206 EXPECT_EQ(viewportHeight, fullscreenRenderer->logicalWidth().toInt()); | 6239 EXPECT_EQ(viewportHeight, fullscreenRenderer->logicalWidth().toInt()); |
6207 EXPECT_EQ(viewportWidth, fullscreenRenderer->logicalHeight().toInt()); | 6240 EXPECT_EQ(viewportWidth, fullscreenRenderer->logicalHeight().toInt()); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6286 webViewImpl->layout(); | 6319 webViewImpl->layout(); |
6287 | 6320 |
6288 Document* document = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame(
)->firstChild())->frame()->document(); | 6321 Document* document = toWebLocalFrameImpl(webViewHelper.webView()->mainFrame(
)->firstChild())->frame()->document(); |
6289 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); | 6322 UserGestureIndicator gesture(DefinitelyProcessingUserGesture); |
6290 Element* divFullscreen = document->getElementById("div1"); | 6323 Element* divFullscreen = document->getElementById("div1"); |
6291 Fullscreen::from(*document).requestFullscreen(*divFullscreen, Fullscreen::Pr
efixedRequest); | 6324 Fullscreen::from(*document).requestFullscreen(*divFullscreen, Fullscreen::Pr
efixedRequest); |
6292 webViewImpl->didEnterFullScreen(); | 6325 webViewImpl->didEnterFullScreen(); |
6293 webViewImpl->layout(); | 6326 webViewImpl->layout(); |
6294 | 6327 |
6295 // Verify that the element is sized to the viewport. | 6328 // Verify that the element is sized to the viewport. |
6296 RenderFullScreen* fullscreenRenderer = Fullscreen::from(*document).fullScree
nRenderer(); | 6329 Element* fullscreenElement = Fullscreen::currentFullScreenElementFrom(*docum
ent); |
| 6330 RenderBox* fullscreenRenderer = toRenderBox(fullscreenElement->renderer()); |
6297 EXPECT_EQ(viewportWidth, fullscreenRenderer->logicalWidth().toInt()); | 6331 EXPECT_EQ(viewportWidth, fullscreenRenderer->logicalWidth().toInt()); |
6298 EXPECT_EQ(viewportHeight, fullscreenRenderer->logicalHeight().toInt()); | 6332 EXPECT_EQ(viewportHeight, fullscreenRenderer->logicalHeight().toInt()); |
6299 | 6333 |
6300 // Verify it's updated after a device rotation. | 6334 // Verify it's updated after a device rotation. |
6301 client.m_screenInfo.rect.width = viewportHeight; | 6335 client.m_screenInfo.rect.width = viewportHeight; |
6302 client.m_screenInfo.rect.height = viewportWidth; | 6336 client.m_screenInfo.rect.height = viewportWidth; |
6303 webViewImpl->resize(WebSize(viewportHeight, viewportWidth)); | 6337 webViewImpl->resize(WebSize(viewportHeight, viewportWidth)); |
6304 webViewImpl->layout(); | 6338 webViewImpl->layout(); |
6305 EXPECT_EQ(viewportHeight, fullscreenRenderer->logicalWidth().toInt()); | 6339 EXPECT_EQ(viewportHeight, fullscreenRenderer->logicalWidth().toInt()); |
6306 EXPECT_EQ(viewportWidth, fullscreenRenderer->logicalHeight().toInt()); | 6340 EXPECT_EQ(viewportWidth, fullscreenRenderer->logicalHeight().toInt()); |
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6924 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); | 6958 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); |
6925 | 6959 |
6926 // Neither should a page reload. | 6960 // Neither should a page reload. |
6927 localFrame->reload(); | 6961 localFrame->reload(); |
6928 EXPECT_EQ(4u, frameClient.provisionalLoadCount()); | 6962 EXPECT_EQ(4u, frameClient.provisionalLoadCount()); |
6929 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition()); | 6963 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition()); |
6930 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); | 6964 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); |
6931 } | 6965 } |
6932 | 6966 |
6933 } // namespace | 6967 } // namespace |
OLD | NEW |