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

Unified Diff: third_party/WebKit/Source/web/FullscreenController.cpp

Issue 2784783002: DNS: Testing for [blink] Support (semi-)transparent background colors.
Patch Set: test with !hasAlpha instead of alpha > 0 Created 3 years, 9 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: third_party/WebKit/Source/web/FullscreenController.cpp
diff --git a/third_party/WebKit/Source/web/FullscreenController.cpp b/third_party/WebKit/Source/web/FullscreenController.cpp
index 4380a01fb2d69c41051ae38c536576db7c821aac..e44c0c777feff6085fcfb5d4f594d7f93b69936c 100644
--- a/third_party/WebKit/Source/web/FullscreenController.cpp
+++ b/third_party/WebKit/Source/web/FullscreenController.cpp
@@ -152,6 +152,9 @@ void FullscreenController::enterFullscreen(LocalFrame& frame) {
? m_webViewImpl->mainFrame()->getScrollOffset()
: WebSize();
m_initialVisualViewportOffset = m_webViewImpl->visualViewportOffset();
+ m_initialBackgroundColorOverrideEnabled =
+ m_webViewImpl->backgroundColorOverrideEnabled();
+ m_initialBackgroundColorOverride = m_webViewImpl->backgroundColorOverride();
}
// If already entering fullscreen, just wait.
@@ -182,6 +185,10 @@ void FullscreenController::fullscreenElementChanged(Element* fromElement,
Element* toElement) {
DCHECK_NE(fromElement, toElement);
+ // We only override the WebView's background color for overlay fullscreen
+ // video elements, so have to restore the override when the element changes.
+ restoreBackgroundColorOverride();
+
if (toElement) {
DCHECK(Fullscreen::isCurrentFullScreenElement(*toElement));
@@ -191,10 +198,8 @@ void FullscreenController::fullscreenElementChanged(Element* fromElement,
// If the video uses overlay fullscreen mode, make the background
// transparent.
- if (videoElement.usesOverlayFullscreenVideo() &&
- m_webViewImpl->layerTreeView()) {
- m_webViewImpl->layerTreeView()->setHasTransparentBackground(true);
- }
+ if (videoElement.usesOverlayFullscreenVideo())
+ m_webViewImpl->setBackgroundColorOverride(Color::transparent);
}
}
@@ -202,18 +207,26 @@ void FullscreenController::fullscreenElementChanged(Element* fromElement,
DCHECK(!Fullscreen::isCurrentFullScreenElement(*fromElement));
if (isHTMLVideoElement(*fromElement)) {
- // If the video used overlay fullscreen mode, restore the transparency.
- if (m_webViewImpl->layerTreeView()) {
- m_webViewImpl->layerTreeView()->setHasTransparentBackground(
- m_webViewImpl->isTransparent());
- }
-
HTMLVideoElement& videoElement = toHTMLVideoElement(*fromElement);
videoElement.didExitFullscreen();
}
}
}
+void FullscreenController::restoreBackgroundColorOverride() {
+ if (m_webViewImpl->backgroundColorOverrideEnabled() !=
+ m_initialBackgroundColorOverrideEnabled ||
+ m_webViewImpl->backgroundColorOverride() !=
+ m_initialBackgroundColorOverride) {
+ if (m_initialBackgroundColorOverrideEnabled) {
+ m_webViewImpl->setBackgroundColorOverride(
+ m_initialBackgroundColorOverride);
+ } else {
+ m_webViewImpl->clearBackgroundColorOverride();
+ }
+ }
+}
+
void FullscreenController::updateSize() {
DCHECK(m_webViewImpl->page());
@@ -245,6 +258,8 @@ void FullscreenController::didUpdateLayout() {
if (m_webViewImpl->mainFrame()->isWebLocalFrame())
m_webViewImpl->mainFrame()->setScrollOffset(WebSize(m_initialScrollOffset));
m_webViewImpl->setVisualViewportOffset(m_initialVisualViewportOffset);
+ // Background color override was already restored when
+ // fullscreenElementChanged([..], nullptr) was called while exiting.
m_state = State::Initial;
}
« no previous file with comments | « third_party/WebKit/Source/web/FullscreenController.h ('k') | third_party/WebKit/Source/web/InspectorOverlay.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698