<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[210732] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/210732">210732</a></dd>
<dt>Author</dt> <dd>mcatanzaro@igalia.com</dd>
<dt>Date</dt> <dd>2017-01-13 09:54:30 -0800 (Fri, 13 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/210677">r210677</a>.
https://bugs.webkit.org/show_bug.cgi?id=167007

Caused many layout test timeouts on GTK+ bots

Reverted changeset:

&quot;Protect MediaPlayer from being destroyed mid-load()&quot;
https://bugs.webkit.org/show_bug.cgi?id=166976
http://trac.webkit.org/changeset/210677</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementh">trunk/Source/WebCore/html/HTMLMediaElement.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayercpp">trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayerh">trunk/Source/WebCore/platform/graphics/MediaPlayer.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (210731 => 210732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-13 17:23:30 UTC (rev 210731)
+++ trunk/Source/WebCore/ChangeLog        2017-01-13 17:54:30 UTC (rev 210732)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2017-01-13  Michael Catanzaro  &lt;mcatanzaro@igalia.com&gt;
+
+        Unreviewed, rolling out r210677.
+        https://bugs.webkit.org/show_bug.cgi?id=167007
+
+        Caused many layout test timeouts on GTK+ bots
+
+        Reverted changeset:
+
+        &quot;Protect MediaPlayer from being destroyed mid-load()&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=166976
+        http://trac.webkit.org/changeset/210677
+
</ins><span class="cx"> 2017-01-13  Konstantin Tokarev  &lt;annulen@yandex.ru&gt;
</span><span class="cx"> 
</span><span class="cx">         Added preprocessor guard for iOS-specific piece of code in GraphicsContext3DOpenGL
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (210731 => 210732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2017-01-13 17:23:30 UTC (rev 210731)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2017-01-13 17:54:30 UTC (rev 210732)
</span><span class="lines">@@ -569,10 +569,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_completelyLoaded = true;
</span><span class="cx"> 
</span><del>-    if (m_player) {
-        m_player-&gt;invalidate();
-        m_player = nullptr;
-    }
</del><ins>+    m_player = nullptr;
</ins><span class="cx">     updatePlaybackControlsManager();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -5054,10 +5051,7 @@
</span><span class="cx">         document().removeMediaCanStartListener(this);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (m_player) {
-        m_player-&gt;invalidate();
-        m_player = nullptr;
-    }
</del><ins>+    m_player = nullptr;
</ins><span class="cx">     updatePlaybackControlsManager();
</span><span class="cx"> 
</span><span class="cx">     stopPeriodicTimers();
</span><span class="lines">@@ -5998,7 +5992,7 @@
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx">     forgetResourceSpecificTracks();
</span><span class="cx"> #endif
</span><del>-    m_player = MediaPlayer::create(*this);
</del><ins>+    m_player = std::make_unique&lt;MediaPlayer&gt;(static_cast&lt;MediaPlayerClient&amp;&gt;(*this));
</ins><span class="cx">     scheduleUpdatePlaybackControlsManager();
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_AUDIO)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (210731 => 210732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.h        2017-01-13 17:23:30 UTC (rev 210731)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h        2017-01-13 17:54:30 UTC (rev 210732)
</span><span class="lines">@@ -885,7 +885,7 @@
</span><span class="cx">     MediaPlayerEnums::VideoGravity m_videoFullscreenGravity { MediaPlayer::VideoGravityResizeAspect };
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    RefPtr&lt;MediaPlayer&gt; m_player;
</del><ins>+    std::unique_ptr&lt;MediaPlayer&gt; m_player;
</ins><span class="cx"> 
</span><span class="cx">     MediaPlayerEnums::Preload m_preload { MediaPlayer::Auto };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (210731 => 210732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2017-01-13 17:23:30 UTC (rev 210731)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2017-01-13 17:54:30 UTC (rev 210732)
</span><span class="lines">@@ -161,12 +161,6 @@
</span><span class="cx">     bool hasSingleSecurityOrigin() const override { return true; }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static MediaPlayerClient&amp; nullMediaPlayerClient()
-{
-    static NeverDestroyed&lt;MediaPlayerClient&gt; client;
-    return client.get();
-}
-
</del><span class="cx"> // engine support
</span><span class="cx"> 
</span><span class="cx"> struct MediaPlayerFactory {
</span><span class="lines">@@ -338,13 +332,8 @@
</span><span class="cx"> 
</span><span class="cx"> // media player
</span><span class="cx"> 
</span><del>-Ref&lt;MediaPlayer&gt; MediaPlayer::create(MediaPlayerClient&amp; client)
-{
-    return adoptRef(*new MediaPlayer(client));
-}
-
</del><span class="cx"> MediaPlayer::MediaPlayer(MediaPlayerClient&amp; client)
</span><del>-    : m_client(&amp;client)
</del><ins>+    : m_client(client)
</ins><span class="cx">     , m_reloadTimer(*this, &amp;MediaPlayer::reloadTimerFired)
</span><span class="cx">     , m_private(std::make_unique&lt;NullMediaPlayerPrivate&gt;(this))
</span><span class="cx">     , m_currentMediaEngine(0)
</span><span class="lines">@@ -364,18 +353,10 @@
</span><span class="cx">     ASSERT(!m_initializingMediaEngine);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaPlayer::invalidate()
-{
-    m_client = &amp;nullMediaPlayerClient();
-}
-
</del><span class="cx"> bool MediaPlayer::load(const URL&amp; url, const ContentType&amp; contentType, const String&amp; keySystem)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!m_reloadTimer.isActive());
</span><span class="cx"> 
</span><del>-    // Protect against MediaPlayer being destroyed during a MediaPlayerClient callback.
-    Ref&lt;MediaPlayer&gt; protectedThis(*this);
-
</del><span class="cx">     m_contentMIMEType = contentType.type().convertToASCIILowercase();
</span><span class="cx">     m_contentTypeCodecs = contentType.parameter(codecs());
</span><span class="cx">     m_url = url;
</span><span class="lines">@@ -493,7 +474,7 @@
</span><span class="cx">     } else if (m_currentMediaEngine != engine) {
</span><span class="cx">         m_currentMediaEngine = engine;
</span><span class="cx">         m_private = engine-&gt;constructor(this);
</span><del>-        client().mediaPlayerEngineUpdated(this);
</del><ins>+        m_client.mediaPlayerEngineUpdated(this);
</ins><span class="cx">         m_private-&gt;setPrivateBrowsingMode(m_privateBrowsing);
</span><span class="cx">         m_private-&gt;setPreload(m_preload);
</span><span class="cx">         m_private-&gt;setPreservesPitch(preservesPitch());
</span><span class="lines">@@ -515,8 +496,8 @@
</span><span class="cx">         m_private-&gt;load(m_url.string());
</span><span class="cx">     } else {
</span><span class="cx">         m_private = std::make_unique&lt;NullMediaPlayerPrivate&gt;(this);
</span><del>-        client().mediaPlayerEngineUpdated(this);
-        client().mediaPlayerResourceNotSupported(this);
</del><ins>+        m_client.mediaPlayerEngineUpdated(this);
+        m_client.mediaPlayerResourceNotSupported(this);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_initializingMediaEngine = false;
</span><span class="lines">@@ -667,7 +648,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::inMediaDocument() const
</span><span class="cx"> {
</span><del>-    return m_visible &amp;&amp; client().mediaPlayerIsInMediaDocument();
</del><ins>+    return m_visible &amp;&amp; m_client.mediaPlayerIsInMediaDocument();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PlatformMedia MediaPlayer::platformMedia() const
</span><span class="lines">@@ -703,7 +684,7 @@
</span><span class="cx"> 
</span><span class="cx"> MediaPlayer::VideoFullscreenMode MediaPlayer::fullscreenMode() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerFullscreenMode();
</del><ins>+    return m_client.mediaPlayerFullscreenMode();
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -784,7 +765,7 @@
</span><span class="cx"> 
</span><span class="cx"> double MediaPlayer::requestedRate() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerRequestedPlaybackRate();
</del><ins>+    return m_client.mediaPlayerRequestedPlaybackRate();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::preservesPitch() const
</span><span class="lines">@@ -956,7 +937,7 @@
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::currentPlaybackTargetIsWirelessChanged()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerCurrentPlaybackTargetIsWirelessChanged(this);
</del><ins>+    m_client.mediaPlayerCurrentPlaybackTargetIsWirelessChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::canPlayToWirelessPlaybackTarget() const
</span><span class="lines">@@ -1120,18 +1101,18 @@
</span><span class="cx">     // If more than one media engine is installed and this one failed before finding metadata,
</span><span class="cx">     // let the next engine try.
</span><span class="cx">     if (m_private-&gt;networkState() &gt;= FormatError &amp;&amp; m_private-&gt;readyState() &lt; HaveMetadata) {
</span><del>-        client().mediaPlayerEngineFailedToLoad();
</del><ins>+        m_client.mediaPlayerEngineFailedToLoad();
</ins><span class="cx">         if (installedMediaEngines().size() &gt; 1 &amp;&amp; (m_contentMIMEType.isEmpty() || nextBestMediaEngine(m_currentMediaEngine))) {
</span><span class="cx">             m_reloadTimer.startOneShot(0);
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">     }
</span><del>-    client().mediaPlayerNetworkStateChanged(this);
</del><ins>+    m_client.mediaPlayerNetworkStateChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::readyStateChanged()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerReadyStateChanged(this);
</del><ins>+    m_client.mediaPlayerReadyStateChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::volumeChanged(double newVolume)
</span><span class="lines">@@ -1142,53 +1123,53 @@
</span><span class="cx"> #else
</span><span class="cx">     m_volume = newVolume;
</span><span class="cx"> #endif
</span><del>-    client().mediaPlayerVolumeChanged(this);
</del><ins>+    m_client.mediaPlayerVolumeChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::muteChanged(bool newMuted)
</span><span class="cx"> {
</span><span class="cx">     m_muted = newMuted;
</span><del>-    client().mediaPlayerMuteChanged(this);
</del><ins>+    m_client.mediaPlayerMuteChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::timeChanged()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerTimeChanged(this);
</del><ins>+    m_client.mediaPlayerTimeChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::sizeChanged()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerSizeChanged(this);
</del><ins>+    m_client.mediaPlayerSizeChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::repaint()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerRepaint(this);
</del><ins>+    m_client.mediaPlayerRepaint(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::durationChanged()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerDurationChanged(this);
</del><ins>+    m_client.mediaPlayerDurationChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::rateChanged()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerRateChanged(this);
</del><ins>+    m_client.mediaPlayerRateChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::playbackStateChanged()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerPlaybackStateChanged(this);
</del><ins>+    m_client.mediaPlayerPlaybackStateChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::firstVideoFrameAvailable()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerFirstVideoFrameAvailable(this);
</del><ins>+    m_client.mediaPlayerFirstVideoFrameAvailable(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::characteristicChanged()
</span><span class="cx"> {
</span><del>-    client().mediaPlayerCharacteristicChanged(this);
</del><ins>+    m_client.mediaPlayerCharacteristicChanged(this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_AUDIO)
</span><span class="lines">@@ -1201,28 +1182,28 @@
</span><span class="cx"> #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
</span><span class="cx"> RefPtr&lt;ArrayBuffer&gt; MediaPlayer::cachedKeyForKeyId(const String&amp; keyId) const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerCachedKeyForKeyId(keyId);
</del><ins>+    return m_client.mediaPlayerCachedKeyForKeyId(keyId);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::keyNeeded(Uint8Array* initData)
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerKeyNeeded(this, initData);
</del><ins>+    return m_client.mediaPlayerKeyNeeded(this, initData);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String MediaPlayer::mediaKeysStorageDirectory() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerMediaKeysStorageDirectory();
</del><ins>+    return m_client.mediaPlayerMediaKeysStorageDirectory();
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> String MediaPlayer::referrer() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerReferrer();
</del><ins>+    return m_client.mediaPlayerReferrer();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String MediaPlayer::userAgent() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerUserAgent();
</del><ins>+    return m_client.mediaPlayerUserAgent();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String MediaPlayer::engineDescription() const
</span><span class="lines">@@ -1244,18 +1225,18 @@
</span><span class="cx"> #if PLATFORM(WIN) &amp;&amp; USE(AVFOUNDATION)
</span><span class="cx"> GraphicsDeviceAdapter* MediaPlayer::graphicsDeviceAdapter() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerGraphicsDeviceAdapter(this);
</del><ins>+    return m_client.mediaPlayerGraphicsDeviceAdapter(this);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> CachedResourceLoader* MediaPlayer::cachedResourceLoader()
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerCachedResourceLoader();
</del><ins>+    return m_client.mediaPlayerCachedResourceLoader();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;PlatformMediaResourceLoader&gt; MediaPlayer::createResourceLoader()
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerCreateResourceLoader();
</del><ins>+    return m_client.mediaPlayerCreateResourceLoader();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="lines">@@ -1262,32 +1243,32 @@
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::addAudioTrack(AudioTrackPrivate&amp; track)
</span><span class="cx"> {
</span><del>-    client().mediaPlayerDidAddAudioTrack(track);
</del><ins>+    m_client.mediaPlayerDidAddAudioTrack(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::removeAudioTrack(AudioTrackPrivate&amp; track)
</span><span class="cx"> {
</span><del>-    client().mediaPlayerDidRemoveAudioTrack(track);
</del><ins>+    m_client.mediaPlayerDidRemoveAudioTrack(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::addTextTrack(InbandTextTrackPrivate&amp; track)
</span><span class="cx"> {
</span><del>-    client().mediaPlayerDidAddTextTrack(track);
</del><ins>+    m_client.mediaPlayerDidAddTextTrack(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::removeTextTrack(InbandTextTrackPrivate&amp; track)
</span><span class="cx"> {
</span><del>-    client().mediaPlayerDidRemoveTextTrack(track);
</del><ins>+    m_client.mediaPlayerDidRemoveTextTrack(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::addVideoTrack(VideoTrackPrivate&amp; track)
</span><span class="cx"> {
</span><del>-    client().mediaPlayerDidAddVideoTrack(track);
</del><ins>+    m_client.mediaPlayerDidAddVideoTrack(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::removeVideoTrack(VideoTrackPrivate&amp; track)
</span><span class="cx"> {
</span><del>-    client().mediaPlayerDidRemoveVideoTrack(track);
</del><ins>+    m_client.mediaPlayerDidRemoveVideoTrack(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::requiresTextTrackRepresentation() const
</span><span class="lines">@@ -1320,7 +1301,7 @@
</span><span class="cx"> 
</span><span class="cx"> Vector&lt;RefPtr&lt;PlatformTextTrack&gt;&gt; MediaPlayer::outOfBandTrackSources()
</span><span class="cx"> {
</span><del>-    return client().outOfBandTrackSources();
</del><ins>+    return m_client.outOfBandTrackSources();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="lines">@@ -1410,22 +1391,22 @@
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::shouldWaitForResponseToAuthenticationChallenge(const AuthenticationChallenge&amp; challenge)
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerShouldWaitForResponseToAuthenticationChallenge(challenge);
</del><ins>+    return m_client.mediaPlayerShouldWaitForResponseToAuthenticationChallenge(challenge);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayer::handlePlaybackCommand(PlatformMediaSession::RemoteControlCommandType command)
</span><span class="cx"> {
</span><del>-    client().mediaPlayerHandlePlaybackCommand(command);
</del><ins>+    m_client.mediaPlayerHandlePlaybackCommand(command);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String MediaPlayer::sourceApplicationIdentifier() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerSourceApplicationIdentifier();
</del><ins>+    return m_client.mediaPlayerSourceApplicationIdentifier();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Vector&lt;String&gt; MediaPlayer::preferredAudioCharacteristics() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerPreferredAudioCharacteristics();
</del><ins>+    return m_client.mediaPlayerPreferredAudioCharacteristics();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerFactorySupport::callRegisterMediaEngine(MediaEngineRegister registerMediaEngine)
</span><span class="lines">@@ -1435,18 +1416,18 @@
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::doesHaveAttribute(const AtomicString&amp; attribute, AtomicString* value) const
</span><span class="cx"> {
</span><del>-    return client().doesHaveAttribute(attribute, value);
</del><ins>+    return m_client.doesHaveAttribute(attribute, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> String MediaPlayer::mediaPlayerNetworkInterfaceName() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerNetworkInterfaceName();
</del><ins>+    return m_client.mediaPlayerNetworkInterfaceName();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::getRawCookies(const URL&amp; url, Vector&lt;Cookie&gt;&amp; cookies) const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerGetRawCookies(url, cookies);
</del><ins>+    return m_client.mediaPlayerGetRawCookies(url, cookies);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1458,7 +1439,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool MediaPlayer::shouldDisableSleep() const
</span><span class="cx"> {
</span><del>-    return client().mediaPlayerShouldDisableSleep();
</del><ins>+    return m_client.mediaPlayerShouldDisableSleep();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (210731 => 210732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h        2017-01-13 17:23:30 UTC (rev 210731)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h        2017-01-13 17:54:30 UTC (rev 210732)
</span><span class="lines">@@ -48,8 +48,6 @@
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> #include &lt;wtf/MediaTime.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><del>-#include &lt;wtf/Ref.h&gt;
-#include &lt;wtf/RefCounted.h&gt;
</del><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(AVF_CAPTIONS)
</span><span class="lines">@@ -283,14 +281,12 @@
</span><span class="cx">     virtual String mediaPlayerDocumentHost() const { return String(); }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class MediaPlayer : public MediaPlayerEnums, public RefCounted&lt;MediaPlayer&gt; {
</del><ins>+class MediaPlayer : public MediaPlayerEnums {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(MediaPlayer); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    static Ref&lt;MediaPlayer&gt; create(MediaPlayerClient&amp;);
</del><ins>+    explicit MediaPlayer(MediaPlayerClient&amp;);
</ins><span class="cx">     virtual ~MediaPlayer();
</span><span class="cx"> 
</span><del>-    void invalidate();
-
</del><span class="cx">     // Media engine support.
</span><span class="cx">     enum SupportsType { IsNotSupported, IsSupported, MayBeSupported };
</span><span class="cx">     static MediaPlayer::SupportsType supportsType(const MediaEngineSupportParameters&amp;, const MediaPlayerSupportsTypeClient*);
</span><span class="lines">@@ -390,7 +386,7 @@
</span><span class="cx"> 
</span><span class="cx">     double volume() const;
</span><span class="cx">     void setVolume(double);
</span><del>-    bool platformVolumeConfigurationRequired() const { return client().mediaPlayerPlatformVolumeConfigurationRequired(); }
</del><ins>+    bool platformVolumeConfigurationRequired() const { return m_client.mediaPlayerPlatformVolumeConfigurationRequired(); }
</ins><span class="cx"> 
</span><span class="cx">     bool muted() const;
</span><span class="cx">     void setMuted(bool);
</span><span class="lines">@@ -448,7 +444,7 @@
</span><span class="cx"> 
</span><span class="cx">     void repaint();
</span><span class="cx"> 
</span><del>-    MediaPlayerClient&amp; client() const { return *m_client; }
</del><ins>+    MediaPlayerClient&amp; client() const { return m_client; }
</ins><span class="cx"> 
</span><span class="cx">     bool hasAvailableVideoFrame() const;
</span><span class="cx">     void prepareForRendering();
</span><span class="lines">@@ -586,8 +582,6 @@
</span><span class="cx">     bool shouldDisableSleep() const;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    MediaPlayer(MediaPlayerClient&amp;);
-
</del><span class="cx">     const MediaPlayerFactory* nextBestMediaEngine(const MediaPlayerFactory*) const;
</span><span class="cx">     void loadWithNextMediaEngine(const MediaPlayerFactory*);
</span><span class="cx">     void reloadTimerFired();
</span><span class="lines">@@ -594,7 +588,7 @@
</span><span class="cx"> 
</span><span class="cx">     static void initializeMediaEngines();
</span><span class="cx"> 
</span><del>-    MediaPlayerClient* m_client;
</del><ins>+    MediaPlayerClient&amp; m_client;
</ins><span class="cx">     Timer m_reloadTimer;
</span><span class="cx">     std::unique_ptr&lt;MediaPlayerPrivateInterface&gt; m_private;
</span><span class="cx">     const MediaPlayerFactory* m_currentMediaEngine;
</span></span></pre>
</div>
</div>

</body>
</html>