Index: Source/core/html/HTMLMediaElement.cpp |
diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp |
index 35f8cd734ac77d7fa55aba347ec080f1add8dda1..e37386b5cf2e302c269ecfd58018389b182b3aad 100644 |
--- a/Source/core/html/HTMLMediaElement.cpp |
+++ b/Source/core/html/HTMLMediaElement.cpp |
@@ -410,7 +410,7 @@ bool HTMLMediaElement::supportsFocus() const |
return false; |
// If no controls specified, we should still be able to focus the element if it has tabIndex. |
- return controls() || HTMLElement::supportsFocus(); |
+ return shouldDisplayControls() || HTMLElement::supportsFocus(); |
} |
bool HTMLMediaElement::isMouseFocusable() const |
@@ -468,7 +468,7 @@ void HTMLMediaElement::finishParsingChildren() |
bool HTMLMediaElement::rendererIsNeeded(const RenderStyle& style) |
{ |
- return controls() ? HTMLElement::rendererIsNeeded(style) : false; |
+ return shouldDisplayControls() ? HTMLElement::rendererIsNeeded(style) : false; |
} |
RenderObject* HTMLMediaElement::createRenderer(RenderStyle*) |
@@ -2297,17 +2297,22 @@ void HTMLMediaElement::setLoop(bool b) |
bool HTMLMediaElement::controls() const |
{ |
+ return fastHasAttribute(controlsAttr); |
+} |
+ |
+bool HTMLMediaElement::shouldDisplayControls() const |
+{ |
LocalFrame* frame = document().frame(); |
// always show controls when scripting is disabled |
if (frame && !frame->script().canExecuteScripts(NotAboutToExecuteScript)) |
return true; |
- // Always show controls when in full screen mode. |
- if (isFullscreen()) |
+ // Show controls when in full screen mode unless there is an overlay player. |
+ if (isFullscreen() && !RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()) |
qinmin
2014/02/28 17:12:45
overlayFullscreenVideoEnabled is enabled by defaul
|
return true; |
- return fastHasAttribute(controlsAttr); |
+ return controls(); |
} |
void HTMLMediaElement::setControls(bool b) |
@@ -3586,7 +3591,7 @@ bool HTMLMediaElement::createMediaControls() |
ensureUserAgentShadowRoot().appendChild(mediaControls); |
- if (!controls() || !inDocument()) |
+ if (!shouldDisplayControls() || !inDocument()) |
mediaControls->hide(); |
return true; |
@@ -3594,9 +3599,13 @@ bool HTMLMediaElement::createMediaControls() |
void HTMLMediaElement::configureMediaControls() |
{ |
- if (!controls() || !inDocument()) { |
- if (hasMediaControls()) |
- mediaControls()->hide(); |
+ if (!shouldDisplayControls() || !inDocument()) { |
+ if (hasMediaControls()) { |
+ if (!shouldDisplayControls()) |
+ userAgentShadowRoot()->removeChild(mediaControls()); |
+ else |
+ mediaControls()->hide(); |
+ } |
return; |
} |