diff options
Diffstat (limited to 'Source/WebCore/html/HTMLMediaElement.cpp')
-rw-r--r-- | Source/WebCore/html/HTMLMediaElement.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/Source/WebCore/html/HTMLMediaElement.cpp b/Source/WebCore/html/HTMLMediaElement.cpp index 5cd2ddd..46e8a12 100644 --- a/Source/WebCore/html/HTMLMediaElement.cpp +++ b/Source/WebCore/html/HTMLMediaElement.cpp @@ -238,7 +238,9 @@ void HTMLMediaElement::attributeChanged(Attribute* attr, bool preserveDecls) #if !ENABLE(PLUGIN_PROXY_FOR_VIDEO) if (controls()) { if (!hasMediaControls()) { - ensureMediaControls(); + if (!createMediaControls()) + return; + mediaControls()->reset(); } mediaControls()->show(); @@ -2739,13 +2741,18 @@ bool HTMLMediaElement::hasMediaControls() return node && node->isMediaControls(); } -void HTMLMediaElement::ensureMediaControls() +bool HTMLMediaElement::createMediaControls() { if (hasMediaControls()) - return; + return true; ExceptionCode ec; - ensureShadowRoot()->appendChild(MediaControls::create(this), ec); + RefPtr<MediaControls> controls = MediaControls::create(this); + if (!controls) + return false; + + ensureShadowRoot()->appendChild(controls, ec); + return true; } void* HTMLMediaElement::preDispatchEventHandler(Event* event) @@ -2753,7 +2760,9 @@ void* HTMLMediaElement::preDispatchEventHandler(Event* event) if (event && event->type() == eventNames().webkitfullscreenchangeEvent) { if (controls()) { if (!hasMediaControls()) { - ensureMediaControls(); + if (!createMediaControls()) + return 0; + mediaControls()->reset(); } mediaControls()->show(); |