<!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>[168082] 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/168082">168082</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2014-04-30 19:46:07 -0700 (Wed, 30 Apr 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>More iOS build fixing. MediaPlayerPrivateIOS is defunct and can be removed.
Fix some build errors in other media files.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/MediaPlayer.cpp:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
* platform/graphics/ios/MediaPlayerPrivateIOS.h: Removed.
* platform/graphics/ios/MediaPlayerPrivateIOS.mm: Removed.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsMediaPlayercpp">trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformgraphicsiosMediaPlayerPrivateIOSh">trunk/Source/WebCore/platform/graphics/ios/MediaPlayerPrivateIOS.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsiosMediaPlayerPrivateIOSmm">trunk/Source/WebCore/platform/graphics/ios/MediaPlayerPrivateIOS.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (168081 => 168082)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-05-01 02:46:03 UTC (rev 168081)
+++ trunk/Source/WebCore/ChangeLog        2014-05-01 02:46:07 UTC (rev 168082)
</span><span class="lines">@@ -1,5 +1,16 @@
</span><span class="cx"> 2014-04-30  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        More iOS build fixing. MediaPlayerPrivateIOS is defunct and can be removed.
+        Fix some build errors in other media files.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/MediaPlayer.cpp:
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        * platform/graphics/ios/MediaPlayerPrivateIOS.h: Removed.
+        * platform/graphics/ios/MediaPlayerPrivateIOS.mm: Removed.
+
+2014-04-30  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
</ins><span class="cx">         Fix the iOS build, which no longer needs these calls
</span><span class="cx">         to enter/exitFullscreen.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (168081 => 168082)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-05-01 02:46:03 UTC (rev 168081)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-05-01 02:46:07 UTC (rev 168082)
</span><span class="lines">@@ -170,8 +170,6 @@
</span><span class="cx">                 073BE34E17D180B2002BD431 /* RTCSessionDescriptionDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07221BAB17CF0AD400848E51 /* RTCSessionDescriptionDescriptor.cpp */; };
</span><span class="cx">                 073BE34F17D18183002BD431 /* RTCIceCandidateDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07221BA617CF0AD400848E51 /* RTCIceCandidateDescriptor.cpp */; };
</span><span class="cx">                 073BE35017D181A6002BD431 /* RTCPeerConnectionHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07221BA817CF0AD400848E51 /* RTCPeerConnectionHandler.cpp */; };
</span><del>-                074300A50F4B8BCF008076CD /* MediaPlayerPrivateIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 074300A30F4B8BCF008076CD /* MediaPlayerPrivateIOS.mm */; };
-                074300A60F4B8BCF008076CD /* MediaPlayerPrivateIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 074300A40F4B8BCF008076CD /* MediaPlayerPrivateIOS.h */; };
</del><span class="cx">                 074E82BA18A69F0E007EF54C /* PlatformTimeRanges.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 074E82B818A69F0E007EF54C /* PlatformTimeRanges.cpp */; };
</span><span class="cx">                 074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */ = {isa = PBXBuildFile; fileRef = 074E82B918A69F0E007EF54C /* PlatformTimeRanges.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0753860214489E9800B78452 /* CachedTextTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0753860014489E9800B78452 /* CachedTextTrack.cpp */; };
</span><span class="lines">@@ -7064,8 +7062,6 @@
</span><span class="cx">                 073BE34517D17E7A002BD431 /* JSNavigatorUserMediaErrorCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNavigatorUserMediaErrorCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 073BE34617D17E7A002BD431 /* JSNavigatorUserMediaSuccessCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNavigatorUserMediaSuccessCallback.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 073BE34717D17E7A002BD431 /* JSNavigatorUserMediaSuccessCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNavigatorUserMediaSuccessCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                074300A30F4B8BCF008076CD /* MediaPlayerPrivateIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaPlayerPrivateIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
-                074300A40F4B8BCF008076CD /* MediaPlayerPrivateIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPlayerPrivateIOS.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 074E82B818A69F0E007EF54C /* PlatformTimeRanges.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformTimeRanges.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 074E82B918A69F0E007EF54C /* PlatformTimeRanges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformTimeRanges.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0753860014489E9800B78452 /* CachedTextTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedTextTrack.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -15485,8 +15481,6 @@
</span><span class="cx">                                 FED13D3F0CEA939400D89466 /* IconIOS.mm */,
</span><span class="cx">                                 07357C7616D2DF0D00ED99E7 /* InbandTextTrackPrivateAVFIOS.h */,
</span><span class="cx">                                 07357C7716D2DF0D00ED99E7 /* InbandTextTrackPrivateAVFIOS.mm */,
</span><del>-                                074300A40F4B8BCF008076CD /* MediaPlayerPrivateIOS.h */,
-                                074300A30F4B8BCF008076CD /* MediaPlayerPrivateIOS.mm */,
</del><span class="cx">                                 37E6594F163B10C200EB4574 /* SimpleFontDataIOS.mm */,
</span><span class="cx">                                 CEEC6034187DD962003E43BB /* TextTrackRepresentationIOS.h */,
</span><span class="cx">                                 CDCA82941679100F00875714 /* TextTrackRepresentationIOS.mm */,
</span><span class="lines">@@ -24974,7 +24968,6 @@
</span><span class="cx">                                 E44613E40CD681A200FADA75 /* MediaPlayer.h in Headers */,
</span><span class="cx">                                 076F0D0E12B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.h in Headers */,
</span><span class="cx">                                 DF9AFD7213FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.h in Headers */,
</span><del>-                                074300A60F4B8BCF008076CD /* MediaPlayerPrivateIOS.h in Headers */,
</del><span class="cx">                                 CDC8B5A3180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.h in Headers */,
</span><span class="cx">                                 E44613E60CD681A900FADA75 /* MediaPlayerPrivateQTKit.h in Headers */,
</span><span class="cx">                                 0735EE6A0F40C5E4004A2604 /* MediaPlayerProxy.h in Headers */,
</span><span class="lines">@@ -28472,7 +28465,6 @@
</span><span class="cx">                                 E44613E30CD6819F00FADA75 /* MediaPlayer.cpp in Sources */,
</span><span class="cx">                                 072C8B11131C518600A4FCE9 /* MediaPlayerPrivateAVFoundation.cpp in Sources */,
</span><span class="cx">                                 DF9AFD7313FC31D80015FEB7 /* MediaPlayerPrivateAVFoundationObjC.mm in Sources */,
</span><del>-                                074300A50F4B8BCF008076CD /* MediaPlayerPrivateIOS.mm in Sources */,
</del><span class="cx">                                 CDC8B5A2180463470016E685 /* MediaPlayerPrivateMediaSourceAVFObjC.mm in Sources */,
</span><span class="cx">                                 E44613E50CD681A600FADA75 /* MediaPlayerPrivateQTKit.mm in Sources */,
</span><span class="cx">                                 4E1959290A39DACC00220FE5 /* MediaQuery.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsMediaPlayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (168081 => 168082)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2014-05-01 02:46:03 UTC (rev 168081)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp        2014-05-01 02:46:07 UTC (rev 168082)
</span><span class="lines">@@ -59,11 +59,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-#if PLATFORM(IOS)
-#include &quot;MediaPlayerPrivateIOS.h&quot;
-#else
</del><span class="cx"> #include &quot;MediaPlayerPrivateQTKit.h&quot;
</span><del>-#endif
</del><span class="cx"> #if USE(AVFOUNDATION)
</span><span class="cx"> #include &quot;MediaPlayerPrivateAVFoundationObjC.h&quot;
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (168081 => 168082)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2014-05-01 02:46:03 UTC (rev 168081)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2014-05-01 02:46:07 UTC (rev 168082)
</span><span class="lines">@@ -71,6 +71,7 @@
</span><span class="cx"> #include &quot;TextTrack.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#import &lt;Foundation/NSGeometry.h&gt;
</ins><span class="cx"> #import &lt;AVFoundation/AVFoundation.h&gt;
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> #import &lt;CoreImage/CoreImage.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsiosMediaPlayerPrivateIOSh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/graphics/ios/MediaPlayerPrivateIOS.h (168081 => 168082)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ios/MediaPlayerPrivateIOS.h        2014-05-01 02:46:03 UTC (rev 168081)
+++ trunk/Source/WebCore/platform/graphics/ios/MediaPlayerPrivateIOS.h        2014-05-01 02:46:07 UTC (rev 168082)
</span><span class="lines">@@ -1,243 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef MediaPlayerPrivateIOS_h
-#define MediaPlayerPrivateIOS_h
-
-#if ENABLE(VIDEO) &amp;&amp; PLATFORM(IOS)
-
-#include &quot;InbandTextTrackPrivateAVF.h&quot;
-#include &quot;MediaPlayer.h&quot;
-#include &quot;MediaPlayerPrivate.h&quot;
-#include &quot;MediaPlayerProxy.h&quot;
-#include &lt;objc/runtime.h&gt;
-#include &lt;wtf/PassOwnPtr.h&gt;
-#include &lt;wtf/RetainPtr.h&gt;
-
-OBJC_CLASS NSDictionary;
-OBJC_CLASS NSMutableDictionary;
-OBJC_CLASS NSNumber;
-OBJC_CLASS NSObject;
-OBJC_CLASS WebCoreMediaPlayerNotificationHelper;
-
-namespace WebCore {
-
-class InbandTextTrackPrivateAVFIOS;
-
-class MediaPlayerPrivateIOS : public MediaPlayerPrivateInterface, public AVFInbandTrackParent {
-public:
-
-    static void registerMediaEngine(MediaEngineRegistrar);
-    virtual ~MediaPlayerPrivateIOS();
-
-    virtual void deliverNotification(MediaPlayerProxyNotificationType) override;
-    bool callbacksDelayed() { return m_delayCallbacks &gt; 0; }
-    virtual void prepareToPlay() override;
-    void processDeferredRequests();
-
-#if ENABLE(VIDEO_TRACK)
-    void inbandTextTracksChanged(NSArray *);
-    void processInbandTextTrackCue(NSArray *, double);
-    void textTrackWasSelectedByPlugin(NSDictionary *);
-#endif
-
-private:
-    MediaPlayerPrivateIOS(MediaPlayer*);
-
-    // Engine support
-    static PassOwnPtr&lt;MediaPlayerPrivateInterface&gt; create(MediaPlayer*);
-    static void getSupportedTypes(HashSet&lt;String&gt;&amp; types);
-    static MediaPlayer::SupportsType supportsType(const MediaEngineSupportParameters&amp;);
-    static bool isAvailable();
-
-    virtual IntSize naturalSize() const override;
-    virtual bool hasVideo() const override;
-    virtual bool hasAudio() const override;
-    virtual bool supportsFullscreen() const override { return true; }
-
-    virtual bool canLoadPoster() const override { return true; }
-    virtual void setPoster(const String&amp; url) override;
-
-    virtual void setControls(bool) override;
-
-    virtual void enterFullscreen() override;
-    virtual void exitFullscreen() override;
-
-    virtual bool hasClosedCaptions() const override;
-    virtual void setClosedCaptionsVisible(bool) override;
-
-    virtual void load(const String&amp; url) override;
-#if ENABLE(MEDIA_SOURCE)
-    virtual void load(const String&amp;, MediaSourcePrivateClient*) override { }
-#endif
-    virtual void cancelLoad() override;
-
-    virtual void play() override;
-    virtual void pause() override;
-
-    virtual bool paused() const override;
-    virtual bool seeking() const override;
-
-    virtual float duration() const override;
-    virtual float currentTime() const override;
-
-    virtual void seek(float time) override;
-    void setEndTime(float);
-
-    float rate() const;
-    virtual void setRate(float inRate) override;
-    virtual float volume() const override;
-    virtual void setVolume(float inVolume) override;
-    virtual void setMuted(bool inMute) override;
-
-    int dataRate() const;
-
-    virtual MediaPlayer::NetworkState networkState() const override;
-    virtual MediaPlayer::ReadyState readyState() const override;
-    
-    float maxTimeBuffered() const;
-    virtual float maxTimeSeekable() const override;
-    virtual std::unique_ptr&lt;PlatformTimeRanges&gt; buffered() const override;
-
-    virtual bool didLoadingProgress() const override;
-    bool totalBytesKnown() const;
-    unsigned totalBytes() const;
-
-    virtual void setVisible(bool) override;
-    virtual void setSize(const IntSize&amp;) override;
-    
-    virtual void paint(GraphicsContext*, const IntRect&amp;) override;
-
-#if ENABLE(IOS_AIRPLAY)
-    virtual bool isCurrentPlaybackTargetWireless() const override;
-    virtual void showPlaybackTargetPicker() override;
-
-    virtual bool hasWirelessPlaybackTargets() const override;
-
-    virtual bool wirelessVideoPlaybackDisabled() const override;
-    virtual void setWirelessVideoPlaybackDisabled(bool) override;
-
-    virtual void setHasPlaybackTargetAvailabilityListeners(bool) override;
-#endif
-
-    virtual bool supportsAcceleratedRendering() const override;
-
-    virtual void setMediaPlayerProxy(WebMediaPlayerProxy*) override;
-    void processPendingRequests();
-
-    void setDelayCallbacks(bool doDelay) { m_delayCallbacks += (doDelay ? 1 : -1); }
-
-    bool usingNetwork() const { return m_usingNetwork; }
-    bool inFullscreen() const { return m_inFullScreen; }
-
-    void addDeferredRequest(NSString *name, id value);
-
-    virtual String engineDescription() const { return String(ASCIILiteral(&quot;iOS&quot;)); }
-
-    virtual void attributeChanged(const String&amp; name, const String&amp; value) override;
-    virtual bool readyForPlayback() const override;
-
-#if ENABLE(VIDEO_TRACK)
-    virtual bool requiresTextTrackRepresentation() const;
-    virtual void setTextTrackRepresentation(TextTrackRepresentation*);
-
-    void clearTextTracks();
-    void setSelectedTextTrack(NSNumber *);
-    virtual void trackModeChanged() override;
-    void setOutOfBandTextTracks(NSArray *);
-
-    virtual bool implementsTextTrackControls() const { return true; }
-    virtual PassRefPtr&lt;PlatformTextTrackMenuInterface&gt; textTrackMenu();
-
-    void outOfBandTextTracksChanged();
-    void textTrackWasSelectedByMediaElement(PassRefPtr&lt;PlatformTextTrack&gt;);
-#endif
-
-private:
-
-    class PlatformTextTrackMenuInterfaceIOS : public PlatformTextTrackMenuInterface {
-    public:
-        static PassRefPtr&lt;PlatformTextTrackMenuInterfaceIOS&gt; create(MediaPlayerPrivateIOS* owner)
-        {
-            return adoptRef(new PlatformTextTrackMenuInterfaceIOS(owner));
-        }
-
-        virtual ~PlatformTextTrackMenuInterfaceIOS();
-
-        virtual void tracksDidChange() override
-        {
-            if (m_owner)
-                m_owner-&gt;outOfBandTextTracksChanged();
-        }
-
-        virtual void trackWasSelected(PassRefPtr&lt;PlatformTextTrack&gt; track) override
-        {
-            if (m_owner)
-                m_owner-&gt;textTrackWasSelectedByMediaElement(track);
-        }
-
-        virtual void setClient(PlatformTextTrackMenuClient* client) override { m_client = client; }
-        PlatformTextTrackMenuClient* client() { return m_client; }
-
-    private:
-        PlatformTextTrackMenuInterfaceIOS(MediaPlayerPrivateIOS*);
-
-        PlatformTextTrackMenuClient* m_client;
-        MediaPlayerPrivateIOS* m_owner;
-    };
-
-    MediaPlayer* m_mediaPlayer;
-    RetainPtr&lt;NSObject&gt; m_mediaPlayerHelper; // This is the MediaPlayerProxy.
-    RetainPtr&lt;WebCoreMediaPlayerNotificationHelper&gt; m_objcHelper;
-    RetainPtr&lt;NSMutableDictionary&gt; m_deferredProperties;
-
-    MediaPlayer::NetworkState m_networkState;
-    MediaPlayer::ReadyState m_readyState;
-
-    enum BufferingState { Empty, UnlikeleyToKeepUp, LikeleyToKeepUp, Full };
-
-#if ENABLE(VIDEO_TRACK)
-    InbandTextTrackPrivateAVFIOS* m_currentTrack;
-    Vector&lt;RefPtr&lt;InbandTextTrackPrivateAVFIOS&gt; &gt; m_textTracks;
-    RefPtr&lt;PlatformTextTrackMenuInterfaceIOS&gt; m_menuInterface;
-#endif
-
-    int m_delayCallbacks;
-    int m_changingVolume;
-    mutable unsigned m_bytesLoadedAtLastDidLoadingProgress;
-    float m_requestedRate;
-    BufferingState m_bufferingState;
-    bool m_visible : 1;
-    bool m_usingNetwork : 1;
-    bool m_inFullScreen : 1;
-    bool m_shouldPrepareToPlay : 1;
-    bool m_preparingToPlay : 1;
-    bool m_pauseRequested : 1;
-};
-
-} // namespace WebCore
-
-#endif
-#endif // MediaPlayerPrivateIOS
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsiosMediaPlayerPrivateIOSmm"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/graphics/ios/MediaPlayerPrivateIOS.mm (168081 => 168082)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ios/MediaPlayerPrivateIOS.mm        2014-05-01 02:46:03 UTC (rev 168081)
+++ trunk/Source/WebCore/platform/graphics/ios/MediaPlayerPrivateIOS.mm        2014-05-01 02:46:07 UTC (rev 168082)
</span><span class="lines">@@ -1,1261 +0,0 @@
</span><del>-
-/*
- * Copyright (C) 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#import &quot;config.h&quot;
-
-#if ENABLE(VIDEO) &amp;&amp; PLATFORM(IOS)
-
-#import &quot;MediaPlayerPrivateIOS.h&quot;
-
-#import &quot;GraphicsLayerCA.h&quot;
-#import &quot;InbandTextTrackPrivateAVFIOS.h&quot;
-#import &quot;Logging.h&quot;
-#import &quot;PlatformTextTrack.h&quot;
-#import &quot;TextTrackRepresentation.h&quot;
-#import &quot;TimeRanges.h&quot;
-#import &quot;URL.h&quot;
-#import &quot;WAKAppKitStubs.h&quot;
-#import &quot;WebCoreThreadRun.h&quot;
-#import &lt;CoreGraphics/CoreGraphics.h&gt;
-#import &lt;wtf/NeverDestroyed.h&gt;
-#import &lt;wtf/StdLibExtras.h&gt;
-
-using namespace WebCore;
-using namespace std;
-
-@interface WebCoreMediaPlayerNotificationHelper : NSObject
-{
-    MediaPlayerPrivateIOS* _client;
-    BOOL _deferredPropertiesScheduled;
-}
-- (id)initWithClient:(MediaPlayerPrivateIOS *)client;
-- (void)disconnect;
-- (void)cancelPendingRequests;
-- (void)delayNotification:(int)notification;
-- (void)deliverNotification:(NSNumber *)notification;
-- (void)schedulePrepareToPlayWithOptionalDelay:(NSNumber *)shouldDelay;
-- (void)scheduleDeferredPropertiesWithOptionalDelay:(NSNumber *)shouldDelay;
-
-- (void)pluginElementInBandAlternateTextTracksDidChange:(NSArray *)tracks;
-- (void)pluginElementDidSelectTextTrack:(NSString *)trackId;
-- (void)pluginElementDidOutputAttributedStrings:(NSArray *)strings nativeSampleBuffers:(NSArray *)buffers forTime:(NSTimeInterval)time;
-@end
-
-// Private selectors implemented by the media player proxy object returned by the plug-in.
-@interface NSObject (WebMediaPlayerProxy_Extras)
-- (void)_attributeChanged:(NSString *)name value:(NSString *)value;
-- (BOOL)_readyForPlayback;
-@end
-
-namespace WebCore {
-
-const int kRequiredHelperInterfaceVersion = 1;
-
-static NSString * const DeferredPropertyControlsKey = @&quot;controls&quot;;
-static NSString * const DeferredPropertyPosterKey = @&quot;poster&quot;;
-static NSString * const DeferredPropertySrcKey = @&quot;src&quot;;
-static NSString * const DeferredPlayKey = @&quot;play&quot;;
-static NSString * const DeferredPropertySelectedTrackKey = @&quot;selectedtrack&quot;;
-static NSString * const DeferredPropertyOutOfBandTracksKey = @&quot;outofbandtracks&quot;;
-#if ENABLE(IOS_AIRPLAY)
-static NSString * const DeferredWirelessVideoPlaybackDisabled = @&quot;wirelessVideoPlaybackDisabled&quot;;
-#endif
-
-static NSString * const TextTrackDisplayNameKey = @&quot;displayname&quot;;
-static NSString * const TextTrackLocaleIdentifierKey = @&quot;localeidentifier&quot;;
-static NSString * const TextTrackSubtitlesKey = @&quot;subtitles&quot;;
-static NSString * const TextTrackCaptionsKey = @&quot;captions&quot;;
-static NSString * const TextTrackTypeKey = @&quot;type&quot;;
-static NSString * const TextTrackIDKey = @&quot;id&quot;;
-
-const int TextTrackOffMenuItemID = -1;
-const int TextTrackAutoMenuItemID = -2;
-
-MediaPlayerPrivateIOS::PlatformTextTrackMenuInterfaceIOS::PlatformTextTrackMenuInterfaceIOS(MediaPlayerPrivateIOS* owner)
-    : m_client(nullptr)
-    , m_owner(owner)
-{
-}
-        
-MediaPlayerPrivateIOS::PlatformTextTrackMenuInterfaceIOS::~PlatformTextTrackMenuInterfaceIOS()
-{
-    m_owner = nullptr;
-    m_client = nullptr;
-}
-
-PassOwnPtr&lt;MediaPlayerPrivateInterface&gt; MediaPlayerPrivateIOS::create(MediaPlayer* player)
-{ 
-    return adoptPtr(new MediaPlayerPrivateIOS(player));
-}
-
-void MediaPlayerPrivateIOS::registerMediaEngine(MediaEngineRegistrar registrar)
-{
-    if (isAvailable())
-        registrar(create, getSupportedTypes, supportsType, 0, 0, 0, 0);
-}
-
-MediaPlayerPrivateIOS::MediaPlayerPrivateIOS(MediaPlayer* player)
-    : m_mediaPlayer(player)
-    , m_objcHelper(adoptNS([[WebCoreMediaPlayerNotificationHelper alloc] initWithClient:this]))
-    , m_networkState(MediaPlayer::Empty)
-    , m_readyState(MediaPlayer::HaveNothing)
-#if ENABLE(VIDEO_TRACK)
-    , m_currentTrack(nullptr)
-#endif
-    , m_delayCallbacks(0)
-    , m_changingVolume(0)
-    , m_bytesLoadedAtLastDidLoadingProgress(0)
-    , m_requestedRate(0)
-    , m_bufferingState(Empty)
-    , m_visible(false)
-    , m_usingNetwork(false)
-    , m_inFullScreen(false)
-    , m_shouldPrepareToPlay(false)
-    , m_preparingToPlay(false)
-    , m_pauseRequested(false)
-{
-}
-
-MediaPlayerPrivateIOS::~MediaPlayerPrivateIOS()
-{
-    clearTextTracks();
-    [m_objcHelper.get() disconnect];
-    if ([m_mediaPlayerHelper.get() respondsToSelector:@selector(_setDelegate:)])
-        [m_mediaPlayerHelper.get() _setDelegate:nil];
-    [m_mediaPlayerHelper.get() _disconnect];
-}
-
-void MediaPlayerPrivateIOS::setMediaPlayerProxy(WebMediaPlayerProxy *proxy)
-{
-    if (m_mediaPlayerHelper)
-        [m_mediaPlayerHelper.get() _disconnect];
-
-    m_mediaPlayerHelper = nullptr;
-
-    if (proxy) {
-        // don't try to use a helper if the interface version is too low
-        if ([proxy _interfaceVersion] &lt;  kRequiredHelperInterfaceVersion) {
-            NSLog(@&quot;Media player helper interface version too low, exiting.&quot;);
-            return;
-        }
-        m_mediaPlayerHelper = adoptNS(static_cast&lt;NSObject *&gt;([proxy retain]));
-        if ([m_mediaPlayerHelper.get() respondsToSelector:@selector(_setDelegate:)])
-            [m_mediaPlayerHelper.get() _setDelegate:m_objcHelper.get()];
-
-        acceleratedRenderingStateChanged();
-    }
-
-    processPendingRequests();
-}
-
-void MediaPlayerPrivateIOS::load(const String&amp; url)
-{
-    NSURL *nsURL = URL(ParsedURLString, url);
-
-    if (!m_mediaPlayerHelper) {
-        addDeferredRequest(DeferredPropertySrcKey, [nsURL absoluteString]);
-        return;
-    }
-
-    [m_deferredProperties.get() removeObjectForKey:DeferredPropertySrcKey];
-    setDelayCallbacks(true);
-    {
-        if (m_networkState != MediaPlayer::Loading) {
-            m_networkState = MediaPlayer::Loading;
-            m_mediaPlayer-&gt;networkStateChanged();
-        }
-        if (m_readyState != MediaPlayer::HaveNothing) {
-            m_readyState = MediaPlayer::HaveNothing;
-            m_mediaPlayer-&gt;readyStateChanged();
-        }
-
-        m_pauseRequested = false;
-        m_preparingToPlay = false;
-
-        [m_mediaPlayerHelper.get() _cancelLoad];
-        [m_mediaPlayerHelper.get() _load:nsURL];
-    }
-    setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::cancelLoad()
-{
-    [m_objcHelper.get() cancelPendingRequests];
-    [m_deferredProperties.get() removeAllObjects];
-
-    if (!m_mediaPlayerHelper)
-        return;
-    [m_mediaPlayerHelper.get() _cancelLoad];
-}
-
-void MediaPlayerPrivateIOS::addDeferredRequest(NSString *name, id value)
-{
-    if (!m_deferredProperties)
-        m_deferredProperties = adoptNS([[NSMutableDictionary alloc] init]);
-    [m_deferredProperties.get() setObject:value ? value : @&quot;&quot; forKey:name];
-}
-
-void MediaPlayerPrivateIOS::processDeferredRequests()
-{
-    if (![m_deferredProperties.get() count])
-        return;
-
-    setDelayCallbacks(true);
-    {
-        RetainPtr&lt;NSDictionary&gt; localProperties = adoptNS([[NSDictionary alloc] initWithDictionary:m_deferredProperties.get()]);
-        [m_deferredProperties.get() removeAllObjects];
-
-        // Always set the src first.
-        id value = [localProperties.get() objectForKey:DeferredPropertySrcKey];
-        if (value)
-            load(value);
-
-        for (NSString *name in localProperties.get()) {
-            value = [localProperties.get() objectForKey:name];
-
-            LOG(Media, &quot;MediaPlayerPrivateIOS::processDeferredRequests(%p) - processing %s&quot;, this, [name UTF8String]);
-
-            if ([name isEqualToString:DeferredPropertyPosterKey])
-                setPoster(value);
-            else if ([name isEqualToString:DeferredPropertyControlsKey])
-                setControls([value boolValue]);
-            else if ([name isEqualToString:DeferredPlayKey])
-                play();
-            else if ([name isEqualToString:DeferredPropertyOutOfBandTracksKey])
-                setOutOfBandTextTracks(value);
-            else if ([name isEqualToString:DeferredPropertySelectedTrackKey])
-                setSelectedTextTrack(value);
-#if ENABLE(IOS_AIRPLAY)
-            else if ([name isEqualToString:DeferredWirelessVideoPlaybackDisabled])
-                setWirelessVideoPlaybackDisabled([value boolValue]);
-#endif
-            else if (![name isEqualToString:DeferredPropertySrcKey])
-                attributeChanged(name, value);
-        }
-    }
-    setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::setPoster(const String&amp; url)
-{
-    setDelayCallbacks(true);
-    {
-        NSURL *nsURL = URL(ParsedURLString, url);
-        if (m_mediaPlayerHelper) {
-            [m_deferredProperties.get() removeObjectForKey:DeferredPropertyPosterKey];
-            [m_mediaPlayerHelper.get() _setPoster:nsURL];
-        }
-        else
-            addDeferredRequest(DeferredPropertyPosterKey, url);
-    }
-    setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::setControls(bool controls)
-{
-    setDelayCallbacks(true);
-    {
-        if (m_mediaPlayerHelper) {
-            [m_deferredProperties.get() removeObjectForKey:DeferredPropertyControlsKey];
-            [m_mediaPlayerHelper.get() _setControls:controls];
-        }
-        else
-            addDeferredRequest(DeferredPropertyControlsKey, [NSNumber numberWithBool:controls]);
-    }
-    setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::processPendingRequests()
-{
-    if (m_shouldPrepareToPlay &amp;&amp; !m_preparingToPlay)
-        [m_objcHelper.get() schedulePrepareToPlayWithOptionalDelay:[NSNumber numberWithBool:YES]];
-    if ([m_deferredProperties.get() count])
-        [m_objcHelper.get() scheduleDeferredPropertiesWithOptionalDelay:[NSNumber numberWithBool:YES]];
-    m_shouldPrepareToPlay = false;
-}
-
-void MediaPlayerPrivateIOS::prepareToPlay()
-{
-    if (!m_mediaPlayerHelper) {
-        // Not hooked up to the plug-in yet, remember this request.
-        m_shouldPrepareToPlay = true;
-        return;
-    }
-
-    if (m_preparingToPlay || m_readyState &gt;= MediaPlayer::HaveFutureData)
-        return;
-
-    m_shouldPrepareToPlay = false;
-    m_preparingToPlay = true;
-
-    setDelayCallbacks(true);
-        [m_mediaPlayerHelper.get() _prepareForPlayback];
-    setDelayCallbacks(false);
-}
-
-
-void MediaPlayerPrivateIOS::play()
-{
-    if (!m_mediaPlayerHelper) {
-        addDeferredRequest(DeferredPlayKey, nil);
-        return;
-    }
-
-    m_pauseRequested = false;
-    setDelayCallbacks(true);
-        [m_mediaPlayerHelper.get() _play];
-    setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::pause()
-{
-    if (!m_mediaPlayerHelper)
-        return;
-
-    m_pauseRequested = true;
-    setDelayCallbacks(true);
-        [m_mediaPlayerHelper.get() _pause];
-    setDelayCallbacks(false);
-}
-
-float MediaPlayerPrivateIOS::duration() const
-{
-    if (!m_mediaPlayerHelper)
-        return 0;
-    float duration = static_cast&lt;float&gt;([m_mediaPlayerHelper.get() _duration]);
-    return duration == -1 ? numeric_limits&lt;float&gt;::infinity() : duration;
-}
-
-float MediaPlayerPrivateIOS::currentTime() const
-{
-    if (!m_mediaPlayerHelper)
-        return 0;
-    return static_cast&lt;float&gt;([m_mediaPlayerHelper.get() _currentTime]);
-}
-
-void MediaPlayerPrivateIOS::seek(float time)
-{
-    if (!m_mediaPlayerHelper)
-        return;
-    float duration = this-&gt;duration();
-    [m_mediaPlayerHelper.get() _setCurrentTime:(time &gt; duration ? duration : time)];
-}
-
-void MediaPlayerPrivateIOS::setEndTime(float time)
-{
-    if (!m_mediaPlayerHelper)
-        return;
-    [m_mediaPlayerHelper.get() _setEndTime:time];
-}
-
-bool MediaPlayerPrivateIOS::paused() const
-{
-    if (!m_mediaPlayerHelper)
-        return true;
-    return !rate();
-}
-
-bool MediaPlayerPrivateIOS::seeking() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    return [m_mediaPlayerHelper.get() _seeking];
-}
-
-IntSize MediaPlayerPrivateIOS::naturalSize() const
-{
-    if (!m_mediaPlayerHelper)
-        return IntSize();
-
-    NSSize size = [m_mediaPlayerHelper.get() _naturalSize];
-    return IntSize(size);
-}
-
-bool MediaPlayerPrivateIOS::hasVideo() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    return [m_mediaPlayerHelper.get() _hasVideo];
-}
-
-bool MediaPlayerPrivateIOS::hasAudio() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    return [m_mediaPlayerHelper.get() _hasAudio];
-}
-
-float MediaPlayerPrivateIOS::volume() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    return [m_mediaPlayerHelper.get() _volume];
-}
-
-void MediaPlayerPrivateIOS::setVolume(float inVolume)
-{
-    if (!m_mediaPlayerHelper || m_changingVolume)
-        return;
-    [m_mediaPlayerHelper.get() _setVolume:inVolume];
-}
-
-float MediaPlayerPrivateIOS::rate() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    return [m_mediaPlayerHelper.get() _rate];
-}
-
-void MediaPlayerPrivateIOS::setRate(float inRate)
-{
-    if (!m_mediaPlayerHelper)
-        return;
-    m_requestedRate = inRate;
-    [m_mediaPlayerHelper.get() _setRate:inRate];
-}
-
-void MediaPlayerPrivateIOS::setMuted(bool inMute)
-{
-    if (!m_mediaPlayerHelper)
-        return;
-    [m_mediaPlayerHelper.get() _setMuted:inMute];
-}
-
-int MediaPlayerPrivateIOS::dataRate() const
-{
-    if (!m_mediaPlayerHelper)
-        return 0;
-    return [m_mediaPlayerHelper.get() _dataRate];
-}
-
-MediaPlayer::NetworkState MediaPlayerPrivateIOS::networkState() const 
-{ 
-    return m_networkState;
-}
-
-MediaPlayer::ReadyState MediaPlayerPrivateIOS::readyState() const 
-{
-    return m_readyState;
-}
-
-float MediaPlayerPrivateIOS::maxTimeBuffered() const
-{
-    if (!m_mediaPlayerHelper)
-        return 0;
-    return [m_mediaPlayerHelper.get() _maxTimeBuffered];
-}
-
-bool MediaPlayerPrivateIOS::didLoadingProgress() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    unsigned currentBytesLoaded = [m_mediaPlayerHelper.get() _bytesLoaded];
-    bool didLoadingProgress = currentBytesLoaded != m_bytesLoadedAtLastDidLoadingProgress;
-    m_bytesLoadedAtLastDidLoadingProgress = currentBytesLoaded;
-    return didLoadingProgress;
-}
-
-bool MediaPlayerPrivateIOS::totalBytesKnown() const
-{
-    return totalBytes() &gt; 0;
-}
-
-unsigned MediaPlayerPrivateIOS::totalBytes() const
-{
-    if (!m_mediaPlayerHelper)
-        return 0;
-    return [m_mediaPlayerHelper.get() _totalBytes];
-}
-
-float MediaPlayerPrivateIOS::maxTimeSeekable() const
-{
-    if (!m_mediaPlayerHelper)
-        return 0.0f;
-    return [m_mediaPlayerHelper.get() _maxTimeSeekable];
-}
-
-std::unique_ptr&lt;PlatformTimeRanges&gt; MediaPlayerPrivateIOS::buffered() const
-{
-    auto timeRanges = PlatformTimeRanges::create();
-
-    if (!m_mediaPlayerHelper)
-        return timeRanges;
-
-    NSArray *ranges = [m_mediaPlayerHelper.get() _bufferedTimeRanges];
-    if (!ranges)
-        return timeRanges;
-
-    float timeRange[2];
-    int count = [ranges count];
-    for (int i = 0; i &lt; count; ++i) {
-        NSData *range = [ranges objectAtIndex:i];
-        [range getBytes:timeRange length:(NSUInteger)sizeof(timeRange)];
-
-        timeRanges-&gt;add(timeRange[0], timeRange[1]);
-    }
-
-    return timeRanges;
-}
-
-void MediaPlayerPrivateIOS::setSize(const IntSize&amp;)
-{
-    // FIXME: Do we need to do anything here?
-}
-
-void MediaPlayerPrivateIOS::setVisible(bool visible)
-{
-    // FIXME: Do we need to do anything more here?
-    if (m_visible != visible)
-        m_visible = visible;
-}
-
-void MediaPlayerPrivateIOS::paint(GraphicsContext*, const IntRect&amp;)
-{
-    // Nothing to do here.
-}
-
-static HashSet&lt;String&gt; mimeTypeCache()
-{
-    static NeverDestroyed&lt;HashSet&lt;String&gt;&gt; typeCache;
-    static bool typeListInitialized = false;
-
-    if (typeListInitialized)
-        return typeCache;
-
-    typeListInitialized = true;
-
-    // FIXME: Should get these from the helper, but we don't have an instance when this is called.
-    static const char* typeList[] = {
-        &quot;application/x-mpegurl&quot;,
-        &quot;application/vnd.apple.mpegurl&quot;,
-        &quot;audio/3gpp&quot;,
-        &quot;audio/3gpp2&quot;,
-        &quot;audio/aac&quot;,
-        &quot;audio/aiff&quot;,
-        &quot;audio/amr&quot;,
-        &quot;audio/basic&quot;,
-        &quot;audio/mp3&quot;,
-        &quot;audio/mp4&quot;,
-        &quot;audio/mpeg&quot;,
-        &quot;audio/mpegurl&quot;,
-        &quot;audio/mpeg3&quot;,
-        &quot;audio/scpls&quot;,
-        &quot;audio/wav&quot;,
-        &quot;audio/x-aac&quot;,
-        &quot;audio/x-aiff&quot;,
-        &quot;audio/x-caf&quot;,
-        &quot;audio/x-m4a&quot;,
-        &quot;audio/x-m4b&quot;,
-        &quot;audio/x-m4p&quot;,
-        &quot;audio/x-m4r&quot;,
-        &quot;audio/x-mp3&quot;,
-        &quot;audio/x-mpeg&quot;,
-        &quot;audio/x-mpeg3&quot;,
-        &quot;audio/x-mpegurl&quot;,
-        &quot;audio/x-scpls&quot;,
-        &quot;audio/x-wav&quot;,
-        &quot;video/3gpp&quot;,
-        &quot;video/3gpp2&quot;,
-        &quot;video/mp4&quot;,
-        &quot;video/quicktime&quot;,
-        &quot;video/x-m4v&quot;,
-
-        // FIXME: This is added to restore old behavior for:
-        // &lt;rdar://problem/9792964&gt; Embedded videos don't play on spiegel.de (.html file redirects)
-        // However, a better fix is tracked by:
-        // &lt;http://webkit.org/b/64811&gt; &lt;video&gt; &quot;.html&quot; src with a 301 redirect fails to load
-        &quot;text/html&quot;,
-    };
-    for (unsigned i = 0; i &lt; WTF_ARRAY_LENGTH(typeList); ++i)
-        typeCache.get().add(typeList[i]);
-
-    return typeCache;
-}
-
-MediaPlayer::SupportsType MediaPlayerPrivateIOS::supportsType(const MediaEngineSupportParameters&amp; parameters)
-{
-    // Only return &quot;IsSupported&quot; if there is no codecs parameter for now as there is no way to ask CoreMedia
-    // if it supports an extended MIME type.
-    if (!parameters.type.isEmpty() &amp;&amp; mimeTypeCache().contains(parameters.type))
-        return parameters.codecs.isEmpty() ? MediaPlayer::MayBeSupported : MediaPlayer::IsSupported;
-
-    return MediaPlayer::IsNotSupported;
-}
-
-void MediaPlayerPrivateIOS::getSupportedTypes(HashSet&lt;String&gt;&amp; types)
-{
-    types = mimeTypeCache();
-}
-
-bool MediaPlayerPrivateIOS::isAvailable()
-{
-    return true;
-}
-
-#if ENABLE(IOS_AIRPLAY)
-bool MediaPlayerPrivateIOS::isCurrentPlaybackTargetWireless() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    return [m_mediaPlayerHelper.get() _isCurrentPlaybackTargetWireless];
-}
-
-void MediaPlayerPrivateIOS::showPlaybackTargetPicker()
-{
-    setDelayCallbacks(true);
-        [m_mediaPlayerHelper.get() _showPlaybackTargetPicker];
-    setDelayCallbacks(false);
-}
-
-bool MediaPlayerPrivateIOS::hasWirelessPlaybackTargets() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    return [m_mediaPlayerHelper.get() _hasWirelessPlaybackTargets];
-}
-
-bool MediaPlayerPrivateIOS::wirelessVideoPlaybackDisabled() const
-{
-    if (!m_mediaPlayerHelper)
-        return false;
-    return [m_mediaPlayerHelper.get() _wirelessVideoPlaybackDisabled];
-}
-
-void MediaPlayerPrivateIOS::setWirelessVideoPlaybackDisabled(bool disabled)
-{
-    setDelayCallbacks(true);
-    {
-        if (m_mediaPlayerHelper) {
-            [m_deferredProperties.get() removeObjectForKey:DeferredWirelessVideoPlaybackDisabled];
-            [m_mediaPlayerHelper.get() _setWirelessVideoPlaybackDisabled:disabled];
-        } else
-            addDeferredRequest(DeferredWirelessVideoPlaybackDisabled, [NSNumber numberWithBool:disabled]);
-    }
-    setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::setHasPlaybackTargetAvailabilityListeners(bool hasListeners)
-{
-    [m_mediaPlayerHelper.get() _setHasPlaybackTargetAvailabilityListeners:hasListeners];
-}
-#endif
-
-bool MediaPlayerPrivateIOS::supportsAcceleratedRendering() const
-{
-    return true;
-}
-
-void MediaPlayerPrivateIOS::enterFullscreen()
-{
-    // The const cast is a workaround due to OpenSource changing the signature to const.
-    MediaPlayerPrivateIOS* mutableThis = const_cast&lt;MediaPlayerPrivateIOS*&gt;(this);
-    mutableThis-&gt;setDelayCallbacks(true);
-    [m_mediaPlayerHelper.get() _enterFullScreen];
-    mutableThis-&gt;setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::exitFullscreen()
-{
-    setDelayCallbacks(true);
-    [m_mediaPlayerHelper.get() _exitFullScreen];
-    setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::attributeChanged(const String&amp; name, const String&amp; value)
-{
-    if (!m_mediaPlayerHelper) {
-        addDeferredRequest(name, value);
-        return;
-    }
-
-    if (![m_mediaPlayerHelper.get() respondsToSelector:@selector(_attributeChanged:value:)])
-        return;
-
-    setDelayCallbacks(true);
-    [m_mediaPlayerHelper.get() _attributeChanged:name value:value];
-    setDelayCallbacks(false);
-}
-
-bool MediaPlayerPrivateIOS::readyForPlayback() const
-{
-    if ([m_mediaPlayerHelper.get() respondsToSelector:@selector(_readyForPlayback)])
-        return [m_mediaPlayerHelper.get() _readyForPlayback];
-    return MediaPlayerPrivateInterface::readyForPlayback();
-}
-
-bool MediaPlayerPrivateIOS::hasClosedCaptions() const
-{
-    return [m_mediaPlayerHelper.get() _hasClosedCaptions];
-}    
-
-void MediaPlayerPrivateIOS::setClosedCaptionsVisible(bool flag)
-{
-    [m_mediaPlayerHelper.get() _setClosedCaptionsVisible:flag];
-}
-
-void MediaPlayerPrivateIOS::deliverNotification(MediaPlayerProxyNotificationType notification) 
-{
-    LOG(Media, &quot;MediaPlayerPrivateIOS::deliverNotification(%p) - notification = %i, entering with networkState = %i, readyState = %i&quot;, 
-        this, static_cast&lt;int&gt;(notification), static_cast&lt;int&gt;(m_networkState), static_cast&lt;int&gt;(m_readyState));
-
-    if (!m_mediaPlayer)
-        return;
-
-    if (callbacksDelayed()) {
-        [m_objcHelper.get() delayNotification:notification];
-        return;
-    }
-
-    MediaPlayer::NetworkState oldNetworkState = m_networkState;
-    MediaPlayer::ReadyState oldReadyState = m_readyState;
-
-    switch (notification) {
-    case MediaPlayerNotificationStartUsingNetwork:
-        m_usingNetwork = true;
-        if (m_networkState &lt; MediaPlayer::Loading)
-            m_networkState = MediaPlayer::Loading;
-        break;
-    case MediaPlayerNotificationStopUsingNetwork:
-        m_usingNetwork = false;
-        if (m_readyState &lt; MediaPlayer::HaveCurrentData &amp;&amp; m_networkState &lt; MediaPlayer::FormatError)
-            m_networkState = MediaPlayer::Idle;
-        break;
-
-    case MediaPlayerNotificationGainFocus:
-        if (m_networkState &lt; MediaPlayer::Loading)
-            m_networkState = MediaPlayer::Loading;
-        break;
-
-    case MediaPlayerNotificationLoseFocus:
-        if (m_networkState &lt; MediaPlayer::FormatError)
-            m_networkState = MediaPlayer::Idle;
-        if (m_readyState &gt; MediaPlayer::HaveMetadata)
-            m_readyState = MediaPlayer::HaveMetadata;
-        break;
-
-    case MediaPlayerNotificationEnteredFullscreen:
-        m_inFullScreen = true;
-        break;
-
-    case MediaPlayerNotificationExitedFullscreen: {
-        m_inFullScreen = false;
-#if ENABLE(VIDEO_TRACK)
-        setTextTrackRepresentation(0);
-#endif
-        break;
-    }
-
-    case MediaPlayerNotificationReadyForInspection:
-        // The buffering state sometimes reaches &quot;likely to keep up&quot; or &quot;full&quot; before the player item is
-        // ready for inspection. In that case advance directly to HaveEnoughData.
-        if (m_bufferingState &gt; UnlikeleyToKeepUp)
-            m_readyState = MediaPlayer::HaveEnoughData;
-        else
-            m_readyState = MediaPlayer::HaveCurrentData;
-        break;
-
-    case MediaPlayerNotificationMediaValidated:
-        if (m_networkState &lt; MediaPlayer::Idle &amp;&amp; !m_preparingToPlay)
-            m_networkState = MediaPlayer::Idle;
-        processPendingRequests();
-        break;
-
-    case MediaPlayerNotificationMediaFailedToValidate:
-        m_networkState = MediaPlayer::FormatError;
-        m_readyState = MediaPlayer::HaveNothing; 
-        m_usingNetwork = false;
-        m_preparingToPlay = false;
-        break;
-
-    case MediaPlayerNotificationPlaybackFailed: {
-        // FIXME: We can't currently tell the difference between NetworkError and DecodeError.
-        m_networkState = MediaPlayer::DecodeError;
-
-        // Don't reset readyState, what we have loaded already may be playable.
-        m_usingNetwork = false;
-        break;
-    }
-
-    case MediaPlayerNotificationReadyForPlayback:
-        if (m_networkState &lt; MediaPlayer::Loading)
-            m_networkState = MediaPlayer::Loading;
-        m_readyState = MediaPlayer::HaveFutureData;
-        break;
-
-    case MediaPlayerNotificationDidPlayToTheEnd:
-        m_mediaPlayer-&gt;timeChanged();
-        break;
-
-    case MediaPlayerNotificationStreamLikelyToKeepUp:
-        if (m_networkState &lt; MediaPlayer::Loading)
-            m_networkState = MediaPlayer::Loading;
-        if (m_readyState &gt; MediaPlayer::HaveMetadata &amp;&amp; m_readyState &lt; MediaPlayer::HaveEnoughData)
-            m_readyState = MediaPlayer::HaveEnoughData;
-        m_bufferingState = LikeleyToKeepUp;
-        break;
-
-    case MediaPlayerNotificationStreamBufferFull:
-        // The media buffers are full so no more data can be loaded. This isn't really the the same thing as 
-        // &quot;HaveFutureData&quot;, but nothing more will be loaded until playback consumes some of the buffered data
-        // so bump the readyState to allow playback.
-        if (m_readyState &gt; MediaPlayer::HaveMetadata &amp;&amp; m_readyState &lt; MediaPlayer::HaveEnoughData)
-            m_readyState = MediaPlayer::HaveFutureData;
-        m_networkState = MediaPlayer::Idle;
-        m_bufferingState = Full;
-        break;
-
-    case MediaPlayerNotificationStreamRanDry:
-        m_networkState = MediaPlayer::Loading;
-        if (m_readyState &gt; MediaPlayer::HaveMetadata)
-            m_readyState = MediaPlayer::HaveCurrentData;
-        m_bufferingState = Empty;
-        break;
-
-    case MediaPlayerNotificationStreamUnlikelyToKeepUp:
-        m_networkState = MediaPlayer::Loading;
-        if (m_readyState &gt; MediaPlayer::HaveMetadata &amp;&amp; m_readyState &lt; MediaPlayer::HaveEnoughData)
-            m_readyState = MediaPlayer::HaveFutureData;
-        m_bufferingState = UnlikeleyToKeepUp;
-        break;
-
-    case MediaPlayerNotificationFileLoaded:
-        m_networkState = MediaPlayer::Loaded;
-        m_readyState = MediaPlayer::HaveEnoughData;
-        break;
-
-    case MediaPlayerNotificationTimeJumped:
-        // Sometimes get a spurious &quot;time jumped&quot; when the movie is being set up or immediately after pausing, 
-        // don't fall for it.
-        if (m_readyState &gt;= MediaPlayer::HaveCurrentData)
-            m_mediaPlayer-&gt;timeChanged();
-        break;
-
-    case MediaPlayerNotificationMutedDidChange:
-    case MediaPlayerNotificationVolumeDidChange:
-        ++m_changingVolume;
-        m_mediaPlayer-&gt;volumeChanged(volume());
-        --m_changingVolume;
-        break;
-
-    case MediaPlayerNotificationSizeDidChange:
-        break;
-
-    case MediaPlayerNotificationPlayPauseButtonPressed:
-    case MediaPlayerRequestBeginPlayback:
-    case MediaPlayerRequestPausePlayback:
-        break;
-
-    case MediaPlayerNotificationRateDidChange:
-        m_preparingToPlay = false;
-        if (m_pauseRequested &amp;&amp; rate())
-            m_pauseRequested = false;
-        break;
-
-#if ENABLE(IOS_AIRPLAY)
-    case MediaPlayerNotificationCurrentPlaybackTargetIsWirelessChanged:
-        m_mediaPlayer-&gt;currentPlaybackTargetIsWirelessChanged();
-        break;
-
-    case MediaPlayerNotificationPlaybackTargetAvailabilityChanged:
-        m_mediaPlayer-&gt;playbackTargetAvailabilityChanged();
-        break;
-#endif
-    }
-
-    if (m_networkState != oldNetworkState)
-        m_mediaPlayer-&gt;networkStateChanged();
-    if (m_readyState != oldReadyState)
-        m_mediaPlayer-&gt;readyStateChanged();
-
-    LOG(Media, &quot;MediaPlayerPrivateIOS::deliverNotification(%p) - exiting with networkState = %i, readyState = %i&quot;, 
-        this, static_cast&lt;int&gt;(m_networkState), static_cast&lt;int&gt;(m_readyState));
-}
-
-#if ENABLE(VIDEO_TRACK)
-bool MediaPlayerPrivateIOS::requiresTextTrackRepresentation() const
-{
-    return m_inFullScreen;
-}
-
-void MediaPlayerPrivateIOS::setTextTrackRepresentation(TextTrackRepresentation* representation)
-{
-    [m_mediaPlayerHelper.get() _setTextTrackRepresentation:representation ? representation-&gt;platformLayer() : nullptr];
-}
-
-void MediaPlayerPrivateIOS::inbandTextTracksChanged(NSArray *tracks)
-{
-    Vector&lt;RefPtr&lt;InbandTextTrackPrivateAVFIOS&gt; &gt; removedTextTracks = m_textTracks;
-
-    for (NSDictionary *trackInfo in tracks) {
-        bool newTrack = true;
-        NSNumber *trackIDValue  = [trackInfo objectForKey:TextTrackIDKey];
-
-        if (![trackIDValue isKindOfClass:[NSNumber class]]) {
-            NSLog(@&quot;Unexpected track ID, ignoring.&quot;);
-            continue;
-        }
-
-        int trackID = [trackIDValue intValue];
-        for (unsigned i = removedTextTracks.size(); i &gt; 0; --i) {
-            RefPtr&lt;InbandTextTrackPrivateAVFIOS&gt; track = static_cast&lt;InbandTextTrackPrivateAVFIOS*&gt;(removedTextTracks[i - 1].get());
-
-            if (track-&gt;internalID() == trackID) {
-                removedTextTracks.remove(i - 1);
-                newTrack = false;
-                break;
-            }
-        }
-        if (!newTrack)
-            continue;
-
-        NSString *name = [trackInfo objectForKey:TextTrackDisplayNameKey];
-        NSString *language = [trackInfo objectForKey:TextTrackLocaleIdentifierKey];
-        NSString *type = [trackInfo objectForKey:TextTrackTypeKey];
-
-        LOG(Media, &quot;MediaPlayerPrivateIOS::inbandTextTracksChanged(%p) - adding track id %i, name = %s, language = %s, type = %s&quot;, this, trackID, [name UTF8String], [language UTF8String], [type UTF8String]);
-
-        m_textTracks.append(InbandTextTrackPrivateAVFIOS::create(this, trackID, name, language, type));
-    }
-
-    if (removedTextTracks.size()) {
-        for (unsigned i = m_textTracks.size(); i &gt; 0; --i) {
-            RefPtr&lt;InbandTextTrackPrivateAVFIOS&gt; track = static_cast&lt;InbandTextTrackPrivateAVFIOS*&gt;(m_textTracks[i - 1].get());
-
-            if (!removedTextTracks.contains(track))
-                continue;
-
-            if (m_currentTrack == track.get())
-                m_currentTrack = nullptr;
-            m_mediaPlayer-&gt;removeTextTrack(track);
-            m_textTracks.remove(i - 1);
-        }
-    }
-
-    for (unsigned i = 0; i &lt; m_textTracks.size(); ++i) {
-        RefPtr&lt;InbandTextTrackPrivateAVFIOS&gt; track = static_cast&lt;InbandTextTrackPrivateAVFIOS*&gt;(m_textTracks[i].get());
-
-        track-&gt;setTextTrackIndex(i);
-        if (track-&gt;hasBeenReported())
-            continue;
-
-        track-&gt;setHasBeenReported(true);
-        m_mediaPlayer-&gt;addTextTrack(track.get());
-    }
-    LOG(Media, &quot;MediaPlayerPrivateIOS::inbandTextTracksChanged(%p) - found %i in-band tracks&quot;, this, m_textTracks.size());
-}
-
-void MediaPlayerPrivateIOS::setSelectedTextTrack(NSNumber *trackID)
-{
-    if (![trackID isKindOfClass:[NSNumber class]]) {
-        NSLog(@&quot;Unexpected track ID, ignoring.&quot;);
-        return;
-    }
-
-    if (!m_mediaPlayerHelper) {
-        addDeferredRequest(DeferredPropertySelectedTrackKey, trackID);
-        return;
-    }
-
-    if (![m_mediaPlayerHelper.get() respondsToSelector:@selector(_setSelectedTextTrack:)])
-        return;
-
-    setDelayCallbacks(true);
-    {
-        LOG(Media, &quot;MediaPlayerPrivateIOS::setSelectedTextTrack(%p) - selecting track id %i&quot;, this, [trackID intValue]);
-        [m_deferredProperties.get() removeObjectForKey:DeferredPropertySelectedTrackKey];
-        [m_mediaPlayerHelper.get() _setSelectedTextTrack:trackID];
-    }
-    setDelayCallbacks(false);
-}
-
-void MediaPlayerPrivateIOS::trackModeChanged()
-{
-    RefPtr&lt;InbandTextTrackPrivateAVF&gt; trackToEnable;
-
-    // AVFoundation can only emit cues for one track at a time, so enable the first track that is showing, or the first that
-    // is hidden if none are showing. Otherwise disable all tracks.
-    for (unsigned i = 0; i &lt; m_textTracks.size(); ++i) {
-        RefPtr&lt;InbandTextTrackPrivateAVFIOS&gt; track = m_textTracks[i];
-        if (track-&gt;mode() == InbandTextTrackPrivate::Showing) {
-            trackToEnable = track;
-            break;
-        }
-        if (!trackToEnable &amp;&amp; track-&gt;mode() == InbandTextTrackPrivate::Hidden)
-            trackToEnable = track;
-    }
-
-    InbandTextTrackPrivateAVFIOS* trackPrivate = static_cast&lt;InbandTextTrackPrivateAVFIOS*&gt;(trackToEnable.get());
-    if (m_currentTrack == trackPrivate)
-        return;
-
-    m_currentTrack = trackPrivate;
-    setSelectedTextTrack(trackPrivate ? [NSNumber numberWithInt:trackPrivate-&gt;internalID()] : nil);
-}
-
-void MediaPlayerPrivateIOS::clearTextTracks()
-{
-    m_currentTrack = nullptr;
-    for (unsigned i = 0; i &lt; m_textTracks.size(); ++i) {
-        RefPtr&lt;InbandTextTrackPrivateAVFIOS&gt; track = m_textTracks[i];
-        m_mediaPlayer-&gt;removeTextTrack(track);
-        track-&gt;disconnect();
-    }
-    m_textTracks.clear();
-}
-
-void MediaPlayerPrivateIOS::processInbandTextTrackCue(NSArray *attributedStrings, double time)
-{
-    if (!m_currentTrack)
-        return;
-
-    m_currentTrack-&gt;processCue(reinterpret_cast&lt;CFArrayRef&gt;(attributedStrings), time);
-}
-
-void MediaPlayerPrivateIOS::setOutOfBandTextTracks(NSArray *tracksArray)
-{
-    if (!m_mediaPlayerHelper) {
-        addDeferredRequest(DeferredPropertyOutOfBandTracksKey, tracksArray);
-        return;
-    }
-
-    if (![m_mediaPlayerHelper.get() respondsToSelector:@selector(_setOutOfBandTextTracks:)])
-        return;
-
-    setDelayCallbacks(true);
-    {
-        [m_deferredProperties.get() removeObjectForKey:DeferredPropertyOutOfBandTracksKey];
-        [m_mediaPlayerHelper.get() _setOutOfBandTextTracks:tracksArray];
-    }
-    setDelayCallbacks(false);
-}
-
-static int platformTrackID(PlatformTextTrack* platformTrack)
-{
-    if (platformTrack-&gt;type() == PlatformTextTrack::InBand) {
-        InbandTextTrackPrivateAVFIOS* trackPrivate = static_cast&lt;InbandTextTrackPrivateAVFIOS*&gt;(platformTrack-&gt;client()-&gt;privateTrack());
-        return trackPrivate ? trackPrivate-&gt;internalID() : 0;
-    }
-
-    return platformTrack-&gt;uniqueId();
-}
-
-void MediaPlayerPrivateIOS::outOfBandTextTracksChanged()
-{
-    if (!m_menuInterface-&gt;client())
-        return;
-
-    RetainPtr&lt;NSMutableArray&gt; tracksArray = adoptNS([[NSMutableArray alloc] init]);
-    Vector&lt;RefPtr&lt;PlatformTextTrack&gt; &gt; textTracks = m_menuInterface-&gt;client()-&gt;platformTextTracks();
-
-    for (unsigned i = 0; i &lt; textTracks.size(); ++i) {
-        RefPtr&lt;PlatformTextTrack&gt; platformTrack = textTracks[i];
-
-        if (platformTrack-&gt;type() == PlatformTextTrack::InBand)
-            continue;
-        if (platformTrack-&gt;kind() != PlatformTextTrack::Subtitle &amp;&amp; platformTrack-&gt;kind() != PlatformTextTrack::Caption)
-            continue;
-
-        RetainPtr&lt;NSMutableDictionary&gt; track = adoptNS([[NSMutableDictionary alloc] init]);
-
-        [track.get() setObject:platformTrack-&gt;label() forKey:TextTrackDisplayNameKey];
-
-        if (!platformTrack-&gt;language().isEmpty())
-            [track.get() setObject:platformTrack-&gt;language() forKey:TextTrackLocaleIdentifierKey];
-
-        NSString *type = platformTrack-&gt;kind() == PlatformTextTrack::Subtitle ? TextTrackSubtitlesKey : TextTrackCaptionsKey;
-        [track.get() setObject:type forKey:TextTrackTypeKey];
-
-        [track.get() setObject:[NSNumber numberWithInt:platformTrackID(platformTrack.get())] forKey:TextTrackIDKey];
-
-        [tracksArray addObject:track.get()];
-    }
-
-    if (![tracksArray.get() count])
-        return;
-
-    setOutOfBandTextTracks(tracksArray.get());
-}
-
-void MediaPlayerPrivateIOS::textTrackWasSelectedByMediaElement(PassRefPtr&lt;PlatformTextTrack&gt; platformTrack)
-{
-    setSelectedTextTrack([NSNumber numberWithInt:platformTrackID(platformTrack.get())]);
-}
-
-void MediaPlayerPrivateIOS::textTrackWasSelectedByPlugin(NSDictionary *trackInfo)
-{
-    if (!m_menuInterface || !m_menuInterface-&gt;client())
-        return;
-
-    if (!trackInfo) {
-        m_menuInterface-&gt;client()-&gt;setSelectedTextTrack(0);
-        return;
-    }
-
-    RefPtr&lt;PlatformTextTrack&gt; trackToSelect;
-    NSNumber *trackIDToSelect  = [trackInfo objectForKey:TextTrackIDKey];
-    if (![trackIDToSelect isKindOfClass:[NSNumber class]]) {
-        NSLog(@&quot;Unexpected track ID, ignoring.&quot;);
-        return;
-    }
-
-    int trackID = [trackIDToSelect intValue];
-    if (trackID == TextTrackOffMenuItemID)
-        trackToSelect = PlatformTextTrack::captionMenuOffItem();
-    else if (trackID == TextTrackAutoMenuItemID)
-        trackToSelect = PlatformTextTrack::captionMenuAutomaticItem();
-    else {
-        Vector&lt;RefPtr&lt;PlatformTextTrack&gt; &gt; textTracks = m_menuInterface-&gt;client()-&gt;platformTextTracks();
-        for (unsigned i = 0; i &lt; textTracks.size(); ++i) {
-            RefPtr&lt;PlatformTextTrack&gt; platformTrack = textTracks[i];
-
-            if (trackID == platformTrackID(platformTrack.get())) {
-                trackToSelect = platformTrack;
-                break;
-            }
-        }
-    }
-
-    if (!trackToSelect) {
-        NSLog(@&quot;Text track ID %i is unknown, ignoring.&quot;, trackID);
-        return;
-    }
-
-    m_menuInterface-&gt;client()-&gt;setSelectedTextTrack(trackToSelect);
-}
-
-PassRefPtr&lt;PlatformTextTrackMenuInterface&gt; MediaPlayerPrivateIOS::textTrackMenu()
-{
-    if (!m_menuInterface)
-        m_menuInterface = PlatformTextTrackMenuInterfaceIOS::create(this);
-    return m_menuInterface;
-}
-#endif // ENABLE(VIDEO_TRACK)
-
-} // namespace WebCore
-
-@implementation WebCoreMediaPlayerNotificationHelper
-
-- (id)initWithClient:(MediaPlayerPrivateIOS *)client
-{
-    _client = client;
-    return [super init];
-}
-
-- (void)disconnect
-{
-    [NSObject cancelPreviousPerformRequestsWithTarget:self];
-    _client = 0;
-}
-
-- (void)cancelPendingRequests
-{
-    [NSObject cancelPreviousPerformRequestsWithTarget:self];
-}
-
-- (void)delayNotification:(int)notification
-{
-    if (_client)
-        [self performSelector:@selector(deliverNotification:) withObject:[NSNumber numberWithInt:notification] afterDelay:0];
-}
-
-- (void)deliverNotification:(NSNumber *)notification
-{
-    if (!_client)
-        return;
-    if (_client-&gt;callbacksDelayed())
-        [self delayNotification:[notification intValue]];
-    else
-        _client-&gt;deliverNotification((MediaPlayerProxyNotificationType)[notification intValue]);
-}
-
-- (void)schedulePrepareToPlayWithOptionalDelay:(NSNumber *)shouldDelay
-{
-    if (!_client)
-        return;
-    if ([shouldDelay boolValue])
-        [self performSelector:@selector(schedulePrepareToPlayWithOptionalDelay:) withObject:[NSNumber numberWithBool:NO] afterDelay:0];
-    else
-        _client-&gt;prepareToPlay();
-}
-
-- (void)scheduleDeferredPropertiesWithOptionalDelay:(NSNumber *)shouldDelay
-{
-    if (!_client)
-        return;
-
-    if ([shouldDelay boolValue]) {
-        if (!_deferredPropertiesScheduled) {
-            [self performSelector:@selector(scheduleDeferredPropertiesWithOptionalDelay:) withObject:[NSNumber numberWithBool:NO] afterDelay:0];
-            _deferredPropertiesScheduled = YES;
-        }
-        return;
-    }
-
-    _deferredPropertiesScheduled = NO;
-    _client-&gt;processDeferredRequests();
-}
-
-- (void)pluginElementInBandAlternateTextTracksDidChange:(NSArray *)tracks
-{
-    if (!_client)
-        return;
-
-    WebThreadRun(^{
-        if (!_client)
-            return;
-        _client-&gt;inbandTextTracksChanged(tracks);
-    });
-}
-
-- (void)pluginElementDidSelectTextTrack:(NSDictionary *)trackInfo
-{
-    if (!_client)
-        return;
-
-    WebThreadRun(^{
-        if (!_client)
-            return;
-        _client-&gt;textTrackWasSelectedByPlugin(trackInfo);
-    });
-}
-
-- (void)pluginElementDidOutputAttributedStrings:(NSArray *)strings nativeSampleBuffers:(NSArray *)buffers forTime:(NSTimeInterval)time
-{
-    UNUSED_PARAM(buffers);
-
-    if (!_client)
-        return;
-
-    WebThreadRun(^{
-        if (!_client)
-            return;
-        _client-&gt;processInbandTextTrackCue(strings, time);
-    });
-}
-
-@end
-
-#endif
</del></span></pre>
</div>
</div>

</body>
</html>