Unreviewed, rolling out r255161.
authorryanhaddad@apple.com <ryanhaddad@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Jan 2020 21:29:11 +0000 (21:29 +0000)
committerryanhaddad@apple.com <ryanhaddad@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Jan 2020 21:29:11 +0000 (21:29 +0000)
Broke the watchOS build.

Reverted changeset:

"Crash in WebCore::HTMLMediaElement::detachMediaSource()"
https://bugs.webkit.org/show_bug.cgi?id=206766
https://trac.webkit.org/changeset/255161

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@255165 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/Modules/mediasource/MediaSource.cpp
Source/WebCore/Modules/mediasource/MediaSource.h
Source/WebCore/html/HTMLMediaElement.cpp

index 25235df..4f83078 100644 (file)
@@ -1,3 +1,15 @@
+2020-01-27  Ryan Haddad  <ryanhaddad@apple.com>
+
+        Unreviewed, rolling out r255161.
+
+        Broke the watchOS build.
+
+        Reverted changeset:
+
+        "Crash in WebCore::HTMLMediaElement::detachMediaSource()"
+        https://bugs.webkit.org/show_bug.cgi?id=206766
+        https://trac.webkit.org/changeset/255161
+
 2020-01-27  Jer Noble  <jer.noble@apple.com>
 
         Support 'allow="fullscreen"' feature policy
index 4e4193b..2a5adb7 100644 (file)
@@ -956,7 +956,7 @@ bool MediaSource::attachToElement(HTMLMediaElement& element)
 
     ASSERT(isClosed());
 
-    m_mediaElement = makeWeakPtr(&element);
+    m_mediaElement = &element;
     return true;
 }
 
index 425bf97..9278d7a 100644 (file)
 #include "EventTarget.h"
 #include "ExceptionOr.h"
 #include "GenericEventQueue.h"
-#include "HTMLMediaElement.h"
 #include "MediaSourcePrivateClient.h"
 #include "URLRegistry.h"
 #include <wtf/LoggerHelper.h>
-#include <wtf/WeakPtr.h>
 
 namespace WebCore {
 
 class ContentType;
+class HTMLMediaElement;
 class SourceBuffer;
 class SourceBufferList;
 class SourceBufferPrivate;
@@ -98,7 +97,7 @@ public:
     ReadyState readyState() const { return m_readyState; }
     ExceptionOr<void> endOfStream(Optional<EndOfStreamError>);
 
-    HTMLMediaElement* mediaElement() const { return m_mediaElement.get(); }
+    HTMLMediaElement* mediaElement() const { return m_mediaElement; }
 
     SourceBufferList* sourceBuffers() { return m_sourceBuffers.get(); }
     SourceBufferList* activeSourceBuffers() { return m_activeSourceBuffers.get(); }
@@ -162,7 +161,7 @@ private:
     RefPtr<SourceBufferList> m_activeSourceBuffers;
     mutable std::unique_ptr<PlatformTimeRanges> m_buffered;
     std::unique_ptr<PlatformTimeRanges> m_liveSeekable;
-    WeakPtr<HTMLMediaElement> m_mediaElement;
+    HTMLMediaElement* m_mediaElement { nullptr };
     MediaTime m_duration;
     MediaTime m_pendingSeekTime;
     ReadyState m_readyState { ReadyState::Closed };
index 190089e..357b619 100644 (file)
@@ -1535,16 +1535,11 @@ void HTMLMediaElement::loadResource(const URL& initialURL, ContentType& contentT
         loadAttempted = true;
 
         ALWAYS_LOG(LOGIDENTIFIER, "loading MSE blob");
-        if (!m_mediaSource->attachToElement(*this)) {
+        if (!m_mediaSource->attachToElement(*this) || !m_player->load(url, contentType, m_mediaSource.get())) {
             // Forget our reference to the MediaSource, so we leave it alone
             // while processing remainder of load failure.
             m_mediaSource = nullptr;
             mediaLoadingFailed(MediaPlayer::NetworkState::FormatError);
-        } else if (!m_player->load(url, contentType, m_mediaSource.get())) {
-            // We have to detach the MediaSource before we forget the reference to it.
-            m_mediaSource->detachFromElement(*this);
-            m_mediaSource = nullptr;
-            mediaLoadingFailed(MediaPlayer::NetworkState::FormatError);
         }
     }
 #endif