<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>178713</bug_id>
          
          <creation_ts>2017-10-23 23:48:55 -0700</creation_ts>
          <short_desc>[iOS] MediaPlayer::isAvailable() takes ~150 ms during web process initialization</short_desc>
          <delta_ts>2017-10-24 10:38:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1363597</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-23 23:48:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/35115906&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363601</commentid>
    <comment_count>1</comment_count>
      <attachid>324651</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-23 23:56:08 -0700</bug_when>
    <thetext>Created attachment 324651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363685</commentid>
    <comment_count>2</comment_count>
      <attachid>324651</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-10-24 08:51:17 -0700</bug_when>
    <thetext>Comment on attachment 324651
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=324651&amp;action=review

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:961
&gt; +#if USE(AVFOUNDATION)
&gt; +    if (DeprecatedGlobalSettings::isAVFoundationEnabled())
&gt; +        return true;
&gt; +#endif

The AVFoundation and CoreMedia frameworks are not installed on a recovery partition, so this will cause HTMLMediaElement to be in the DOM but MediaPlayerPrivateAVFoundationObjC::registerMediaEngine will fail so &lt;audio&gt; and &lt;video&gt; elements won&apos;t work. You might make MediaPlayerPrivateAVFoundationObjC::isAvailable() public and call it here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363687</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-24 09:01:08 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #2)
&gt; Comment on attachment 324651 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324651&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:961
&gt; &gt; +#if USE(AVFOUNDATION)
&gt; &gt; +    if (DeprecatedGlobalSettings::isAVFoundationEnabled())
&gt; &gt; +        return true;
&gt; &gt; +#endif
&gt; 
&gt; The AVFoundation and CoreMedia frameworks are not installed on a recovery
&gt; partition, so this will cause HTMLMediaElement to be in the DOM but
&gt; MediaPlayerPrivateAVFoundationObjC::registerMediaEngine will fail so &lt;audio&gt;
&gt; and &lt;video&gt; elements won&apos;t work. You might make
&gt; MediaPlayerPrivateAVFoundationObjC::isAvailable() public and call it here
&gt; instead.

Ah, ok...I suspected there might be a case where this would fail :/

