diff options
| author | Steve Block <steveblock@google.com> | 2012-04-10 19:04:04 +0100 |
|---|---|---|
| committer | Steve Block <steveblock@google.com> | 2012-04-12 17:29:00 +0100 |
| commit | 4717b91d77cab5187baae5025bfa1bab4e52a907 (patch) | |
| tree | 99989e479a9ee3ecc5f2f1efe6c83b69e8947d5a /Source/WebCore | |
| parent | ab525fa648885957ef4a11f7a6796e2d8dac36f4 (diff) | |
| download | external_webkit-4717b91d77cab5187baae5025bfa1bab4e52a907.zip external_webkit-4717b91d77cab5187baae5025bfa1bab4e52a907.tar.gz external_webkit-4717b91d77cab5187baae5025bfa1bab4e52a907.tar.bz2 | |
Cherry-pick WebKit change r89762 to fix a LayoutTest crash
fast/dom/shadow/frameless-media-element-crash.html
See http://trac.webkit.org/changeset/89762
Bug: 6329068
Change-Id: I73db520557e2ab4c04a4a2198276439e6c7932ec
Diffstat (limited to 'Source/WebCore')
| -rw-r--r-- | Source/WebCore/html/HTMLMediaElement.cpp | 19 | ||||
| -rw-r--r-- | Source/WebCore/html/HTMLMediaElement.h | 2 |
2 files changed, 15 insertions, 6 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(); diff --git a/Source/WebCore/html/HTMLMediaElement.h b/Source/WebCore/html/HTMLMediaElement.h index 2144ea1..0b11861 100644 --- a/Source/WebCore/html/HTMLMediaElement.h +++ b/Source/WebCore/html/HTMLMediaElement.h @@ -325,7 +325,7 @@ private: void refreshCachedTime() const; bool hasMediaControls(); - void ensureMediaControls(); + bool createMediaControls(); virtual void* preDispatchEventHandler(Event*); |
