Bug 1466926 - part3 : add test. draft
authoralwu <alwu@mozilla.com>
Tue, 10 Jul 2018 14:29:22 -0700
changeset 825463 78aa107147fccdff4c90ffe44e69d5efa09effd7
parent 825454 bc85cbe1be278ba76700f9905eda6348924882a0
child 825576 04c4df64fbed424472b26a94b6fa44c2e4b8d9dd
child 825578 3cccab3190e26e17c692035daec0bb41572eb416
child 825912 acbea1009ec31bdf51179610ec3c74d0bb5a0d1c
push id118125
push userbmo:alwu@mozilla.com
push dateWed, 01 Aug 2018 21:34:29 +0000
bugs1466926
milestone63.0a1
Bug 1466926 - part3 : add test. MozReview-Commit-ID: 50Eo65ZFkhF
browser/components/extensions/test/browser/browser-common.ini
browser/components/extensions/test/browser/browser_ext_autoplayInBackground.js
browser/components/extensions/test/browser/silence.ogg
--- a/browser/components/extensions/test/browser/browser-common.ini
+++ b/browser/components/extensions/test/browser/browser-common.ini
@@ -1,13 +1,14 @@
 [DEFAULT]
 prefs =
     dom.animations-api.core.enabled=true
     dom.animations-api.timelines.enabled=true
 support-files =
+  silence.ogg
   head.js
   head_pageAction.js
   head_sessions.js
   head_webNavigation.js
   context.html
   context_frame.html
   ctxmenu-image.png
   context_tabs_onUpdated_page.html
@@ -35,16 +36,17 @@ support-files =
   searchSuggestionEngine.sjs
   ../../../../../toolkit/components/extensions/test/mochitest/head_webrequest.js
   ../../../../../toolkit/components/extensions/test/mochitest/redirection.sjs
   ../../../../../toolkit/components/reader/test/readerModeNonArticle.html
   ../../../../../toolkit/components/reader/test/readerModeArticle.html
 
 [browser_ExtensionControlledPopup.js]
 [browser_ext_addon_debugging_netmonitor.js]
+[browser_ext_autoplayInBackground.js]
 [browser_ext_browserAction_area.js]
 [browser_ext_browserAction_experiment.js]
 [browser_ext_browserAction_context.js]
 [browser_ext_browserAction_contextMenu.js]
 # bug 1369197
 skip-if = os == 'linux'
 [browser_ext_browserAction_disabled.js]
 [browser_ext_browserAction_pageAction_icon.js]
