<?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>137180</bug_id>
          
          <creation_ts>2014-09-27 10:42:21 -0700</creation_ts>
          <short_desc>[iOS] Optimize media controls AirPlay discovery</short_desc>
          <delta_ts>2014-09-29 11:12:26 -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>Media</component>
          <version>528+ (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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037673</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-09-27 10:42:21 -0700</bug_when>
    <thetext>The iOS media controls register for AirPlay discovery events to know when to include a target picker in the UI. Putting the hardware into discovery mode uses more battery, so don&apos;t do it until we can display inline controls, and stop if the element fails to load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037675</commentid>
    <comment_count>1</comment_count>
      <attachid>238780</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-09-27 10:55:22 -0700</bug_when>
    <thetext>Created attachment 238780
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037676</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-09-27 10:58:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/18479051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037825</commentid>
    <comment_count>3</comment_count>
      <attachid>238780</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-28 17:26:12 -0700</bug_when>
    <thetext>Comment on attachment 238780
Proposed patch.

I’d like to understand more about why we always end up listening soon enough with this code. The trickiest bit of code here is the removeEventListeners case; subtle that it’s always OK to not listen there because setControlsType will always be called later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037949</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-09-29 09:09:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 238780 [details])
&gt; I’d like to understand more about why we always end up listening soon enough with this code. The trickiest bit of code here is the removeEventListeners case; subtle that it’s always OK to not listen there because setControlsType will always be called later.

This works because HTMLMediaElement fires an event every time an event listener is added. This means that if we register an event listener when we are about to display the inline controls, we will always get an event so we can configure the controls correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037992</commentid>
    <comment_count>5</comment_count>
      <attachid>238780</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 11:12:22 -0700</bug_when>
    <thetext>Comment on attachment 238780
Proposed patch.

Clearing flags on attachment: 238780

Committed r174073: &lt;http://trac.webkit.org/changeset/174073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037993</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 11:12:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238780</attachid>
            <date>2014-09-27 10:55:22 -0700</date>
            <delta_ts>2014-09-29 11:12:22 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>controller_fixes_2.txt</filename>
            <type>text/plain</type>
            <size>5388</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDAzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA5LTI3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIE9wdGltaXpl
