Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2480)

Unified Diff: Source/web/FullscreenController.cpp

Issue 22454003: Support subtitles for native fullscreen video (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: add dangling pointer check Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/web/FullscreenController.cpp
diff --git a/Source/web/FullscreenController.cpp b/Source/web/FullscreenController.cpp
index f4154f9cfc598a860636a6582b78e4666178ce34..f8d13264453d0d2cfedcb03e7b3af6400734597a 100644
--- a/Source/web/FullscreenController.cpp
+++ b/Source/web/FullscreenController.cpp
@@ -31,6 +31,7 @@
#include "config.h"
#include "FullscreenController.h"
+#include "RuntimeEnabledFeatures.h"
#include "WebFrame.h"
#include "WebViewClient.h"
#include "WebViewImpl.h"
@@ -38,6 +39,7 @@
#include "core/dom/FullscreenElementStack.h"
#include "core/html/HTMLMediaElement.h"
#include "core/page/Frame.h"
+#include "core/platform/LayoutTestSupport.h"
using namespace WebCore;
@@ -83,6 +85,12 @@ void FullscreenController::didEnterFullScreen()
}
FullscreenElementStack::from(doc)->webkitDidEnterFullScreenForElement(0);
+ if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()) {
+ Element* element = FullscreenElementStack::currentFullScreenElementFrom(doc);
+ ASSERT(element);
+ if (element->isMediaElement() && m_webViewImpl->layerTreeView())
+ m_webViewImpl->layerTreeView()->setHasTransparentBackground(true);
+ }
}
}
}
@@ -103,6 +111,8 @@ void FullscreenController::willExitFullScreen()
fullscreen->webkitCancelFullScreen();
m_isCancelingFullScreen = false;
fullscreen->webkitWillExitFullScreenForElement(0);
+ if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && m_webViewImpl->layerTreeView())
+ m_webViewImpl->layerTreeView()->setHasTransparentBackground(m_webViewImpl->isTransparent());
}
}
}
@@ -146,16 +156,17 @@ void FullscreenController::enterFullScreenForElement(WebCore::Element* element)
return;
}
-#if USE(NATIVE_FULLSCREEN_VIDEO)
- if (element && element->isMediaElement()) {
+ if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()
+ && element && element->isMediaElement()
+ // FIXME: There is no embedder-side handling in layout test mode.
+ && !isRunningLayoutTest()) {
HTMLMediaElement* mediaElement = toHTMLMediaElement(element);
- if (mediaElement->player() && mediaElement->player()->canEnterFullscreen()) {
- mediaElement->player()->enterFullscreen();
+ if (mediaElement->player() && mediaElement->player()->canShowFullscreenOverlay()) {
+ mediaElement->player()->showFullscreenOverlay();
m_provisionalFullScreenElement = element;
+ return;
}
- return;
}
-#endif
// We need to transition to fullscreen mode.
if (WebViewClient* client = m_webViewImpl->client()) {
@@ -169,14 +180,15 @@ void FullscreenController::exitFullScreenForElement(WebCore::Element* element)
// The client is exiting full screen, so don't send a notification.
if (m_isCancelingFullScreen)
return;
-#if USE(NATIVE_FULLSCREEN_VIDEO)
- if (element && element->isMediaElement()) {
+ if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()
+ && element && element->isMediaElement()
+ // FIXME: There is no embedder-side handling in layout test mode.
+ && !isRunningLayoutTest()) {
HTMLMediaElement* mediaElement = toHTMLMediaElement(element);
if (mediaElement->player())
- mediaElement->player()->exitFullscreen();
+ mediaElement->player()->hideFullscreenOverlay();
return;
}
-#endif
if (WebViewClient* client = m_webViewImpl->client())
client->exitFullScreen();
}

Powered by Google App Engine
This is Rietveld 408576698