new file mode 100644
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_autoplayInBackground.js
@@ -0,0 +1,48 @@
+"use strict";
+
+function setup_test_preference(enableScript) {
+  return SpecialPowers.pushPrefEnv({"set": [
+    ["media.autoplay.default", 1],
+    ["media.autoplay.enabled.user-gestures-needed", true],
+    ["media.autoplay.ask-permission", true],
+    ["media.autoplay.allow-extension-background-pages", enableScript],
+  ]});
+}
+
+async function testAutoplayInBackgroundScript(enableScript) {
+  info(`- setup test preference, enableScript=${enableScript} -`);
+  await setup_test_preference(enableScript);
+
+  let extension = ExtensionTestUtils.loadExtension({
+    background() {
+      browser.test.log("- create audio in background page -");
+      let audio = new Audio();
+      audio.src = "https://example.com/browser/browser/components/extensions/test/browser/silence.ogg";
+      audio.play().then(function() {
+        browser.test.log("play succeed!");
+        browser.test.sendMessage("play-succeed");
+      }, function() {
+        browser.test.log("play promise was rejected!");
+        browser.test.sendMessage("play-failed");
+      });
+    },
+  });
+
+  await extension.startup();
+
+  if (enableScript) {
+    await extension.awaitMessage("play-succeed");
+    ok(true, "play promise was resolved!");
+  } else {
+    await extension.awaitMessage("play-failed");
+    ok(true, "play promise was rejected!");
+  }
+
+  await extension.unload();
+}
+
+add_task(async function testMain() {
+  await testAutoplayInBackgroundScript(true /* enable autoplay */);
+  await testAutoplayInBackgroundScript(false /* enable autoplay */);
+});
+
new file mode 100644
index 0000000000000000000000000000000000000000..7bdd68ab270e95d608f33122f8ef74012ec1673d
GIT binary patch
literal 3557
zc%02wVN?@W7Jfm56s?UAA+UiaEtG_YF2RI0Ebb8uqUdOt<dKGSq>xUj+E_Fhw!1ca
zR08#|$U&Gy$_96lzzPDpr4UwoR$Z&0Qc#RZHl&nRS3&G)d!$NF_s8y=fL;C5ZvX9^
zJ9qAT@4h?t-uJyXcea+5sX+)>yrKqMjm-0X$;~)c0;}S!J*C@COb1KZy{KYYcwAy_
zWoCj$XR^>!pj<QhRMx*Az2r+4>`2h?%iGJ}cwy_FGQpeMOACX&f{lXoG^spInkE;B
zZv5W*J&A+wUAi#$>6~?i$UF;h4Ta*@-@_a9HL<29X<4k{dQnZ1m761KHx=qnhzFXB
zE}y*MFpb$tadGZ@xC-eRaB*0yI#Rz~i1fl+O-Sl#|3}ddh09^;vEf_9PM-Q;{!A0T
znUQMpXB?)hirWr#Z9ZFWD^g#QR?+%RV)K@q@J{O(zUh5)eSUb7S(Uj{VT)9YTMUIc
zJ5ILq)t7rZnoPC(uhv7x&$DYeaeWa$1pueIRa6sVt?mv1=>UX&CaSw3YIsJ`U{FK{
zRZ#Xh0Guu7ZamB#8RuiyB%{}|)OJ$0NQ93f1hUswF;>@#!ecM+I99qZlKrG^DG;C(
z9T0uQS@JMF?1BX0?bfzW_kOi<50c_5ktFQjrkHJYBI$4Q346afIgg~nCEJA4t&NOc
zDL?kYdwUo?r$ai^QW?}cYWh;)LsCoIr`dNpuOrFUxJ`PerES~ZuaZ0oIkW8x_WsL`
zE=oPqpYC{U;4!w49u#j0FXQ0uVdwnB-jb%|>h04`WZ>5EvgN;tct2>$w>V=Vay9@$
zD+k{otl}b8%`3eqe3yTKozm$%R+G|ooMDo-+Vsn!M#Lm-b(yorKN`!45Ie8sFYD>o
z=-*29Bv?5)Y~dn1J)aQF-#!4+hIoeB?BK`-aXVdFBkpJl38r%&2yP6?#ztA5DQg&!
zIxEktWQbO7>{nvnC<|n{us?V5I);ewV1WUscaemTAbcd@C7G4`o(2~}N0F4&XNScy
zuM<|$c#U+3XBtyH43k;VwY#}_yZM(6Ctm84jNX%6iIl5X%he{i)|9KIFrOLv7>;Qf
zfzVQL@f9+LyB~RDOfbX^0L;8pck>}7vRZ{F0ElJ4BC5H;^fe@Iw72V;Z|RObx8vCH
zn%+AhL6x<P3Ui6<$HdLf?adv!=8o+@iQ<9)uLnT2n?H=`Fp7$ww~*a*CcCQTDAK$J
z$)yI_NS_RwQx=#pkBo4KKDq#CI<p3tTZZ_8kmqLj50Yf0k0F%UB(&?m*&^eBcOvDM
zz&R1u%595#{yg6q_ltkhA55g*b~H|;l-8Csr?=62;!x670ws!kNHEMXT~s7@HgXly
z$IY5Jc6@ssUe?*)T>7!d)`WK-s;tBFQrqYq5^=?KytdtioDJclTVh4-hk^nCtkMl)
zC%3d#@h6_LRy@ozS4+d<O?BDR4lABA-DFnfpXZtC6vrKvczUv}Qk9?F0#MlD=w8-(
zwSE<Atpn`KZphktPgX$7wsLdTW}-j_efP55-)vUHHRBqnhNNEuwXUoyvNdWAydr}h
z4fM+)tjL8P(hVszI$2@#`v_h1ZwnwfsUh?)LZ6q=c`aJIrTAVJyuaB^t#O+P4`tL-
zMBsr&U4eNh(oK<miqvTd-Jl$ejziLCCj1qo_6YP3P;SbCl#8{b_FGcttJ3*eJ~tBq
zEur;6o%fL6P7z+?)RC;Mkg<G4hJZ>03JITA?xqn+jXKm*h$cd<okF92Goi~MpdI=>
zl(vFG%_*ep!+iIR`oTlRcH`uWgzo{=J+QzEW3iXI*+lsV*TDN0wY_S}OcW1VCSzX@
zL|2bfmSUT+_+`>RPZ5fVQ@i+WcO%ZEe0c89r}|#_;`El2lwPqdaC^kn!~fvRWoLSq
z<pt(#y~ckHb&s5r-gT9KF=XVQ`8w*C(8B~cMUzuUC_Qf%!K*`-2^%?uvccP>kEzzr
z$F|-5?p(^q>Ay_$Nk2KAy8Od5{_xJgJ361Ox7)Dn%r)Pkww-|-zpJWm*XoL?vM+|V
z@X%@V89M!5&50GsUdsiXWbo?Y!~$9}!c7{9M5ra84D;D!qcZvEYKYBk_Q)X2z@RM^
zTaAsnHR?H;TLudXF%J#hG9y}8JsNcpS}*0ZkpUT|&46k<(kHcO!EL18&X~HQ#zyB5
zSfDNgMTMGhGz#-Y<wA&Q2cXABj?8U_QF7lmN;NuH`k^NXr~qRb`aGm|fS9tO^rI%`
z=|>nL12#B0VAT7P7_X4!xh%CDx+x4&$dtwtm8<p0#?25lJ!VMEA$%zdpnTkfA<O6h
zBam_h)DDnt4f2pI`4tR!FtyEy&==5Pdb`mdvrT`W7-s^+0vQn6$-o0jYd7lAXa=Tr
zF?0PcBY`L;=+$)+QUu{5CXuF>@ZUE=iqd<@DLXN_s-k$_f|5fZpY5bR=Jh~Q;8af(
zwvZ-f@7Ra{G99ztO_Lr-`DD<4#Hbr2{ay>>A0+%4gvUkdT$JvJWzt3v6%+z3bTKDv
zNrh4OHWBb5Z!ECTGWo#LntI~&^8mbhmIVZ7t?8;aF6ILP`oyPIOQ!|02vk*A*Ndke
zjSY%0p;ePUEwHNaX}%T5XB}ws=eN=td`Bvc<M}=4YoH2ZrLyDv4Nz6x9SU$3SYBt)
z9W86_>bhH(`0Jx0^!)Dhv$~_nHC?l(Ts^3#xnuTn-_PGfJso#W^>*JqhK}K`Q@xVA
zr$sd#on3v;kDM#-Ldw08K;}&i`gD+bm+^D7YwgB>iz@yWGC*PyTdnt5redo9aP_a$
z<ounX@jL+DKClF+_CI;zSqJyf(&)IpNN^F=d$rjY1=jlP4MJx<jy|BF04#qA9k@-Z
zun6WPJ^us%2UYpv_Ui?R(Kuoa_(LhkG><objLnLEP^HuPznfxM!Q;*RpXAH`7qk7a
zMhI{|!w1fU&7vg_;RFmc9+5fYSXV1WAHgk|2YIGig}AeyR)h;_W|nCzo83;+MYs9Z
z27FU$`^O4)yOS>3)PgYD)j1HoPTbzFQDdogRLFFCc?L{8aJ}ev149$|&Ylaro!#<*
zLVa!OP|;2nc<IR%;E&-M-F4--Ec)f(#y}XCt``qEDmj^z_4rtJxX>CV>~NS?WX^C6
zA0r>EoD@_Ytw1H)Yh#M=cxz<NB}cGHUkg@j`A@W01`9e>KD*VbLO%gC)1(pJgh*N3
zO5-`~Br5|yF8cQf?x&At*~z(v{lOHV0z*KyR@Y1R)f?(xG4LuiN+)et@#e6ju~2!7
zR&P<}#ghm3O4rY55UvGmz)oX@hOr~o3)!3@1ae{ex<qc_-$N?X-zaYi2TyTUMzYqH
z9ysQyT6XmUc;RZ*hkVWf0sDYJ61OiT@$CMnPd<C%t*=90EDwp#-54Lrls5Z9z&il&
zxoee5)2iqgUToaY`0)wB!b`9eJPp8bIA`VfD^(YkuCE>n%X>HP`#&xYhZB6VgL3e1
TEcDU8F{X5SX8Cikuvp+ff3dh8