Bug 1204793 - testcase for checking the agent active state when changing the volume. draft
authorAlastor Wu <alwu@mozilla.com>
Wed, 18 Nov 2015 18:45:04 +0800
changeset 309557 b0e94f006bcaad0bf0dfd07b66e23ad13e279538
parent 309391 e61e64f29a004f9a3042810a093b24dabbf56731
child 511310 77e89d0e30febf66e08ec07acdbd4272a5daf35c
push id7625
push useralwu@mozilla.com
push dateWed, 18 Nov 2015 10:45:15 +0000
bugs1204793
milestone45.0a1
Bug 1204793 - testcase for checking the agent active state when changing the volume.
dom/audiochannel/mochitest/audio.ogg
dom/audiochannel/mochitest/mochitest.ini
dom/audiochannel/mochitest/test_changeMutedAndVolume.html
dom/audiochannel/moz.build
new file mode 100644
index 0000000000000000000000000000000000000000..d7f6a0ccf47fbc30e936b47e3f4d2cf8f4a90a16
GIT binary patch
literal 16521
zc%1FKdt6f4+c%75re=;P5R&>sJcNiPCRUbB8la+>TY&&O7#>m-8%wRRrfED4axhO=
zVl@ehxPb~3EuGFnrJYPM(`jmKI$2KBbefuJe74Q}?)!f3&-1+RAMf-2_pA@Bz4qE`
z?X}i*UF*8O-zBcwx-}U#3-(XyF8=#!|K7dR#>=K?+jf5Tj+u&CI|E_=Q|h%@H`5dL
zUwhg>*U7!Xjm|F9|0Q+J{?FIUB%3*Z-+M%@WzT}Sz+hzs3NC1aySk?0o14{g*vxEF
z%WzI4Y-qY4Y^DLWqP8?ED(CvL$IG)CO4UiZ33C@E36K1&=I32s@%YdV<BF})9oJX1
z;kTknGof}X7Ll?VN<Nhy$L4x<s_9T^>!BUt=&fb>P`lV1ua?X-AygNcqfk9c%7uC)
z<sBJ*lqCH0zJIc|;{5QrkISIaBEhy}5B&?EzK`qjdzLLK+wou9EwZ1_b(mSbOWBq*
z^iIc;*DEk0pzL5peDTeQ@c0r7wynB2G#nGq>KqlDaj5>5!>5(+gVq)m<6VwO`gexr
zi@YliZSN1z9Id4jK)mW|$N;h9Q|7$#neL+VS|?K9O?seVn3*CYk0^FuKlKQ!myhsr
z^z}*ffY$nwPx7;e!M>@Ev~y4Y=cWAtZHG!634e>z4tCCa>(OuQFj;?R`4)E(w!|K%
zX{n75cMLF%3a*lFZz^>Te|Kc}i&MXQlzn>fzcas2OWikPA>L&!e@|RYvUu!p4tMag
z{j{u97z~;vI=wpb)8OKOOCCF%!tK55lajKU%Qpx_ehqA1Wozp}fy6Mv*)c^L`EmD)
z)9?Ptu75ItHMTHVsS^&Gn3QDaZCh5MvxTjJ#KjkpELdn<kvFuW_>iY9s_I$I-hno-
zMUWN2qkZ#jU7@wv6WXz=t5HOQX+|>tyDZ2BV|0ayAX}S}6~!ge);)dSzvbs6U1RIs
zib$(k@d#aTGjfq<Ig0m5e)pk?V4FoDSA%WgEG9rhvJgqp|3yImJ!3-OzvYq+gH<c*
zlLCUMCAd~}3p$R5+>yu=YqmQjU29Lej(z0YAR?93*D*sLA)=h3COrz{1MGt2=qL-i
zWpsO7^A2Z7_TI3vOxSXdxz)sZ(C42G<;$2IdSf>6+U$SsV~1b^L$GVFVE+eFb?E$?
zt3HE1|J*|Zty*Wh3b6g>e&7|1@fx-cVe|jPSVU+nz&3Q<e;ErJXx;1o14I4a^ncU;
zTY}8aaXIwm*q2x6>|qnOFppZ>*b?8!SFqZQ$f2Xz!Hj+B+?%0Un0UAU>=g?=xEU(K
zt+@p~2%WFA|Bom8TC!&vQ{dQa=z+rSKlTs|c5W#{grmUK4!_2`DeZx>>{+n?WrC_5
zJYcXn@%Y*QF{dg%7Y4h(yeh*6w(r66hB+`;Lq;VI2IDmNi~m2%;C~*_7N&&3Jj8tN
zxqRZhnGs`+#C;hyp`RVihC!==8qc3;oO`pL<8kzpA4kCUMdlOZhA1_@*@{P%xY%2v
zH{7U-M_(S<s`z!)4QSa)yuzOXAQ*1yYz62TpUi?5fSD2d=+OYf@-;KweP1;U_N|iB
zp#Jj6<4R>V=>PXyfKbK|lU3W2ePoeXnWa#-gU~>$)*+~ap)3}w`JZYK?12XQ)S6Ye
zao5Zn@Cr59vv_9Ep-@&bYvTfuG8?J_!Dq7u-KfwzZx?R7|K&{IN$}V_%FxW~Hm+~5
znVI2akI^ZS1-<FEJY(NXm!4z9*-UF8^gP3T-^|^B5eCJtxv(`hK2LmA{kYuFpDxT!
z%(^UwVI5(x;EDiqeTX#HKA^0E<ltRi9UI%;Sx>NUuV>Qdc*|?)SMaU%JUX(BNhh?H
zRMTTy5ipqKKJ-oXM$81P%d=rvDFDUXLv{86=7T$~$ClOeudaC9k|do$BS~~97++rz
z(E16S)Ys0`CD5OKf+?-_x1ig)B)UWMj+?Ootp!jMTiCw8rHwbPI3JVvN!&~*_&)d~
zZb(vou`}9QBv!Y_*8Z&k!EgVT=ff}mk#T<^By>hHi*<k~`6SDp#qp5XAh9g?TWH7T
zjk9N@#;p))A&o#XgJjI@%D@gB3+(M8!eE=u+rWm;RaoH(V#};~Gav(smo64;3j~qe
z%c`U7y;~7c|J@psps16k`xMd1H@Tm}dLXvrzlHkY{|5~4zsutO7s1?S%~_N)Y}zGE
zSM^0wD2kJHnGVB3vk9gJSUgG-=>f<n>54_3@)5qy1yYDZfC-iI^3V<!dQ7VcEqQzh
zYC<<yIZVgq`uZeE(1<eWiKeAKDTj<oizl?3M)+C-IxWdD2r5a<_9@ANpsq0i(K4!_
z&kM4k(?}N<xTi?kyLhFf3zt!Gai$TBltg<s!f)3<;!8g}(}jqWk{7`4|8gI;Pm}t<
zDKK_xx$68UF+p;(hm1rD*$iX`?K7wbnvP2pUJliLD%ty`LDu6@29=uYYe|2Xyj$wS
z|0zKr@b7lsWr_5s*uU#s=>Y-dpGq!Kgn-sheWBI*L5lj+&H<9zr@AP-_lyu{+6A;i
zOQyG%B}F+jLnclSD0hvrZ>_I|L@ZB=!Z$+$#m)%((~yuuvv-E=n?<`BOOsPavo4g+
z#eVY3So<1x9B=~W<jjOcT|mGRIjPmNVe_3o%U-bHX2!mGJtv>7v5&Nma*@o&V{PUx
z`r+5Ug-5<9bt@3l=l|`G-C=tm-1ONR3MF)h3*6NWfkZ7pyJHqY`rP-QY{>o}ii7?8
zc8222JbQZJr{iwZ(;KHRO+T7$n|?XnJ#CmCoi_Zor*@2UES6*!N1qF<DaRxHYaZ7P
zTedUABu-MeXcmFe99+56F{53i%cMNIGsSwnwZoLb6zdv*0H&79JVRyYbZFWs+>|CN
zgVD@ONujl>)rst!oU<7-rKB?5$jAtLz*mVU$mt9yJxmD@i$qEdlRzfR>8*IN{pI+W
zuE$rm{PFRxi*Nt<xcc=UAI~^mv7_~#BH(BgDOp42cP|&0mYM}Sf`>a5XcNjuY@kWe
za5BhVBjrg9IGV16WZ~=JCV@27tbw+}c@0Nef<flk8aU(;%y6o~&SXL7=#PQ|o~I|V
zVvAwaL(lG2m0shcE6k5lyA|qe)0k&2>S8d_x$5oc@4NU20?scc-Zu;-<-5u3#57MD
zazQ1n6b-*DmgJ);&#@wZ%)gZTvUIeRF}6ydu)j)>5?k1dlviY-DHk{sxGkYEM@PRF
z^36ZI3;rFI(<@Y{dp0r_32z+picoZIz0vh_P?f#=Euym0MJ6kBS+F2KcaN_0<VpL%
z-+#x~oIHu9y7@~#L)Kv<r58raD*dIdm2uVB#b4xJpt!9=Kg0Sjj>I`k@MkF<+!(6{
z%M8tWtm^?RsWLX6KY@$vmaB(U(fhq3!Vf37J-hcfSvYIk=EscKpg-QYyDs_p<A(yu
znVUZz?*{csXdcmR4z*dm5xa|eg()nSuzS2q;T2I_5FUA}p!oF@==maF5d}xepGl+|
zEX;QfX{Hc^^(fl?_W7NTtv8ND^xo~N{XtQ!NL=~X;}oazx@i(&zkA7`YsunUNl{c~
z{zKB*U|!TsDvz#-39X90*E!LYVY-SZP-Ecz0%1T@BhVi3JFV5Vk;<rPrBmCJ(%s2O
z0=WiwPiv$ywQ#EdsOJVGQCUnawH~;#jjN#nG`|k~fLMo@5Ce_)j@s2!vXU4g34yZR
zgL%)&mqIS+1W52*Gip1Ox8sD?461!VyYqMf6-h#CX*vLjgzN|_Frxu2jc7^LLzcrz
zOO(QM;M!Rh%z0j#lLk%Zvvej7oD!+$_wfR0K{S~do@Uk@B?vfrXTc~#o6Yf@pE6!F
zMjLxlLvM>+MXFrnI^V~^t!`Jz@Ag%3=(;SvtHl>nX)Z$N_e6kC?>xOz&~$`xORv5)
z83s;i=yG=Sx`44z;ds_sRrphNGC1DSR1mjNxah9BU0u*4Y?J4yrhvN%es`<#+Vll0
zSrI+i;E?roE~v<B1BV#d#YOa?qMq1s)i@KXVX%g#Is?WMy4z{wyXtW!n6zZ`<fG3w
zoh~l?6IT~lv||0PGvELGy>5HQ5oeN5Q1EW`#GIA2#KoHrvXjCWJbpZs*0o^DY}<Q&
zyP>u&ahBJ9Zc9K@EGfFC;<C5f-c^}3>Rf-b2Ni?+HvZ&S+jo1LcI-aAY5!;L?(P`?
z3i?bH?Y{X3%BtjDnUw+P>yb(x(}!iOg<H1)t-N|5U8bq0)>FACQ#*TvkaHFop>bu#
zuznsFY1OnS65CsF+RcIi5mA8i0Zs0Wa)qYB2&!psQfkHY5w<G9FK0l5;ASFf0%ES)
zS<v734;Uf*66K7#sIIsx2wy(x;py?*86~;aIVvn#8-$_`Yk)MFSOX#@eDd=mt?DOD
zMK%x7$J2><=Q#)ifo8=JK{h-sm~9qEvZNfJS&%mo1140O8J#A><jAlh{s|2kopT<`
zN5BnA8pRBXSW>jA1St`d*+Hp#xRw?_zO*%5_*!R|Pa2FtyT~f{_qo<(;U@1UyzZC4
zmmV*kK0ECEX19D=tHr;uz9iob3u1v=$4U~Kn6&~$S2HVu6`Opx>SkAu-(YrVr?5xf
zQhTg+axf8Wx~VP({X>PUV*3ws9!F}&LT^pc3Id<7c~-XLo3(O{53sls_x9Dqsi+4U
zp*(sMcB|HNds8x9@^*c#{><8m<Vv7Bv|Dj;^#psz)0|C<3h=uF?9TKb?_8X*wqd`f
zE%h7>C*j_58Npg(9QbhAr5ZCa+dijS&|+&4Ssv`Vd}n400&G>S9}diDO=_U{<*<II
znRo$+3?YIb$QVJmTLtMrU5#mTD@LxA3L33ZfT}{rS~d{UFW%NF!jQRFs_9k@i=|a$
zG&DYKa)DD3fF>OP39X4h`VU1adG_2{KKr<*Hn3pcD6MMLX>Rn~Ue-C#5z;{9aO$~|
z^Ss$&xRgcYBUnHw0hLC9=OiMSb8_a>bSxH`?_}pgn`59+NN9rv2PrR&NzrovRw*7G
zC@_p170)pda8*UxEu)CuyP0moV{h#@vLc!$L#_U<jJ}tV6E$ep%KbDq|3sGqcrl~T
zAfErgW2(8hpirE*Ot0Q^x_a{|5S&sk>=dS~sA5O=4mX4{3dg{%PDXe0Sl+mBOzqmq
zXuZ|qV;y<+Zpk}Iw7#pSHKxwD@cJ}BU2*b7(#|tqeJwQY8Og}o`DXjx71O7?+n#<|
z*?0QT^a4vUVK3T7D>!&y@4LQds1@z=l}q-%vrt6!<3gOzl3%r&Ba<;6D^Fy5N!<M_
z>$xV0a+jNTk|+xIl5;gUw&g0g5n*n!uZcpqRxbUnVXEyt4WQWeUkw=u(PlJo8@QPb
z+(*l_+@Jvgd%(!7z$^U)N)fZk#NF#7rUO?r*LWFz0t#8nRN_0rjE}S$5CvQzcDTwx
zfges=t_WEw=s#}MFy(S3ArMHRXxL(by@?7uOKFiRK{apWihydu)2WW`u3^E7v{3GK
zBT>R_Dcv}Aut;+4Jb!_KJ0DlVmvKyNJv_&px(2cYA3MN=V@KLZkgVaO7M_Hlqz#Mk
z`%HE|c0MCm3y(Y^;t>U`V2}-%EPOqWBt{|uK*BeJREks-$zrnB=y)?Y`lvu>LvsBW
z-BE>)LBorbqinQK^u?_B5;PRJ7cC|^%(`?b`axQ&*D~dYo?3r-_F$DeBep3F(_>|j
zg@thn?BP&hPkZOxE?Fl;2jnfnUQHOV=k(r)9gFVPca3Ke7%E{CE`orB9Q2q!i#1k2
zA7r=TtX+rMomRCq^e$7I|K}fsO@TLFBo(|NyqQ?*-dV&sz4BT|@qq{P2%oR`z$@f+
zcxm^nYwzE5?DOARJ0E?hZJYBI<;eQPuSch+-rRW2J2K5)lvTNIXnO1Z4=pXVqtcw-
zNGl8@`*KsMDQUgW4+ljPE`!^D$h!Ipqm%bwezH&y--;R@yf51zyr*O`=VkcK5ewi}
zx@)6c@T(pL1ZmhItbU^MDqT%)BxHbl2ABXrsQ>~xbTup_SEj_rz0{|3X@1NOyx2%&
zi7yKX1fx#84yYt*AxI`74jf|Vp8amUo*kH**^t3)$jF4g+%rp;b`S>yTz~lTU{2Q+
z5S(>Cb(xSqs>79xPF3OfbA~~X1NX7#L>fQ~+U&@eicR~-B}!b$Q8WwUC~!FBjZ>Xw
zS(F4jq-_o$L6cD?Hk0YnM_|iHv(RZlg8a@=#&AXH7Sb0d#0<tzr-D5fh;F)e3}q7A
zs04bGNE0a)8|>D)lw(Bz`n#;$n0UTx-NBOwMIQ4nW}(NPMgRCB_b00$bnHFzNchcL
z1>l(aNplaCe3;qYax2stL{MbDv6>oQe1Ecj>Ye*nIfp-vO*>p~sZFR?XDe?ia-+}q
z)D8bS@9DCSpTFI`XaBK}hUqHS$~_x%7nw@)x0y2kd~rN1@6g!vwb7Uj^L`1OJp0$}
zUwBo6`Sb3WriFjD*!$PG4+Lk`@^zxa-YqUyD16sOgHx%0fJHp&9_3gQ?|a4pF-h}N
zwOk&fXDW%Rt2<{z+nC|s{ChgLp%p?z(1mAkZ+aC_pF#68@@PQ%iox%M(bFjiE~_#`
zbvZ;#M1o@COyReta%MUgK!rdMsIgqCq1BhK6B`rRbZ?2kTYdWU!JY0QA?bjg8JO`6
zX(mvzR-kMm;fZsQfqXNXY?njgTX{JYDN9uXq@61f8%iRno{Zk*W4ZjDE^{vqR^ZuE
zB(l_?xhnuibN!c(A`4HHz$FHYhANFD@m+@ZnQ#IbpD2(a$#yy(gtARa{s}P$ZbA<W
zy2q@8U-UtyU>!V4({a+~i^uw^MTdgJ8p<48W2<8h@jdH;Yx>+O_g9wqZ22{?q3kr~
zo~lQ#_~~8Dcc-4dcxW@$e)C<<l`{$Tx49#$K5pOe-N@=qmQBA*D^`2)UgxxWkv~3(
zd~%?l9vgqwb+cNr<jdu#$>iF!E%#p+uzDM8dJmm!>$!Mt6HT(DC6}-&ocZOWWO{=H
z^X68B&xcw?;7a+=TpP^(6`3(jzU`EkxH1(y!?BX`fON?zyUtgR-&FQRs50KWW^{e=
z>7yIjAeGyKml*Lr$H#=lr}2T-C^lGbOp@WxQZs@188zH`v4CPq45~+3qquui7=Q+3
z0u6G!N|V`4BxJaQ+{$h4NLCF?j%SIlDlZEv1mv~cj|3$VSstQtoxwC#fmk=fUb-3{
zqSCYnD53HWp7%GiONC+Fs)y)~4XFp6tE$4ZrK-Cn**k)*Vjxfh&l$E4o7;Qsm#mAE
zS=cH*k&|P_nDOFNDT&W?qQOaar3Q$1i$NPH&Z2?#CyB4e(wxvtD~6S0MW?N?354RQ
z9%hFGN(~m+Q9gwzGL48t937dhJ1=hMFB={_KX{D4lvqU`JXz+T>@%mGnrgQSTfy;8
z#=8s4v>qNm<$ig`xPLE#l|5F#dlJT2zc#za%A~f9C78<DZM-W7j^BS%*rg2Ie)?8R
zthV%4i|p~&#?6GJr<9g#=7!_C{%75*&(EVBE<W(v#Q5!<g5xQSTiV|~Os!m9w(I&R
zTJxR9XQdx6F!1^74)xJG$PM~kq?!vKUw*wjxpYCn!z202+P`XBi@l>?(0?y$gD_=l
z)W2Z<GWT0I8BtGgu}8Bgl9w%{wV0k*`;ER12w4`XYOeMTtHE848%T1Y)|gmS5giz5
z*b^srqyi&qfj$a_6cE}IY0R@3^(JE&Ye2)6n~WIlLP+1P@Ab{K0CO$5pV%+brBleD
zQkVX+29Sl|Bq9ArZ$Fzew0CT(sP}GOcgNi$%{$-evLA=d&Ru$LJ2HuC-!wMGzIZ;;
zV}7(GTg-7nOF#}83v(1fjI|GsR`I1EX11M_#0E&>^Qi`qKZ9@5AWcX?h~}QtU<@O?
zG^&dft&7xgW?LL-G7i&ICm4HPw05dOWj#+QT5A??s1Wd-Z(7c=?NzC)gLx#6sS4|(
z)SX{^aV}38Ms&WLP>T|FXSY_yt@4-3`Yw&a=W&y33R?9_W7PupKj@pk)-M^$Y66wv
z?Uv!dDe1SR+cup!wpicL$w&cS8h`%M|Hg~9&9R}vwvtXpAnV)Ozi7Apl*7k;K0Iz+
zj1#T?E8;+GI_Ygl5^3G>pvk?benmA%R+^T4f7rfo_m+H8<>k8m-x_{6w!}`nYCS5s
zLtT`&%lPlV%u@dI*ka~SLjyqdpRUvIr@N+qneLv}PftSm$LUUt#2dM*U$)rol#8-S
z^rSjA6t$M{YyHBF{@cAN%ix3Fb<5qBhDfAW@$-~_(zs=K6-IekiLqW5;f)%au-?2Z
zkRWDeHfE@ukYvGdI%6dLq1Ilm3&=6L0(FJM6rhgG#jDt+53GeoT5GM`$Xq5Tmn)3S
zCMuioaQz6VL0CijH7ddYongWZQ|<~F51Rs5$}U}d`v^@YV2eY1TGpIMlagq48BN5k
zvq2FDUP@N-gDgC_){aW0$}l9h&Lrr=P!NFvW)Mf3Y7pq)rJ|!HEF??^52RVqW{rU`
z0;4fuEGb+yqOm8S=L8Z!s27c?2T3EMIY_v6gl}UKYwX#>7>NPP*UMxR*kI=p3Ms+G
z#=JH(VGzsCcStMwopPbijZ%7W7q!$@C6NQ+6a7q)0BqM3m{@u?m>dyW2^I{o%Dt>>
z-CEo7YSiIDdgh|T3DiL0XN=As<}LP{_?ja<8@(g6LD}Pz6<uR_Yqf2fTVeB)A{1aK
zMqf~z^n@#$42$$(#3e@z3Y(5bdkfn;-yuuEBK6t5UXc;ek{8FL6H^AJo?+<Ow?KO7
zV)<;=6?t#_J#b>L!E?GnNk4MxUMXr*+@6;Ub%)<O!&qUP@9_>J+FieIIPG#@XRXd(
z?j>1q%jF7oI3^zs3@-QilXJDEBF3(nCYFfA7WbcaJ<kn1OKqS6tScea0JFn?ATiyP
z#C*7nU?n1~#wd0mPD@2_WjakJ7Xr!b44I~(od&RE8V3j+;{+2aOlzho(T%JmYBL&{
zN`Hd5{{0ofNT!Jx*Xq05U;k%)BZP&LL^yHvS3JYqm9vNv7OSjUY|b0&i_{g(?e!6y
z;M<UCh#aPjipbHKQ+0f*?tH2aoo2=mN6=|fKqVL!rBY;u5)+Cg<)28E8E~nP`b#;s
zC(xu4o@9o*SUHmXf)kqXa87*h79iS?rYBo89Hh#!Ts&v4mZPg$evrM=ssa_a!oscD
zgw?C1`xO+|%1X<nXyonJS-lb3I_7}_LMy09$Z84``W?OrcKSt3zI<0DN!k7N@gFCX
z8Psrwn3g;i1qyeo72vCud&eIh@9H5?O~NL8;_Z2@!uvu-a^~i4b?n)D9}3r>*;AF3
z%_@AsS@-<mpC3QpxF|1u74!-5ie2<%^WYsJ@wd$jJ@-F9`=eL=+d`euXZkdA_p;qt
z0ehO~*m%j@TO69)NzuUf4&Ia18kcg)#Nfe5#fe7v4v4t8D4i=Eff(QGL(BC0rXIij
z<Kwm&Jk;2TQ{u%l=YvNf#M$_sg^<(BjKnyA34v8^Ccso)6`<}ZaRUO1U%!!uC>Lb<
zF$ZvBLFU7Spg2*cVP-HIGZ-M7A}klcH)jC#N=*>OBoa`D+4Yg!<jmF&vTCuw4<u)B
zlVwUCUV?BB(WHe&AH4#p*i4)iHg{#1Hro`=ak}{Eek#y=?ZooYDQ6ViFzPfS#^FZz
zI+o--4@lE<v;r##uvo}*ARGzTk=Q3jL}K)80R?GF)j6^$2IUCH2TZk!#RdUW#!*=~
zsu7+Rv_qOofItg}!bFlSJS1QmQCbL&0w(JO4&{pRuuENJ8vv|yQi&-Od_ID4a93MP
ztCFc0-fvRIj&<R!p@-`QAc3){Rnav?Pgb-D3tPg$t=aS>VUxNgyBAr|Sy=w|L;EUi
zyMGVz7V{}{?fN!MPxk9~C40x@3G!PlazUq`qAT3W42(Qn{MYo4?h)!$;k#bGeM0b!
zz4yw}UnOUsQOS{UtzPTa#|@;cX;ZKc=B)L6uT-uspElkci(6oq;FCP54Hzn29sT>~
zM?RW^+I~RopDnhG`Mx1Xg{t>CH}*~BuNmYtwVa`eEQp)lbqANkE;*wl_T#ATl|)b;
zf}?T+s2@<)C>k@cRV481xJ+aQa%lj_JnNW&V3mi61*m>qI$2C)88PPdjYum|tfNsI
z0Zk@=AHdhQwwdmX<q8vCceGA307Oj&SFK@+6WLm82o-2&668DKArS1<&M=tD*^I6$
z+{J7pEPC$HU>>h;a3WP)Y6Wo?p231v*_o9ZG?24KM}qi@#zccqkR7BL9VRDojtWGl
zQG(Gv*b<D2Efb+l1Ob3Ne-z?3=tzckO9xk9bkU#f)?^+$-<h`5gUBAr#LTkbX*!VP
zsI-VU)Dw255itkIF@t8bsJ|Imhpjmoy!vIIn{5AnnI*iy-fj$`ZY}%pi~rjXW$U8j
zlqrmYwb9**ql`NCqRlx40Ryj&_q~vAmdB4b#6+jmFPM1I`h)S~8UM`N`=h3Kk_DJk
ze{I^m`Bm|kDL)##J}kNjI-M!cwH}E#T))iSy8hB%;oCT?zpGlGbLrt(+3{)R+R_`r
zUr$d<q2c#mlG*t0cW0$#)HWP+$jhZwx>m;T`t2Y<X8UJXHr}^n*5hj~mrcW9A-0Vf
zo;cjG4<9`!z_3Grm<|s)0}0)o+FA{?Q`9&kPYltOpHc{fej;-KpAG=mE+_f*<Bgbm
zxDHn<F+`#vKupD_Uj!<d^|!D5n7(AJk=l-*mjTe~&HCFz38%l^bo}<SH^ryDQfJ#V
zWSkP$M8Ry<)Lg-HShEFi;JF>Tg5%*y6!7Mg_*65bH%Kv3F-IjffF&3w9F0P8nW>vI
zPs}3YERF(QDiOz)Me0)5n9(^da33@fPXze~(N&xv4dBDKf{{99)pD`brpYYm(A@n6
zD;V|k)S)O;in()CSQXZ!DphUa#a|qr=Uui*Yhb>PDgDOQ!DqQh29cKi6556P>-RqW
z>D}B{(x)GmoE-0p4e&$;z5h`DP&*%tU5{r(EW9+3u_^ECZj7FJo3gp$^IgMFr{A{j
z{QBE3hj*=R-RzJ&@<R3QhaWqtjep#J)v>2xQ{(8)Sc$*<ac4qY{o{-;KOD+Cxu8LE
zZ$PpYwP4_Iv(u=TjElVzA2N)kEyL+3jeP%?SyyMpX4W>_k$T`;{Q40~D_?a!ee<L|
zY^vywvApi)_4RUyv#h0YA=tB)TQ3i(r*dO~pniNmJ(DT9+TTr7Vlp7^V#N1HnJx>`
zO_z-#9pavjY1CZNT&C9mHFBKF-<Y(vwe}uSNo*g1sHfURj?0PbH)`7PXZ;$*^m>z3
z!&K_jxO7*W)wGT)&Wi`QY$qFubuidN&o`|Y_4M!*vZIO4MG)@I4>k*SbT*29%If9_
z)!92b$8{zGT1%5EX+d^ojiX>bj=+|g>{w}i91=uXNVH)QX~dC@AhFFQNS%gM0>X1_
zq2NiAku4%q33-Hv%o*klYcwR(c|JVQBEqrP^kK-fVX=v`&_dr5x_EWu1zWMjJhyMI
zCI4k*A5BDa_5ba+U*`MoeUuEehXsX#Lt)<5Fd_M_pinj5DX&O)%DffR#;6NrJY^~%
z#~K@&eVV`N%#SbHar&y6bE0><H;J>he!Z@xXzx8$%$Y}dt>9RJqD4+8WRDXL3$#J9
zGii$(!(C4=o~QL!bsIwJ<BnCz-sB`)Ck7eK|2pK6pm)T)UmSJ$wtwfFhBXI9+Em+C
zgzZvZJp0l*w*2W)2N+J~o|HUd-<)YE_kx=!jfu47w+?!fGh{9TRLT=L5LfSzQT717
zV*D=@m;r4yTy+MZ3X>#KOg!ey@hn2D<jJlo=>20-qXrJ7fNz3~Nh;S2rdE*56)AMg
z;dD5+{!G7yFrWeZLqI_0E77I<1&WVX(_2IOae>_Qdb&H@yMLE4LS&^KjG!$&XWV{_
z;3_K3UKUifeEAsDsY!KS1R_lq+=#|x0r`3|M~X3MN_c6*Ae_t}7KtMbVgs8QNr6MI
zv=o`6Gtek{5nM+;s+^^?*q5M7Nt%7<#jH{wO)3JkBjTgV<)dG8@>rgp&zFyR#9xf`
z3{pQ$HH|SY4jQJst!l8HJs#v{xzuM@Q|5rMP%GOLdSpi!to>cqWD|3|Q=b=Gn>R*}
z3)R1lHz8x2@=}BWjB%e>g0K}6*~38U!<s4P8q*8?0l%GvV6sD2@|(%8d;i=tK0f^f
zjF|2&1dFCOFL|9H>J48nx#70+=8IP!9`b2FS07<cK3oxH2zuMUH0raHTSr_tUL)p}
z#$B2vdUhrHO7lFMh?7gtciKbLM1JyG>*8pD_=Asf=1kVYkMYaf(LMkm=DibrLO)kq
z8}7~=(#B*ovf2|7KqU_0-q?R!&|uZEt{Ja_0;ZoMl02z-pV=yf(5K!AK~gT$%F=5p
zaRbH=G93`mL7Z0@0$MMJ*IT1xpn&m`VWRq}!g45FePt4tDd=#?FsU_ff|4?u!vvsJ
zp^?$KY$Y?j!gioQO0pZU<1}P&O)D{zsiY~$8w!h}wH6G3AdheYaX5lSB(e#l^@$9q
zd179g4(?+?lTdxi5j<3<u}8s81krhpi6%`A0+l$lNy%pFc>qfX>3l?q6AX)wf|gW3
zYA7MG6Kz>O9AuhIW0Uqk#WAc2^}mjbkH?Nj`dS9h)!2&Xt9)y*_Gxae3+k|onP;C+
zYBCXw#uqt$Uw$=dUrwoXMEGr5rl`*YzoljGep166e*!S%lQ*Z>RP92>SZ9QS);joF
z#~u=D6-=-W>{8?vQpwh}EJ8#e!8&+rl3gcIw8RxIgfqHjVV-!QTexsNSe$#P_W1q9
zrk|%NYv;cYUwgKG^DTkbSJv3%)^O&+!AHf`Z{&;LZ@T}qZKX9F_akQVr)P0Hm^V%*
z-PV4f3_o~(O}uw_?ypy0Ww$BMZofq6{^pVI5l@Vt9psv$hH8=g1LpfUWkXgCyf`$|
zff2_RZA6tyL_8&xhWF|i{Bc`NhTj0ak?Pt{Zy;ybK{vRs25?}x1_h|;ayl2)%%cDc
z3D#|yj7$?=sSt!{sZ0=3pC%K9e6LS($cXh*5|;)7_zr@YPHDJjL;wNe%ftcW)kFjp
zpj^IcBp&~`*MHyD_!+wLU3_CKLXL}i>y~=wQ7V_kf~R8yJ6)oq4R;KU0uh|0!r?hc
z11J*li8LvhZPke3DjL-$=Y+tFqcJJACK^>|kCKY1W+fDAA@Vu1Q$?6WGRMr*ai|71
z!oZi3M>KpS97!Qoj6H|EeDB6!hKazZQi&r3ngPf0;q;Yk$v=@cO03v&6jDl$^`<6o
zT<>+LNk4gm_kQc<JrQHyzq-86`snvVjB!f0HHIAf$B{FePF~Mr`N-8OFsX;tOdoO>
z{JHLd@GSfNrs(ggUI<sP-c5(M?EblI!?@{g)57V3pSz!}Sn>M7&tDZ}vCf|Vz}Yap
z$FjNUU>|j2!ea3$JU{){=f5rg5RKjAIdA^g!5d!v``97%KaU+|e&JR;oL=iTJuv<2
z^v&t%gz0Jj>FJ^A>3!1}nS0bkNZmxzL$ovdTTzHP{^a06Z{NjB0~WKYeo8GA;gheH
z-7wvI@$L^8P7Lvv>hFv^eS=cNbmX$*^bKd&dmt_Y1k_ul^crgt05piBOiU=&5*)2W
z+yGG=f`t4y#AX@^_jEM8Dk&3@F>{iyO9z=gM&g-%x?0J*!W?GTYDSno>8-rW6UlZ;
zUOUQ|loDVX-#1qQ8NmkWL%w&DIoRpqi8~%1Q$^Zro)%?L@||esL?jfDL$zvDTO5n>
zL!F{864)fZ%%E|!OOxURI+MVKtQ3`?C2*5nnt7i_WPtGRd9)7l@FU_9kmsV?hYlRk
z7*J`5KFBR#m{y))1kdRcDN#Ox4o<uw#r#DlHwdhCiSH}h5}%6bvvWka$Sf9r>AHhi
z6Z?0@e1H4pUuV##tw0lvJVtLL463tJ7~r6gjJ$R!;LTpzo%P}G0^ShLo;tJZO5t{W
zpI5_r@8droQvLoQ<LbbHN#=9ydf<J;x{t^IioTulVS@8}%{O<-HDB$it2)w8SYtR@
z>+$W{-^&lotxaB{nD!}lj+^Yf^XT!zCqW;6$$a@i{wv!5?or3O@2||q$hZmjuQ;xl
z6D6kl*5J#&P>}{4R&l-C*2EY@zOLmiN8EY?k9Ceu4F`g90Z>cjwp`u@R7epSHDW;x
zm+1q_lUjKc({I;|mv!~xB!EDtW;PR<5<K$ZvOo~1=K?a^0IuKYnt=kjhz!&{{D20J
z1lY(Lcll)jEuE~gzsF>XiAy0mYeMu3gyeD~FD2zsGzD_ZVr5ctJL1Dv=j<%#G$!km
zJ;%x?na}%ITzho?i3UXyhV_~ey=J9abq!5M`><_P0vV_Q;ATE0m_NMF#G#ncS~i>_
zL+UsuaQtBn#y}_$&l14WWJnd?sRYuX9%C30X&l)QoZ{;Z77;6L*ikbl5<#+v#7Kyv
z`ix)z3C_X~V$UVzR#l<-9qtuopj0H|Im}uVKl;^QpPf>Kzgd6p#fGW)K;d|(zN)K9
ztxrhaDC;V25t4hJ7J%}}E=F`~Hn`Q#I$5CTQapJ(+`>ET#V}<jMfCa!yR8NF1;qu`
z35%>j*#*6KU4=J}2xAL-BX&1rjpyB9D>PmD(8FGki?30~cHYgqkvCWnemFrnCYa}b
zZy`@%y#7_U3b84faeU>IZwH_Ll%dssw#T&X-j$!u|Ep^y;t6{1n`=@ajyU|tWe#qC
zvpMF%$pl1lPb0jFTJO?tPxV?WsVU1pj8_*d_3@D4z3bs0{4a+Xf7HPv+pmTv1^9@c
zy)|8CP~q-1Tzw|uOnXv`(lsNNd+l<Fk2ZtCtq3_=V{+#vUBhdY%och&kWL{#NNK16
zV&#Zd4K2MU0}vZ=lHc5nwce5toJ26{HC6Ou?(qc+ciwng9I@1bwrOD1#8CNtA`w8g
zpocL&Vzh}bBk@Td#G<C`aL!cG#mFGO6a+<)B)06R@~DVpXHw$XNaP%N4w2(y2M<K$
zP|bJ_Rmv$fi2<8H!Egyi0s=OrKp!SY$^z0(j5#HHFojTn&kvqL^_FtxCqHLPu63q(
zI-MAuuLZrsqA#s+jf{^e8O2VVEPGk$tFYgas;t?CV6EMMD;v^mXEB6>i|O4%%th9M
zaW$hYd`z8kSa53wEGHy0;=0%NKnN?VsjK;E<E>6c6SIvGC>&zMjz10aljpTDV#&g`
z!<7e?Y(AsI3WvhvlbwufpASuUUj2OO@lDs>P0Evyz<#fflh$*%BTL_Y{L0zmVFUM$
zKHy#F_z~ag7teq8<KuVmaaTOZHMJ4HUc58(d=(5;iJBFYJ@}BQMnspTD5J{ed4C_%
z>9U3{S-h3hx*Yd|D-yTC{-<^RHMphyII3g7)!m)R$KS~)^)o+Fq2Vs$CB|B+`@>~3
zD7Pg(qh1aHUrCEp0LXp|G}a=4D+;1mcZIIGLT|<qxRu-3bf7h?Uy#ndqDc%`3KiJm
zZEPivMh>K+Kr4;{?Q14eOMMCSU!?<VD}rmCOxZHF<NAuNt{n&GpV0AxN5o{B4v$7@
zt%Hlhn&xZo!kg}%$5lBy7tL)72d@c|rH~C^&TAYkAi$EcA`$07jmDs)>BuMv-^$bS
z5vCC(TL-`+Wh^QQJHk<wi0}d`$%37wWRuuB5erVHQT3z}suVP#$umrt%$9Nho#w8R
zpMQd*uR<XU<5$5i`TM`bx_%dP;arvP@Zf8WSH#Moh^8Zzvcf3y_)B_BDBA%kBX}DO
zzP=bO#gn0-cv=F(FuqP6vU&1z4*VF3c%FkRAwDK_wWuP0i%YccVhsMr1Q9=tFOpP>
z`z{6_S&pkbh*cz3S<EgJSBsm>V&+6DUtY*}xPTuVjhO{^cyJh-NO@@><vZfGtg56)
zF9a`!^DoA%@fBGJH8HumiS#XVNn0)iyDngaO8d$jF2?j3s%*<BvtIEVcl55@t~vGt
zDL0z%{pTw4IQa8O{EsHgcj7L6-1kLz!RC?=B>?&B*4(ziuF94kh5B{Xy7lo=@bum_
zzkU4qy|VD(a95wjc`B>uHK$LTG&S3?+`Z%{wxf5ncbOO5Z+qxsM5cX3N<f)Mxl1vn
z{_@~*uK=I3<w<@6_>j`eMpr8_s(}hzQ~pV7<)PpirlXn$Dy^Q2k_*z^xdCS~*b-(k
zt)V@M-4ZgO(1~yZf<0QQNhGE_HfGQoTd^SoF8rQGQ(sQ^rXaZK6n0W$4Ylz|*OSH{
z4&FKRBx1XN<%!JYQ+Lvw8q6E6u5dDhbF7*9!Jb5CcCYz_BYT(=2_Vy`GJCcQoJ0`F
z@O&vcr_bJ^5k<O4K}QSPM1x$q2168>c@&ulP8@L*&Cv=H$*E>enjU1qbx2l@6q9Bs
z5g!!*C$wfkcz9~Ela>`9J-2tvQ|MeVHdUqG0$#%vT@)-IV>D&&>`dwFTsaz4G&Ct<
zJP8vHy}jA;6v!SI%Vhg46t_x7U!_CIF4y%s&vNYI#s03e3n%l6-#)+dHn&*4b?o&M
zxLZtQ{D$}qp^>>8(9yP3Px?1eu68f;2hTZA$b<dkU2G#m7l&OZ)x^wlt+Z>V#6u*!
z_wJDhQ^YM*azxMJhAvPsnKd-UOdjj>WGJ7ir`X+~BB8A=v7MG8ydemzVMB2t6gkKQ
zc|ubUU_JBKnHSTW*2{~3c{_b}vlcAg`{MSqK;)^()f)~yKDGVy$>w*fqWdrY{`-sR
zUq70^|MCZ?2WtjHenC_Ymvz#1R~W}%OnEuMYh3)kPw7Q3y}R}Yhrjk6qMbA(UF$;>
zQ?lyqW&i#DSY<o`>s|9$(0z9M(t)cXQE-5QxQEC2#96Nj(wRzsv62~-LG}Ah%XWuT
zSsOFp%nsfaI!oAm+4$j_NY@~~93l~g3<s!mz%UBV)$d8ZTN0838kM|eP_r<7gxR6~
zz-YAMv}BOXO=)Kbw&Hw3TBAtal0#ch^cte7_W1AUd>Fs`=bs~PO`g(w3HPU#WiJW2
z?*2gf)mwYCbA`FjMY5%Xn>eHqp;=7ndF66Um2=qKUUTO{w$?_2&Vgcwl;tA=a`c*1
zmYIi?&JwVwI)G)cbFzR(O8@`@_y&O#G~1W(a&#iH1`8_r6dg~3F>5p$AdSSHuPhOh
zMK+Oh(ujO13!;3c5kA^keLu@>DD*^%xwENg$UkhZR$QuLdB#6?wsQ`9UgghU=Gpfs
zRipB*QkPOaky`U$=#*eIzLycdvS_ZGR#iGbn)F<4<{zvoYU1Rg@;k>|h5)B%$bCjf
zYgs`>7Y92VInPIP)mDr@Rum^qLsnF}(b7B@^!bVA@o|p0K8nY|UC|HfvHni3i^BXP
zFKFEQ%9A!+2;Rcy$A;F%5G(y-LZ!A2uItvI)69@}l=}OJg^{)#4PMRk-BL38d!Ng9
z*ew_O%6vuh-Q184D#+)Jk-ULGo5;{FT%KjsskfRKEb`&b2-c9?i*+|)NTpTebt@8@
zjzo-g9%gorx3qf=Caa3WTC;qyn1yAIZZ67`9DeEV!LBX~4N--~?4j81r`)^hp^m}M
z@Q87B?2UvQw?bb=N@pXU**0gKiXQKX&eCpe8|rW?!8<7N&9ffZ8zOaX%cYX}>2c!z
z$U`d97PMPjNfy*m{gk~w&n-fcM^+FR2U_$6Jbf1!n^Md)sqQ@{|EAJc6{zIuIg`6Q
zEF#;asxp_vLA;Cg<#H+9p~b_&`=}DYDwf>o$`^LOiNfcA<wRF*di_1RkP(nxP35Ko
zDRu4v5ZUlP>+K^Ez(a85$}W+hwX3#2>O)dH4Hb)`8xsi-uZ7zFyb|dS%;(lquSC;K
zNi=Q%(yDA>e71hdGd;#eN$jV8x!+58ePusZ5>M%eLgj<bw2+%s`<8QtU7E~agibkE
zSPM=_o@RBYJZF<VJ%hruShh8FSjlIaK?8?k1>renG-R$kGGPP{g-DjpR00QPqXX?&
z60Ds`Al;WbOrWu-bAWkh<asQcGR*Pe_ldD~PTFwZaHt1Sz!3_T>ME{vhVvmqh3#Xh
zXgZ9xszMbICYeYj&ySWE?Cp?brKNgT?jfH_yTQJ`Mg9$V2N5IQSLz?LDy(MI-oa!3
zY|(yS*KL>jXrgd<dGqW`zS6i={*j@BCpn9vzURBy8gP?+Gj);iS#w@S!kVLIU7{)h
zv$<}~n%sEw!Uf(j=mj*S{VaP|RxYm6t_CYD8y(clj&}8*Wgr>K`ob4WmFN`~oJb~-
zN#f8fUxFJAw<Q!?70jljMMX{6dsf;dF<+AU`o8@}8R;usmTz=&uAWE}^(nKuRpBgQ
zvcg~3U6*hp^l3#_u_NE%K}qoH6Y*%baQYsX1=@r5WouNzTdFZ;n=mkfnC9Ad>DzoG
zVmv?yD%5Qda1VRRPPV?yy%pB#w!jqSX4|}W)`~xewF{1KO27}jI;#s~u{Iti%x@8P
z%9(M6s+d|;**7O9Uh7(fQDa@yXgPCS9bNuvVdm@J`PP=FY<f0Ky$RtG!=P2TtP~|m
zG}x%f&^O9`YXl)7WuuX0JjxunqjDRn(OacsN~FYooR3eXu^RruiOUSk5E1*o=uU1b
zT-$r?%P`lQU8l3}or)Nn`ZHZ5HO~AtM<N)sdwX@TDfIE7m3KA;&n-UPd;3}W5%;!;
z2c28-G?JhXCjbK3q>-Z_I0DY%%S?hu$``?&Uwjb?<T|5fCsTA2`_PcHxywfv<)3h`
z3NwX|28qps{L$y^!r&7cBoQTPh8!oy!^6|VlgP<|tL!x-+VdjG-HN;C^9(#)*j$o1
zG1{cDR#2y^oKX_hwN7rlM0Hn5@JCmLk>?{nojKUd{Ik%%&m87J*NvYIxXzkBro9_1
ztU^(Pped*zfLL^i!{<Ld2xV#fG-dvlT&UpY@Zf>yGn~QJKfZbw?qyAuFUGAR-_U0c
zkBst*2^C2e<X2v@-4gmunh(y`A0w;ujjzt)yRLKj*MVT%THnP^K3iPu*l35y!I)6{
z*5Kf(*n`-Se1|lV-Ew=MX6%-D{6NU|gE7j;HMtuQ2--wiRHBPE1~CU3d?L-QlJ;Q2
z&G!h_mb)eXLZ2_D&(CXXAm%_Ye=bBGj$l{Y^L@6&e?Q?Wb4c?jgChIt5(f`j)Lij8
zm%x&&_}ut<EIVlr#5OPs{^j<s1%+*l@$8|uPwuoc3weWYpEM@isBl&0SMBfcbntYM
zN%p(Q$|9efEOQjeTAJ|fT|>ei2Dbq~*Ja@hQDrvwV{-TL(?sihw`{mz3rS)Px>8oA
z43F5&B(r9I2w$)e9O_7BG^w|imh;{E=wiFbJsUK^Co21*6ZafS^Lcuwh0znyGecG!
z4`W}R40dJtvTH^Uj*4W&YH!gx7e5g#szf7#cKhOpCbd-~C|LRQPJ36gB2N*fIPyOL
DFy$Y2
new file mode 100644
--- /dev/null
+++ b/dom/audiochannel/mochitest/mochitest.ini
@@ -0,0 +1,5 @@
+[DEFAULT]
+support-files =
+  audio.ogg
+
+[test_changeMutedAndVolume.html]
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/dom/audiochannel/mochitest/test_changeMutedAndVolume.html
@@ -0,0 +1,69 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test for checking the active state when be muted or ZERO volume</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<script type="application/javascript;version=1.7">
+
+SimpleTest.waitForExplicitFinish();
+
+var expectedActive = null;
+var generator = runTest();
+var observer = {
+  observe: function(subject, topic, data) {
+    is(topic, "audio-playback", "audio-playback received.");
+    is(data, expectedActive, "Correct active state, state = " + data);
+    generator.next();
+  }
+};
+
+var observerService = SpecialPowers.Cc["@mozilla.org/observer-service;1"]
+                                   .getService(SpecialPowers.Ci.nsIObserverService);
+
+function runTest() {
+  info("Set observer.");
+  observerService.addObserver(observer, "audio-playback", false);
+
+  info("Start playing audio.");
+  var audio = new Audio();
+  audio.src = "audio.ogg";
+  audio.loop = true;
+  audio.play();
+  expectedActive = 'active';
+  yield undefined;
+
+  info("Muted audio.");
+  audio.muted = true;
+  expectedActive = 'inactive';
+  yield undefined;
+
+  info("Unmuted audio.");
+  audio.muted = false;
+  expectedActive = 'active';
+  yield undefined;
+
+  info("Set audio volume to 0.0.");
+  audio.volume = 0.0;
+  expectedActive = 'inactive';
+  yield undefined;
+
+  info("Set audio volume to 1.0.");
+  audio.volume = 1.0;
+  expectedActive = 'active';
+  yield undefined;
+
+  info("Remove observer.");
+  observerService.removeObserver(observer, "audio-playback");
+  audio.pause();
+  SimpleTest.finish();
+  yield undefined;
+}
+
+generator.next();
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- a/dom/audiochannel/moz.build
+++ b/dom/audiochannel/moz.build
@@ -20,10 +20,14 @@ UNIFIED_SOURCES += [
     'AudioChannelAgent.cpp',
     'AudioChannelService.cpp',
 ]
 
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
 
+MOCHITEST_MANIFESTS += [
+    'mochitest/mochitest.ini',
+]
+
 if CONFIG['GNU_CXX']:
     CXXFLAGS += ['-Wshadow']