IG1lZGlhIGNvbnRyb2xzIEFpclBsYXkgZGlzY292ZXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFpclBsYXkgZGlzY292ZXJ5IG1vZGUg
dXNlcyBpbmNyZWFzZXMgcG93ZXIgY29uc3VtcHRpb24sIHNvIGRvbid0IGVuYWJsZSBpdCB3aGVu
IHRoZXJlCisgICAgICAgIGlzIG5vIGNoYW5jZSBhbiBBaXJQbGF5IHRhcmdldCBwaWNrZXIgd2ls
bCBiZSB1c2VmdWwuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250
cm9sc2lPUy5qczoKKyAgICAgICAgKENvbnRyb2xsZXJJT1MpOiBJbml0aWFsaXplIGlzTGlzdGVu
aW5nRm9yUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC4KKyAgICAgICAgKENvbnRyb2xs
ZXJJT1MucHJvdG90eXBlLmFkZFZpZGVvTGlzdGVuZXJzKTogRG9uJ3QgZW5hYmxlIHJlZ2lzdGVy
IHdpcmVsZXNzIHBsYXliYWNrIGV2ZW50CisgICAgICAgICAgICBsaXN0ZW5lcnMsIGl0IGlzbid0
IHBvc3NpYmxlIHRvIHNob3cgdGhlIHRhcmdldCBwaWNrZXIgdW50aWwgdGhlcmUgaXMgYW4gaW5s
aW5lIGNvbnRyb2xsZXIuCisgICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5yZW1vdmVW
aWRlb0xpc3RlbmVycyk6IENhbGwgc2V0U2hvdWxkTGlzdGVuRm9yUGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlFdmVudC4KKyAgICAgICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBlLnNldENvbnRy
b2xzVHlwZSk6IEFkZCB3aXJlbGVzcyBldmVudCBsaXN0ZXJzIG9uIHdoZW4gbm90IHNob3dpbmcg
CisgICAgICAgICAgICB0aGUgb25lIGJ1dHRvbiBjb250cm9sbGVyLgorICAgICAgICAoQ29udHJv
bGxlcklPUy5wcm90b3R5cGUudXBkYXRlU3RhdHVzRGlzcGxheSk6IFVucmVnaXN0ZXIgd2lyZWxl
c3MgZXZlbnQgbGlzdGVuZXJzIHdoZW4gdGhlCisgICAgICAgICAgICBtZWRpYSBlbGVtZW50IGlz
IGluIGFuIGVycm9yIHN0YXRlLgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuc2V0
U2hvdWxkTGlzdGVuRm9yUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudCk6IE5ldywgYWRk
IG9yCisgICAgICAgICAgICByZW1vdmUgZXZlbnQgbGlzdGVuZXJzLiAKKwogMjAxNC0wOS0yNiAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2lu
ZyBsZWdhY3kgTk9ERV9UWVBFX0NBU1RTKCkgbWFjcm8gZm9yIEhUTUwgRWxlbWVudHMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzaU9TLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRp
YUNvbnRyb2xzaU9TLmpzCShyZXZpc2lvbiAxNzM4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5qcwkod29ya2luZyBjb3B5KQpAQCAt
Nyw2ICs3LDcgQEAgZnVuY3Rpb24gQ29udHJvbGxlcklPUyhyb290LCB2aWRlbywgaG9zdAogewog
ICAgIHRoaXMuaGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMgPSBmYWxzZTsKICAgICB0aGlzLl9w
YWdlU2NhbGVGYWN0b3IgPSAxOworICAgIHRoaXMuaXNMaXN0ZW5pbmdGb3JQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50ID0gZmFsc2U7CiAgICAgQ29udHJvbGxlci5jYWxsKHRoaXMsIHJv
b3QsIHZpZGVvLCBob3N0KTsKIAogICAgIHRoaXMudXBkYXRlV2lyZWxlc3NUYXJnZXRBdmFpbGFi
bGUoKTsKQEAgLTI5LDExICszMCw2IEBAIENvbnRyb2xsZXJJT1MucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHRoaXMubGlzdGVuRm9yKHRoaXMudmlkZW8sICd3ZWJraXRiZWdpbmZ1bGxzY3JlZW4n
LCB0aGlzLmhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2UpOwogICAgICAgICB0aGlzLmxpc3RlbkZvcih0
aGlzLnZpZGVvLCAnd2Via2l0ZW5kZnVsbHNjcmVlbicsIHRoaXMuaGFuZGxlRnVsbHNjcmVlbkNo
YW5nZSk7Ci0KLSAgICAgICAgaWYgKHdpbmRvdy5XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUV2ZW50KSB7Ci0gICAgICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLnZpZGVvLCAnd2Vi
a2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQnLCB0aGlzLmhhbmRsZVdp
cmVsZXNzUGxheWJhY2tDaGFuZ2UpOwotICAgICAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy52
aWRlbywgJ3dlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZCcsIHRoaXMuaGFu
ZGxlV2lyZWxlc3NUYXJnZXRBdmFpbGFibGVDaGFuZ2UpOwotICAgICAgICB9CiAgICAgfSwKIAog
ICAgIHJlbW92ZVZpZGVvTGlzdGVuZXJzOiBmdW5jdGlvbigpIHsKQEAgLTQyLDEwICszOCw3IEBA
IENvbnRyb2xsZXJJT1MucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdG
b3IodGhpcy52aWRlbywgJ3dlYmtpdGJlZ2luZnVsbHNjcmVlbicsIHRoaXMuaGFuZGxlRnVsbHNj
cmVlbkNoYW5nZSk7CiAgICAgICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlzLnZpZGVvLCAn
d2Via2l0ZW5kZnVsbHNjcmVlbicsIHRoaXMuaGFuZGxlRnVsbHNjcmVlbkNoYW5nZSk7CiAKLSAg
ICAgICAgaWYgKHdpbmRvdy5XZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KSB7
Ci0gICAgICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRlbywgJ3dlYmtpdGN1
cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkJywgdGhpcy5oYW5kbGVXaXJlbGVz
c1BsYXliYWNrQ2hhbmdlKTsKLSAgICAgICAgICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlz
LnZpZGVvLCAnd2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkJywgdGhpcy5o
YW5kbGVXaXJlbGVzc1RhcmdldEF2YWlsYWJsZUNoYW5nZSk7Ci0gICAgICAgIH0KKyAgICAgICAg
dGhpcy5zZXRTaG91bGRMaXN0ZW5Gb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50KGZh
bHNlKTsKICAgICB9LAogCiAgICAgY3JlYXRlQmFzZTogZnVuY3Rpb24oKSB7CkBAIC0xODAsNiAr
MTczLDggQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmFk
ZFN0YXJ0UGxheWJhY2tDb250cm9scygpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlz
LnJlbW92ZVN0YXJ0UGxheWJhY2tDb250cm9scygpOworCisgICAgICAgIHRoaXMuc2V0U2hvdWxk
TGlzdGVuRm9yUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudCh0eXBlICE9PSBDb250cm9s
bGVySU9TLlN0YXJ0UGxheWJhY2tDb250cm9scyk7CiAgICAgfSwKIAogICAgIGFkZFN0YXJ0UGxh
eWJhY2tDb250cm9sczogZnVuY3Rpb24oKSB7CkBAIC00MzUsNiArNDMwLDggQEAgQ29udHJvbGxl
cklPUy5wcm90b3R5cGUgPSB7CiAKICAgICB1cGRhdGVTdGF0dXNEaXNwbGF5OiBmdW5jdGlvbihl
dmVudCkKICAgICB7CisgICAgICAgIGlmICh0aGlzLnZpZGVvLmVycm9yKQorICAgICAgICAgICAg
c2V0U2hvdWxkTGlzdGVuRm9yUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudChmYWxzZSk7
CiAgICAgICAgIHRoaXMuY29udHJvbHMuc3RhcnRQbGF5YmFja0J1dHRvbi5jbGFzc0xpc3QudG9n
Z2xlKHRoaXMuQ2xhc3NOYW1lcy5mYWlsZWQsIHRoaXMudmlkZW8uZXJyb3IgIT09IG51bGwpOwog
ICAgICAgICBDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVTdGF0dXNEaXNwbGF5LmNhbGwodGhp
cywgZXZlbnQpOwogICAgIH0sCkBAIC00NDUsNiArNDQyLDI0IEBAIENvbnRyb2xsZXJJT1MucHJv
dG90eXBlID0gewogICAgICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5zZXRQbGF5aW5nLmNhbGwo
dGhpcywgaXNQbGF5aW5nKTsKICAgICB9LAogCisgICAgc2V0U2hvdWxkTGlzdGVuRm9yUGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDogZnVuY3Rpb24oc2hvdWxkTGlzdGVuKQorICAgIHsK
KyAgICAgICAgaWYgKCF3aW5kb3cuV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVu
dCB8fCB0aGlzLmlzTGlzdGVuaW5nRm9yUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudCA9
PSBzaG91bGRMaXN0ZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHNob3Vs
ZExpc3RlbiAmJiAodGhpcy5zaG91bGRIYXZlU3RhcnRQbGF5YmFja0J1dHRvbigpIHx8IHRoaXMu
dmlkZW8uZXJyb3IpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaXNMaXN0
ZW5pbmdGb3JQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50ID0gc2hvdWxkTGlzdGVuOwor
ICAgICAgICBpZiAoc2hvdWxkTGlzdGVuKSB7CisgICAgICAgICAgICB0aGlzLmxpc3RlbkZvcih0
aGlzLnZpZGVvLCAnd2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQn
LCB0aGlzLmhhbmRsZVdpcmVsZXNzUGxheWJhY2tDaGFuZ2UpOworICAgICAgICAgICAgdGhpcy5s
aXN0ZW5Gb3IodGhpcy52aWRlbywgJ3dlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hh
bmdlZCcsIHRoaXMuaGFuZGxlV2lyZWxlc3NUYXJnZXRBdmFpbGFibGVDaGFuZ2UpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKHRoaXMudmlkZW8s
ICd3ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCcsIHRoaXMuaGFu
ZGxlV2lyZWxlc3NQbGF5YmFja0NoYW5nZSk7CisgICAgICAgICAgICB0aGlzLnN0b3BMaXN0ZW5p
bmdGb3IodGhpcy52aWRlbywgJ3dlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdl
ZCcsIHRoaXMuaGFuZGxlV2lyZWxlc3NUYXJnZXRBdmFpbGFibGVDaGFuZ2UpOworICAgICAgICB9
CisgICAgfSwKKwogICAgIGdldCBwYWdlU2NhbGVGYWN0b3IoKSB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9wYWdlU2NhbGVGYWN0b3I7CiAgICAgfSwK
</data>

          </attachment>
      

    </bug>

</bugzilla>