Index: Source/web/FullscreenController.cpp |
diff --git a/Source/web/FullscreenController.cpp b/Source/web/FullscreenController.cpp |
index d14dccdfbc83f4eb34ebfc3f7c7aed033aa6fcd8..94a9ee5766d44f5826590a1ccc3f39ee244a9609 100644 |
--- a/Source/web/FullscreenController.cpp |
+++ b/Source/web/FullscreenController.cpp |
@@ -39,6 +39,7 @@ |
#include "platform/RuntimeEnabledFeatures.h" |
#include "public/web/WebFrame.h" |
#include "public/web/WebViewClient.h" |
+#include "web/WebSettingsImpl.h" |
#include "web/WebViewImpl.h" |
using namespace WebCore; |
@@ -91,8 +92,16 @@ void FullscreenController::didEnterFullScreen() |
if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()) { |
Element* element = FullscreenElementStack::currentFullScreenElementFrom(*doc); |
ASSERT(element); |
- if (isHTMLMediaElement(*element) && m_webViewImpl->layerTreeView()) |
- m_webViewImpl->layerTreeView()->setHasTransparentBackground(true); |
+ if (isHTMLMediaElement(*element)) { |
+ HTMLMediaElement* mediaElement = toHTMLMediaElement(element); |
+ if (mediaElement->webMediaPlayer() && mediaElement->webMediaPlayer()->canEnterFullscreen() |
+ // FIXME: There is no embedder-side handling in layout test mode. |
+ && !isRunningLayoutTest()) { |
+ mediaElement->webMediaPlayer()->enterFullscreen(); |
+ } |
+ if (m_webViewImpl->layerTreeView()) |
+ m_webViewImpl->layerTreeView()->setHasTransparentBackground(true); |
+ } |
} |
} |
} |
@@ -146,6 +155,9 @@ void FullscreenController::didExitFullScreen() |
void FullscreenController::enterFullScreenForElement(WebCore::Element* element) |
{ |
+ if (m_webViewImpl->settingsImpl()->disallowFullscreenForNonMediaElements() && !isHTMLMediaElement(element)) |
+ return; |
+ |
// We are already transitioning to fullscreen for a different element. |
if (m_provisionalFullScreenElement) { |
m_provisionalFullScreenElement = element; |
@@ -160,18 +172,6 @@ void FullscreenController::enterFullScreenForElement(WebCore::Element* element) |
return; |
} |
- if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() |
- && isHTMLMediaElement(element) |
- // FIXME: There is no embedder-side handling in layout test mode. |
- && !isRunningLayoutTest()) { |
- HTMLMediaElement* mediaElement = toHTMLMediaElement(element); |
- if (mediaElement->webMediaPlayer() && mediaElement->webMediaPlayer()->canEnterFullscreen()) { |
- mediaElement->webMediaPlayer()->enterFullscreen(); |
- m_provisionalFullScreenElement = element; |
- return; |
- } |
- } |
- |
// We need to transition to fullscreen mode. |
if (WebViewClient* client = m_webViewImpl->client()) { |
if (client->enterFullScreen()) |
@@ -184,15 +184,6 @@ void FullscreenController::exitFullScreenForElement(WebCore::Element* element) |
// The client is exiting full screen, so don't send a notification. |
if (m_isCancelingFullScreen) |
return; |
- if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() |
- && isHTMLMediaElement(element) |
- // FIXME: There is no embedder-side handling in layout test mode. |
- && !isRunningLayoutTest()) { |
- HTMLMediaElement* mediaElement = toHTMLMediaElement(element); |
- if (mediaElement->webMediaPlayer()) |
- mediaElement->webMediaPlayer()->exitFullscreen(); |
- return; |
- } |
if (WebViewClient* client = m_webViewImpl->client()) |
client->exitFullScreen(); |
} |