My goal is to avoid invoking MediaPlayerPrivateAVFoundationObjC::isAvailable() altogether, since that tries to dlopen() AVFoundation...I&apos;ll see if there&apos;s another way to address this. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363706</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-24 09:42:35 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; (In reply to Eric Carlson from comment #2)
&gt; &gt; Comment on attachment 324651 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=324651&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:961
&gt; &gt; &gt; +#if USE(AVFOUNDATION)
&gt; &gt; &gt; +    if (DeprecatedGlobalSettings::isAVFoundationEnabled())
&gt; &gt; &gt; +        return true;
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; The AVFoundation and CoreMedia frameworks are not installed on a recovery
&gt; &gt; partition, so this will cause HTMLMediaElement to be in the DOM but
&gt; &gt; MediaPlayerPrivateAVFoundationObjC::registerMediaEngine will fail so &lt;audio&gt;
&gt; &gt; and &lt;video&gt; elements won&apos;t work. You might make
&gt; &gt; MediaPlayerPrivateAVFoundationObjC::isAvailable() public and call it here
&gt; &gt; instead.
&gt; 
&gt; Ah, ok...I suspected there might be a case where this would fail :/
&gt; 
&gt; My goal is to avoid invoking
&gt; MediaPlayerPrivateAVFoundationObjC::isAvailable() altogether, since that
&gt; tries to dlopen() AVFoundation...I&apos;ll see if there&apos;s another way to address
&gt; this. Thanks!

Spoke to Eric in person -- while AVFoundation and CoreMedia may not exist in recovery partitions, this is only the case on Mac. On iOS, it is generally safe to assume that AVFoundation and CoreMedia exist (otherwise, many other system apps and frameworks would fail anyways). Since this early return is desired for improving performance on iOS-based platforms in the first place, we can just guard it with PLATFORM(IOS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363707</commentid>
    <comment_count>5</comment_count>
      <attachid>324679</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-24 09:48:41 -0700</bug_when>
    <thetext>Created attachment 324679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363735</commentid>
    <comment_count>6</comment_count>
      <attachid>324679</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-24 10:38:48 -0700</bug_when>
    <thetext>Comment on attachment 324679
Patch

Clearing flags on attachment: 324679

Committed r223897: &lt;https://trac.webkit.org/changeset/223897&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363736</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-24 10:38:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324651</attachid>
            <date>2017-10-23 23:56:08 -0700</date>
            <delta_ts>2017-10-24 09:01:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178713-20171023235607.patch</filename>
            <type>text/plain</type>
            <size>1834</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhhZDgzNmZiNzg3NjBl
MTFkY2ZlZTVmZmUzN2ZmZjcwYjY4MzBhNi4uNTNiMmEyYzE2Y2E2MzY2ZTM2OTE1NWIyYzBjMDNi
N2ZmZGRjMTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE3LTEwLTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFtpT1NdIE1lZGlh
UGxheWVyOjppc0F2YWlsYWJsZSgpIHRha2VzIH4xNTAgbXMgZHVyaW5nIHdlYiBwcm9jZXNzIGlu
aXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzg3MTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MTE1OTA2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvYWRpbmcgQVZGb3VuZGF0
aW9uIHNob3VsZCBub3QgYmUgcmVxdWlyZWQgdG8gYW5zd2VyIHRoZSBxdWVzdGlvbiBvZiBNZWRp
YVBsYXllcjo6aXNBdmFpbGFibGUoKS4gT24gYWxsIGNsaWVudHMKKyAgICAgICAgb2YgQVZGb3Vu
ZGF0aW9uLCB0aGlzIGFwcGVhcnMgdG8gcmV0dXJuIHRydWUsIHNpbmNlIEFWRm91bmRhdGlvbiBh
bmQgQ29yZU1lZGlhIHNob3VsZCBhbHdheXMgZXhpc3QsIHNvIGF0IHRoZQorICAgICAgICBtaW5p
bXVtLCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDIChvciwgb24gV2luZG93cywg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YpIHNob3VsZCBiZSBhdmFpbGFibGUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUpOgorCisyMDE3LTEwLTIzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQsIGZp
eCB0aGUgV2luZG93cyBidWlsZCBhZnRlciByMjIzODYwCiAKICAgICAgICAgVVRJVXRpbGl0aWVz
IG9ubHkgZXhpc3RzIG9uIENvY29hIHBsYXRmb3Jtcywgc28gd2UgbmVlZCB0byBndWFyZCBpdCBh
Y2NvcmRpbmdseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAppbmRleCBhYzU1NzUyMTAxOGVlZjU5NDBmNDExZGZjN2ZmYjM1OWZkZGFmNWU4
Li4wNDhiODhhZTFlYmE5NTkxMDAxMTEwNGZkMjNjNmZlYzgwNGYxYWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05NTUsNiAr
OTU1LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0CiAKIGJvb2wgTWVkaWFQbGF5ZXI6Omlz
QXZhaWxhYmxlKCkKIHsKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorICAgIGlmIChEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OmlzQVZGb3VuZGF0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgogICAgIHJldHVybiAhaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuaXNFbXB0
eSgpOwogfQogCg==
</data>
<flag name="review"
          id="344277"
          type_id="1"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324679</attachid>
            <date>2017-10-24 09:48:41 -0700</date>
            <delta_ts>2017-10-24 10:38:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178713-20171024094840.patch</filename>
            <type>text/plain</type>
            <size>1773</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhhZDgzNmZiNzg3NjBl
MTFkY2ZlZTVmZmUzN2ZmZjcwYjY4MzBhNi4uMzNiN2MxYjcyNTJkNTkzYTczZGRiZjZjOWJhOTI5
ZDY5NTllYTE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE3LTEwLTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFtpT1NdIE1lZGlh
UGxheWVyOjppc0F2YWlsYWJsZSgpIHRha2VzIH4xNTAgbXMgZHVyaW5nIHdlYiBwcm9jZXNzIGlu
aXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzg3MTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MTE1OTA2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExvYWRpbmcgQVZGb3VuZGF0
aW9uIHNob3VsZCBub3QgYmUgcmVxdWlyZWQgdG8gYW5zd2VyIHRoZSBxdWVzdGlvbiBvZiBNZWRp
YVBsYXllcjo6aXNBdmFpbGFibGUoKSBvbiBpT1MsIHdoZXJlCisgICAgICAgIGJvdGggQVZGb3Vu
ZGF0aW9uIGFuZCBDb3JlTWVkaWEgZnJhbWV3b3JrcyBzaG91bGQgYWx3YXlzIGV4aXN0LiBBcyBz
dWNoLCB3ZSBjYW4gYmFpbCBlYXJseSBhbmQgcmV0dXJuIHRydWUgdG8KKyAgICAgICAgYXZvaWQg
YWx3YXlzIGR5bmFtaWNhbGx5IGxvYWRpbmcgQVZGb3VuZGF0aW9uIGFuZCBDb3JlTWVkaWEuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUpOgorCisyMDE3LTEwLTIzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQsIGZp
eCB0aGUgV2luZG93cyBidWlsZCBhZnRlciByMjIzODYwCiAKICAgICAgICAgVVRJVXRpbGl0aWVz
IG9ubHkgZXhpc3RzIG9uIENvY29hIHBsYXRmb3Jtcywgc28gd2UgbmVlZCB0byBndWFyZCBpdCBh
Y2NvcmRpbmdseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAppbmRleCBhYzU1NzUyMTAxOGVlZjU5NDBmNDExZGZjN2ZmYjM1OWZkZGFmNWU4
Li44OTVlMTNmYTQ4NjNhYjQ5MWNhMzUwMmEwZTA3ZWE2MTc1ZjdkZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05NTUsNiAr
OTU1LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0CiAKIGJvb2wgTWVkaWFQbGF5ZXI6Omlz
QXZhaWxhYmxlKCkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKERlcHJlY2F0ZWRHbG9i
YWxTZXR0aW5nczo6aXNBVkZvdW5kYXRpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworI2VuZGlmCiAgICAgcmV0dXJuICFpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5pc0VtcHR5KCk7
CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>