Ticket #26690: 0001-Bug-26690-Port-padlock-states-for-.onion-services-to.4.patch

File 0001-Bug-26690-Port-padlock-states-for-.onion-services-to.4.patch, 42.1 KB (added by igt0, 6 months ago)
  • mobile/android/app/src/main/res/drawable/site_security_icon.xml

    From 4f1266600993b13da5fb6c0dafb03b02d862f17c Mon Sep 17 00:00:00 2001
    From: Igor Oliveira <igt0@torproject.org>
    Date: Mon, 29 Oct 2018 12:30:14 -0200
    Subject: [PATCH] Bug 26690 - Port padlock states for .onion services to mobile
    
    Prior to this patch, TBA was showing onion services as insecure
    connection and SSL/TLS ones as encrypted connections(lock icon).
    
    This patch fixes the issue adding several new onion icons to indicate
    all the various permutations of onions services hosted HTTP or HTTPS
    pages.
    ---
     .../src/main/res/drawable/site_security_icon.xml   |  10 +++++++++-
     .../app/src/photon/res/drawable-hdpi/ic_onion.png  | Bin 0 -> 807 bytes
     .../photon/res/drawable-hdpi/ic_onion_disabled.png | Bin 0 -> 975 bytes
     .../src/photon/res/drawable-hdpi/ic_onion_lock.png | Bin 0 -> 932 bytes
     .../app/src/photon/res/drawable-xhdpi/ic_onion.png | Bin 0 -> 1015 bytes
     .../res/drawable-xhdpi/ic_onion_disabled.png       | Bin 0 -> 1260 bytes
     .../photon/res/drawable-xhdpi/ic_onion_lock.png    | Bin 0 -> 1275 bytes
     .../src/photon/res/drawable-xxhdpi/ic_onion.png    | Bin 0 -> 1592 bytes
     .../res/drawable-xxhdpi/ic_onion_disabled.png      | Bin 0 -> 1892 bytes
     .../photon/res/drawable-xxhdpi/ic_onion_lock.png   | Bin 0 -> 1899 bytes
     .../src/photon/res/drawable-xxxhdpi/ic_onion.png   | Bin 0 -> 2099 bytes
     .../res/drawable-xxxhdpi/ic_onion_disabled.png     | Bin 0 -> 2526 bytes
     .../photon/res/drawable-xxxhdpi/ic_onion_lock.png  | Bin 0 -> 2568 bytes
     .../photon/res/drawable/security_mode_icon_nm.xml  |   9 +++++++++
     .../photon/res/drawable/security_mode_icon_pm.xml  |   9 +++++++++
     .../base/java/org/mozilla/gecko/SiteIdentity.java  |  14 ++++++++++++++
     .../mozilla/gecko/toolbar/SecurityModeUtil.java    |  21 ++++++++++++++++-----
     .../mozilla/gecko/toolbar/SiteIdentityPopup.java   |  17 +++++++++++------
     mobile/android/chrome/content/browser.js           |  14 +++++++++++++-
     19 files changed, 81 insertions(+), 13 deletions(-)
     create mode 100644 mobile/android/app/src/photon/res/drawable-hdpi/ic_onion.png
     create mode 100644 mobile/android/app/src/photon/res/drawable-hdpi/ic_onion_disabled.png
     create mode 100644 mobile/android/app/src/photon/res/drawable-hdpi/ic_onion_lock.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion_disabled.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion_lock.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion_disabled.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion_lock.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion_disabled.png
     create mode 100755 mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion_lock.png
    
    diff --git a/mobile/android/app/src/main/res/drawable/site_security_icon.xml b/mobile/android/app/src/main/res/drawable/site_security_icon.xml
    index ac8624f861ad..f5f4c7775110 100644
    a b  
    2828    <item
    2929        android:drawable="@drawable/ic_search_icon"
    3030        android:maxLevel="6" />
    31 
     31    <item
     32        android:drawable="@drawable/ic_onion"
     33        android:maxLevel="7"/>
     34    <item
     35        android:drawable="@drawable/ic_onion_lock"
     36        android:maxLevel="8"/>
     37    <item
     38        android:drawable="@drawable/ic_onion_disabled"
     39        android:maxLevel="9"/>
    3240</level-list>
  • new file mobile/android/app/src/photon/res/drawable-hdpi/ic_onion.png

    diff --git a/mobile/android/app/src/photon/res/drawable-hdpi/ic_onion.png b/mobile/android/app/src/photon/res/drawable-hdpi/ic_onion.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..1a61d982752b1b6df28dfcb085999e363805494b
    GIT binary patch
    literal 807
    zcmV+?1K9kDP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O%
    z3;baP0008sNkl<ZSPAWyJ7^S96o&shYZ4ViBq(CxgMbJI5mAV)F=!D4!H6K(*a+HL
    zS%{z(!88^Mc6KTVB8nCwih{DqxR^pER+2_y@KN|Kf_d!qzmwe^XD8>*+}YhK8JOL@
    z=lRXKXU@z53&*^!fJUy~>-XvnQ1vfjJqpNI*XD<Yhav3cxi%uVEE)qeh!vQ^6Q=(a
    z<npnOa91#hag=ZbyD?^Ah^Q7tR#_JsmspLBP&^Ch#SAWT-OBZ2bmNpuSmk0or|nBD
    z!8CrB0Y><}rEK>OZLCcfe$VMA2<zW65A6YrNf5$(V|@;~!k7@*x6DT;E0brBJml6)
    zR-r(thojhu4<>=@kqyYlR`$s-leIAY6k)=x_i&PZ^UM{bVxMix@_5StcY+|AP?bun
    z0Ir9(`Lap^*Y9jVCX2?+STX~rafq$_C#Fj&$OdF4vcd@=$8z5KeS$7g9PWLhY1v>1
    zo7u?MSc&LVj`~j%_%5-p(yAC$*;na-MmbeJqn{wB88ZDdOW__zz*&xfQ9H`4HXV?U
    z4&F@<=+c=cXv{`of}^01z4bJvs}Upv6|j;%MOLPx#@BWEmvuc%s7E%(G);ZK0WgN4
    zjlFjpK2~K1D&Rmu^V(v^b(-_3gbQ&+D6v;a<4kDUpkJDkd>E^xXfn|3tm%>*Gt15J
    zoWwrKUj`~-1GmdO78-w)<Qqf=(tHbS-XUJ74Ag>;&Et_{%RoEumE(V`Nl>q(xH6Dp
    z2Lab5$2#P1um>ZOzYJtNmf|u$$0cWHxw*((@GKNv?Lgc4x5mRUZry|!!9}4kz(>b(
    zn~NRDcy{9juWLV{e%Jz8b&B)Z!#Tz}Z?&T`8OTKF;VV}Tn+SD_XDKOYM6d9gKD!7r
    z5RnUu<fnbDqxn}lgX64PFB5I!cWbQ)<?ksg@VvnW_G5aBz#ZuSVCJRm6V|YL?SwGz
    l)8DZeUtoG~;g~NK_y<Ajld74raR~qb002ovPDHLkV1ls)cGds@
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-hdpi/ic_onion_disabled.png b/mobile/android/app/src/photon/res/drawable-hdpi/ic_onion_disabled.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..9669d12101fbd6fe0d508250bc543c2b8dc4dd92
    GIT binary patch
    literal 975
    zcmV;=12FuFP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O%
    z3;baP000AqNkl<ZSPAWyPe>F|9LL}6_@`A1@gS6Fq^>5I{gE^yh|na~Kj^_u9VCp<
    zu&`U5ymiaN(xD(abPN()7eRtd$WDt;Sd?p7bZXr$f!pfNyuLr-t<Tw+*`1xe<%8k<
    z=C|+neV_UL-g`64*naz8GcY+hS&)xs_vAyQ2Q3^9ACa}-YVPgr?Ua4l*sh-nleX!)
    z{wx>_R*sL47q6|Y-Bc9i1|~1yoS&B=)>|5nZSyTZD^OqimLnhK--N9QBiA08_<)I<
    zRaNZ(*mKzR0NQ|Fdngq8Ds;cJ_}UrQ<~ies6oqXnOl|bNkNgzBi{4eq`uh5g6AXy~
    zW{zNBCIB~J1w&&wXC>UDHIZ#>u7DtRPzVC1oNQ$0*38VzTj7^8BYX-|!aiTg8*wl9
    zj@Qu8&`?o49={KOPFz7*3@`y?=Be<R!YFLnTk7prUaV}1adPh%D49%_qdeCkQVpOB
    zLJTmUDk>`OiF<39lCJ7^E5F4!WAC_R)6>(xJRZ+oqY&VlVzJm0^5+Uev5tW#2$Ppm
    zZ*0g?xf>YLa}0!Sehom6j4*UxlZgAbnZ8I{Tl|hKjx}RnCNY-!tk0pr!NG<^B0(j&
    zC<_St=+<908vVhFbxpXi<D9`zpqh%dF_4upP19at2%R%&EnhGsoUvqnzyCIs2$wgF
    z1deQAaDb+EqnU>6vjqao6)e;#IY73vfkAd3;+R+flxeADJ+f_q0P_HuF&&dF4B{tn
    zsVMmr`iyJVbTT5v6Lmx26xqh+1V)NI-QVBeF5R1&mOx1JIkSiyVRodTdD%=;_E`cU
    zJB{){vfaQ?JTz;lw`-O_SU-E-b8cY>0-C#rlm(R?(037&4;a!yhSr6qRc{9rqM&@i
    zkXB(~;f^NRR?Tu7;%SsSU6($OZ2a`uy$<M{!Pp6_34|ZzTEw?f#<OV8IuXItubymZ
    z8{^txh4GZz_-=9lvk9P)l#q>KS~Bqo0hlro>jLHvV0va}XIF)mU7rTD+FD;H{vC)w
    z7cfisnCk${g3!v;r<F`kY6A$e{GP%4?JCyHsFg6XLEp-+a6JY{5cj(^w+fQ{X^T2?
    zqOMhAd<mPhi2faT%e>vjZ{XqK;RDfV^el9$09Q$R$V3eGx7ym;a3By!NOL$c(|{;C
    xa;C1HC-o*)rOx~2A~}mYBH16jpMgAO;2*A-4l8@4EYSb}002ovPDHLkV1i{q&V&E}
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-hdpi/ic_onion_lock.png b/mobile/android/app/src/photon/res/drawable-hdpi/ic_onion_lock.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..b0f60fea5b28d405b3f0c748479f00002f829899
    GIT binary patch
    literal 932
    zcmV;V16%xwP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O%
    z3;baP000A9Nkl<ZSPAV{O-NKx6#nkZsT5L*B8rkow8Anl%O8Rk<suLw!)-x@yB4k@
    zY16u(h@zrJ3#mnvMJ>u*kc?WBs{|_|603!g7)1CtukYSBzW+P(-b@Zb-r>%>=icw0
    z^SyJ<{dvGr`7b?SqU3MAw^6X76sqtF2R(XHNMHbmF^qMd{s=;0gpyc;8T4TuUzM%b
    z*oGu-VHV#g??XK%B5?3P3U&2GYO8{Q8WQOsk#5S%Snr}47d)0C3L+vd2>XB)_>P}2
    zv7CdWtlJexpdV{-2-TPlPRiYrf5@g7E{lw`VvzyHNV7d(GE!0ekPV@MIn&De5CXqR
    zs#GdcZ9y`5<c*r2`HL5_A?8XNZ%HDd<_k(DGYF(7aFluT)U7<9cD#@^;yn#tu?<;d
    zq-e69W@203vH|fM@d!!%BGd~dq|}5KhOodAkI*NqWRT8jY*t_pn>1sQyQ3#{5(l{5
    zU8m;S5bcv(9&OwT$5q$_y6CYsdUG?MQ+y_wX_p{Fo}=VW>Oqv#E0?L~WENfR4A&zb
    z7mdX9kVJI=Ypuv`;+z}|fMiBwD+Aa;<<AMJ)WQUMxw?)ag$+DLMu=Oj#mWH#$C+(C
    zI*dMtqyZDpI8jf=(t1NZW^t3x1u_#fe2TS(uiVPoZ$bH=##QFpdRz82^d1_(OA^}e
    z!~4Z)dZ(13+Q@<N%-|e}H1YSw29NM~nNsr3OkbBSbm1P7*NNO@WWYbOnyhuUalzoZ
    z$;g3P22<dU3*+GJPOA}4XpXBSN-^<7!2~K?@G)20X$qcmPI2R%Ubb}0zTSfh69it+
    z6KCm<GQNM44KcBmInrs%PQ%e@GB4%Dt^psNVXGC)p;4^D4_+&Bmov<RYusV(6WWm*
    z?n4N*KUMNoJhp-%o6&mBtI@za)giFkI}lMaRhYN<(Lq9Wm}CO}@&k({2MJl0`-(-t
    zZzr6PiQ9f)vE*<<E$X;<Tr3i9JK=;R!oUgUlC#^oXDwn|Pe?Aug!%w{u!!~ps`Z2<
    zw1Im?3-=g-Bdo)o*=hCtCA;Q5{c!{%I5#_?1?9~=BAT&>9@|A?=UIDM%QM6G7GN=-
    zDW*l>!WP`AV`^1!>l?l-^3*wALiXYdUn(7W&Jyrn^}ru1P^z7zLsEMH0000<MNUMn
    GLSTZKO|XFg
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion.png b/mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..074330c3a25a480679d05cea1d6f0b11b5e9757a
    GIT binary patch
    literal 1015
    zcmV<T0|@+yP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O%
    z3;baP000B7Nkl<ZXa((ANobQn6#gcS)&&<#ZCyargV5Futf;m1QWONi?I0?mC@LOA
    z@gQOkf`}Iv1QFbzpcfZJ(2GJvk~XPm5d=LbDySe8Tqw1QOY{3pYO~lh^XAW_7c(&V
    zC-dI>=6!GW{|Abx7=dC0iV-kIAc88iV$^_o?HDqk%peFD<oSzRuz(<YQHQP!Fb^e&
    zpaCtoh;P`EA+z{XSOTq>0uQ&K@H6RC6y*rxI30gaSu=ANmf%8CZdnLg>f5Quah?vA
    zGgl=HBkYOaIKuKs)`7%spdS0|Kr^*f=3j^ZqL@!-AO1z`Kmf-O$BDESo?<K(Vh*~~
    z>a2@}>wz9DO?snHk>R|;XGVWzzRqj>!p#Adw(59vw=XGD0XA^xyzZ;Y=joO}4C4|j
    zi(X+oJkRQwhel4?yIEyEDpQg1VVq$S!CE?fhIJLp9n3N2HO#4`&_w6ArYiC;x$6NB
    zm2^ituhRtPf1M9=*z8D19saoM0X@zmiJ_62y!{<*Ln&5s?fKAO<gdnE4=4_x08Zz0
    zLt&~*=XG1|2=sbho0EVZVlhlM=vax}5r|+H`(S_0)^#8K!gUU{i8=Kwg!#{bFs5<z
    zpQQ7v#O>;{k%v17@>sDLkHmIa6#WzM*nBJ3biJ;7K99qC-T>DafP;QFHh%>4`5w5$
    z=I3PzihY&tkzNw%XC)DiJ%K0|p$GTq{BThVHcASIxX~T9GqKTb!3>^c^bQ-cF|*QD
    zI7$+YQX6>>v||i!PLCP+=~8gtdJ5}F;)=vxzKnKb_n<hhz4o{vKEP;q1fK8)1?-Uk
    zI?^fQez9GGCF_CC#0j!Y0_aR9j%^Yw83ACK1kABcCHI+0CQKOt4|7dG1(C-w%Y-W<
    z01WQ%NqId!Rm@(J5m5M^-MqlH3O`IO$Or&$O+W>adw65Ql@fSi0&*_bZ!b#m%7iN=
    zaMc7<0C_Xts(v!z$_RvTn?N5;V2<TY5<D4!Y94n3hTE2;HK~r`fw7+V1VNG!&_MNk
    zr-MXK2w?M2Q9LpRv6=S+{RYpN<ODQS2{sZqY((|1@RdEi0=0N4g|H)_KT-s-oZvU5
    z4Or-PFgOkT5OUwbh9-Vf80%<yidnyf^PhU}#pf^r2T+4fTOj`gbW8fXmxoQvJDF!&
    zHr~nbUFMKE%cwuIv`wn#M<5BqLKHK3SFU48zuc;34v|!dP7dYs3!i#Tf5&GVa}2|1
    lQNsyaOvMNkBk+Gm;18_gvab*n4Eg{7002ovPDHLkV1fWq$ff`Q
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion_disabled.png b/mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion_disabled.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..09db37998d332a4687416b7780292733387dda3d
    GIT binary patch
    literal 1260
    zcmV<I1QYv-P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O%
    z3;baP000D|Nkl<ZXa((9O=uHA6rPPqmDExjRH{O;iMFXqJv2oW5%gx$)&?w!iU=O9
    zM?L7Jh=Qn~pch*`XbUP4TavayMJ)7W3nB)Q#`=SbSVRT2mYSdSo03g7o0;9&bkl=m
    zVA(hC&3o^AZ)axT3?ao<%s?>%#SHK=(AL(rtfi&J%acRq<jF+&cF}=m$F;V$mc?SR
    zaARZR&Tu%KR`>h;73c(HSq>zV$qS%I)51K6f(4LBB<=#w#?H>pIK@T31bCew19<E<
    zn{D5~z(5Z8$$HPqq@3&^Hfb?Q+OO9{qHi&t+a#`J9s*?f5Hj48GO<>Yr2U}Jfww5d
    zJ2^BobW!W#&1QE^T$Y~@nXFF9zB`;`gZt^bDeYLLZ&L`1-^Ueu0Dlp{&nw{3zat2q
    znsCMc*mf(nSnomw;8C0bc)LOa{Bx(%c~t2uZ${=75m_Y3AJZKMQIG%t+M)FY@ZTH`
    zM<5ss&ZuR2;0cj>JuluqR*%=xmMr2xAh2?FcJ?wBW&%KavAeuL5ZhJGV&L!V@9%%F
    z;t^f&61i7X+i-+Lbk{JM_aeqFV;>(Mj{q=lzn202@ZjKJuQ~9(gHkY<Q0uU0WmjOy
    zgm@z(Bgxv@+Lsu77!NBUKM}yIy1Kf_iHV6{)TnXh#lTZrmaGBn=OeK7fEr}9a(taL
    z;FnREmEfs8O9G&V0CEX^>olj;;HfW57I9Nk(+SvW)&Wl{XQpq)l5!>H*s7dya|>2{
    z+Nkweb5<?arBNPKVaK_G?9=jq+g8M8$+52=NO@wes>mKU5Af7bUW=ISJoq7<g8qGg
    z-;|9gyH`l?)RXBikSfY<L$@&-YHqL4;HgJb0W>!^Z$`#P@yzWgxsWrQg#b^z2~Qz9
    z-vRsyp5+;sY|1QnRIgXPUT;M-8jY|m^0`9WDCWEkwR{-hl`@xW(JXlEVAo)`1NOV{
    zh1YWpa|A*GjE#-$g?>H9Mw)FFJk30mkEINhB9OCbV}gWX05D3|$!Q~d`GBXHSKCFu
    z9p`9|nrB2C27t5e78udZz7^n8K&5y*zQ+i(T5cEsva(IBpry@%SLVFdj?#y}9SSY-
    zHVgoN+A5wQv*0yzo@o{VtYHc`Ov3<B3Nwqee82--)|_Wyg1@CKK96S@02DuKl?w$v
    z<>!;upI%=ifUGlJfx*+V{JkDvt;{fhl9G~#P>NB-LW8G1aIOx~w`emAps%m*8|LNE
    zLV$;#DWA_r6DHh*YM~RA6+ia;m^z4hKDYQ|)bn(=5m~Sdl*hZfyPq-mTvje1%}}$)
    zz<j|Y`yt$1nEHuPsJc^V0l`0Zxm*V{xfAMg19;uA&ZD_#%^0+B+930{+-|qOr>AE+
    z<3OC^9_r=4i5oDJTRvL{K5DnyJ3^t*BXPL7Bl!Uk$%o65Yz+o@9CUV}-0)`)WcQHm
    z-;fOB>B3#oF!~w?Y&|_LcM(t2SN8*dW>GP~s|_QNYV@}v7<z580*?z1ofh8#^b7do
    zrKP12T<#iP7eYt4aRd0cb)#!$dWIe_HX%=g>%0w@MD8kuJr@TSGf>PxF$4ca2L1tu
    WcAn$1{7V)90000<MNUMnLSTYz@KVSC
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion_lock.png b/mobile/android/app/src/photon/res/drawable-xhdpi/ic_onion_lock.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..13799b7fa8f749d962cae47451a9dc2e078beb41
    GIT binary patch
    literal 1275
    zcmV<X1O)quP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O%
    z3;baP000ECNkl<ZXa((=TZkM*6o&umG494qyx^6H7ew(AVM!F-U1LC05W#>E^C*fM
    zR1kbqLDZKhilBK=2nYcM5fL@02<k%~)Sm20B${9_XqI?E6m<<~E@r3wPS4J4cTeAD
    zdjhjCXX)vxbE;1L=hUe>RlU-H1|ArAVBmpN57c$C>bfFTX3Rj2=Y&joNr6|gU3bm)
    zYB}Jx0dHSNM_;Qk?0KFSkTp8wT{0?rpkqAqY+Y|+z@@rc|Aq4X8rH9Ri1GvQFX6pi
    zXXqAMRyM$O0I15SYa_6>gaP8|Ow^51e+}U0&Z*w36E%i$e^(vK`qz4)q^-le|C8RP
    zekzaS?{|Q2;W<5Q;{aXLjk-p^wEI*n^mYcObP+-GeJUmk7f<VStv*bZFOb>mMSM~Y
    zj;DGJ-o~mv1GW|V+CW_IAW(j0u^uF3mLv>$Pvct8XhDKsxmwKtUzda6bzof;BC-7^
    z&}Ecu4YX)VBf5d5{7;L~%XhVHG{D=^iZ-Bt-6cv6`H=2BUf^x0YHMJEknwbP6mzT`
    zkc|&(HzBqz#_wUJngIr6Ods?6TMnjWY@G*k<dsC#4e)gxi_;QTHqEjIjuTZ|19gA}
    zBrZ!}S>*I5@|`hpK;TW0nH>j;8uC?yqSLWho0666f%6nh>KxM2(*WC;3tohdr<(|~
    z=ArIOoll~BoIdMOe^z9O8OrZt#ItO--$wX_#qJI8!$tcNAWkXJehlxfC3*Q_yDxMv
    z@0WRoa{A3;#FH5DOir7asQen(g~xo3$bq(&0B<RBQyaXmhZ*%%o;>gdtcLDQjPsmT
    z%22r(_=?1ISf8Uj`+^c3&FNoq@rv-oStrRg$kNG!qtj9J{eYnt@Ln429+qpm4F`PC
    z!A~%XXJ8**I~01p9Qft{Z?%uh0dXA#@6hJy5i-PbO_0gQD0#YzHh;yiHOkFGu>pT*
    zGm6*7lowUpoabz@i$xrzK=%Q9vsN+#Mz;HmaU5}pvy#oW&0YcJ8{q3grr#D{cNA!U
    z*rA~{gvWfCI(?1T-$+$9&Mi&)C?;#@`dB@sl5c?YD1Exm6@jM1v4Y4ssX6#m^OgA<
    zmwO%kJ33|?ut&@A-aQ>XiWrVvYJ%j{q~TceAQ9&=Ar+U92i&C#DBHUSiOk|{FRtF{
    z6MEerGVPwQgG?L00i4YixjNn{QVVomq-Mp_NP$Cq1~`)7x2yB<*=EfZd_BnEuO!*I
    zb;r@dV%fIcL;8%iD|6eI5jy?Imb`{t?Lb=d><}{RyQLBB3cDQPhSm%4rp#vLC_7gM
    z<r&b5<BYB;?4=|yqhJBXr>JYQT(-V!13W&EECR|lU|5sjpY3-WvJDswZ&}+HuK|X<
    zrWY5t0nM*y+xppv>=0_99^uyI^j)jkZ|`CQY%MI&%@{G=Z{Q72u>sb~vfwaRZ>M*y
    z+D}x@07JY=GjrcJ@4%363XF)KfC?Iy5NGNuZ$N95alONVZ4@JJ<=M(JpRs4SKNxx1
    z6TW-(6J+blKFpOJ+`jQl>S8WFSJGuCvosxc_4Ner+j$C)#9{mNANv>8r#S2}9JQeD
    lM(Jt?+<^xM9_Skn{13gG_qOCHT2cT2002ovPDHLkV1oBZX}<sf
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion.png b/mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..711bb3c8d8faf58070fb6f3385cfbce427233d08
    GIT binary patch
    literal 1592
    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
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion_disabled.png b/mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion_disabled.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..0d931669abf36768fcd8b794827da460c651ff87
    GIT binary patch
    literal 1892
    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
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion_lock.png b/mobile/android/app/src/photon/res/drawable-xxhdpi/ic_onion_lock.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..f7a5c29b4c170a9ade16bab1abc0a43bcf8a8326
    GIT binary patch
    literal 1899
    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
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion.png b/mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..97a0beabbe0c3e093afed843699c0a52538b51fb
    GIT binary patch
    literal 2099
    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
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion_disabled.png b/mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion_disabled.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..aec29bf6238bb6e831f0ae1c0c24d13b4b5726a0
    GIT binary patch
    literal 2526
    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
  • new file 0

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion_lock.png b/mobile/android/app/src/photon/res/drawable-xxxhdpi/ic_onion_lock.png
    new file mode 100755
    index 0000000000000000000000000000000000000000..71df527b2a6a89912fa0b39a68215949f7e67cae
    GIT binary patch
    literal 2568
    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
  • mobile/android/app/src/photon/res/drawable/security_mode_icon_nm.xml

    literal 0
    HcmV?d00001
    
    diff --git a/mobile/android/app/src/photon/res/drawable/security_mode_icon_nm.xml b/mobile/android/app/src/photon/res/drawable/security_mode_icon_nm.xml
    index 0b6b496b0b34..bb0da0b843d2 100644
    a b  
    2828    <item
    2929        android:drawable="@drawable/ic_search_icon"
    3030        android:maxLevel="6" />
     31    <item
     32        android:drawable="@drawable/ic_onion"
     33        android:maxLevel="7"/>
     34    <item
     35        android:drawable="@drawable/ic_onion_lock"
     36        android:maxLevel="8"/>
     37    <item
     38        android:drawable="@drawable/ic_onion_disabled"
     39        android:maxLevel="9"/>
    3140
    3241</level-list>
  • mobile/android/app/src/photon/res/drawable/security_mode_icon_pm.xml

    diff --git a/mobile/android/app/src/photon/res/drawable/security_mode_icon_pm.xml b/mobile/android/app/src/photon/res/drawable/security_mode_icon_pm.xml
    index edbd269040d1..be47d7fe081f 100644
    a b  
    2828    <item
    2929        android:drawable="@drawable/ic_search_icon"
    3030        android:maxLevel="6" />
     31    <item
     32        android:drawable="@drawable/ic_onion"
     33        android:maxLevel="7"/>
     34    <item
     35        android:drawable="@drawable/ic_onion_lock"
     36        android:maxLevel="8"/>
     37    <item
     38        android:drawable="@drawable/ic_onion_disabled"
     39        android:maxLevel="9"/>
    3140
    3241</level-list>
  • mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java

    diff --git a/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java b/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java
    index 1a046657329d..f5dcb5747386 100644
    a b public class SiteIdentity { 
    2525    private String mCountry;
    2626    private String mVerifier;
    2727    private String mOrigin;
     28    private boolean mIsOnionHost;
     29    private boolean mHasCert;
    2830
    2931    public enum SecurityMode {
    3032        UNKNOWN,
    public class SiteIdentity { 
    5961        mCountry = null;
    6062        mVerifier = null;
    6163        mSecure = false;
     64        mIsOnionHost = false;
     65        mHasCert = false;
    6266    }
    6367
    6468    public void reset() {
    public class SiteIdentity { 
    110114        mVerifier = identityData.getString("verifier");
    111115        mSecure = identityData.getBoolean("secure");
    112116        mSecurityException = identityData.getBoolean("securityException");
     117        mIsOnionHost = identityData.getBoolean("isOnionHost");
     118        mHasCert = identityData.getBoolean("hasCert");
    113119    }
    114120
    115121    public SecurityMode getSecurityMode() {
    public class SiteIdentity { 
    152158        return mSecure;
    153159    }
    154160
     161    public boolean isOnionHost() {
     162        return mIsOnionHost;
     163    }
     164
     165    public boolean hasCert() {
     166        return mHasCert;
     167    }
     168
    155169    public MixedMode getMixedModeActive() {
    156170        return mMixedModeActive;
    157171    }
  • mobile/android/base/java/org/mozilla/gecko/toolbar/SecurityModeUtil.java

    diff --git a/mobile/android/base/java/org/mozilla/gecko/toolbar/SecurityModeUtil.java b/mobile/android/base/java/org/mozilla/gecko/toolbar/SecurityModeUtil.java
    index ceb33b8e3acb..10bc83c279a1 100644
    a b public class SecurityModeUtil { 
    3535        LOCK_SECURE(1),
    3636        LOCK_WARNING(-1), // not used for now. reserve for MixedDisplayContent icon, if any.
    3737        LOCK_INSECURE(3),
     38        ONION(7),
     39        ONION_ACTIVATE(8),
     40        ONION_DISABLED(9),
    3841        WARNING(2),
    3942        TRACKING_CONTENT_BLOCKED(4),
    4043        TRACKING_CONTENT_LOADED(5);
    public class SecurityModeUtil { 
    100103        final MixedMode displayMixedMode = identity.getMixedModeDisplay();
    101104        final TrackingMode trackingMode = identity.getTrackingMode();
    102105        final boolean securityException = identity.isSecurityException();
     106        final boolean isOnionHost = identity.isOnionHost();
     107        final boolean hasCert = identity.hasCert();
    103108
    104109        if (securityException) {
    105110            return IconType.WARNING;
    public class SecurityModeUtil { 
    108113        } else if (trackingMode == TrackingMode.TRACKING_CONTENT_BLOCKED) {
    109114            return IconType.TRACKING_CONTENT_BLOCKED;
    110115        } else if (activeMixedMode == MixedMode.LOADED) {
    111             return IconType.LOCK_INSECURE;
     116            return isOnionHost ? IconType.ONION_DISABLED : IconType.LOCK_INSECURE;
    112117        } else if (displayMixedMode == MixedMode.LOADED) {
    113             return IconType.WARNING;
     118            return isOnionHost ? IconType.ONION_DISABLED : IconType.WARNING;
    114119        }
    115120
    116121        // Chrome-UI checking is after tracking/mixed-content, even for about: pages, as they
    public class SecurityModeUtil { 
    119124            return IconType.DEFAULT;
    120125        }
    121126
    122         return securityModeMap.containsKey(securityMode)
    123                 ? securityModeMap.get(securityMode)
    124                 : IconType.UNKNOWN;
     127        if (securityMode == SecurityMode.UNKNOWN) {
     128            return isOnionHost ? IconType.ONION : IconType.UNKNOWN;
     129        } else if (securityMode == SecurityMode.IDENTIFIED) {
     130            return isOnionHost ? (hasCert ? IconType.ONION_ACTIVATE : IconType.ONION) : IconType.LOCK_SECURE;
     131        } else if (securityMode == SecurityMode.VERIFIED) {
     132            return isOnionHost ? IconType.ONION_ACTIVATE : IconType.LOCK_SECURE;
     133        } else {
     134            return IconType.UNKNOWN;
     135        }
    125136    }
    126137
    127138    /**
  • mobile/android/base/java/org/mozilla/gecko/toolbar/SiteIdentityPopup.java

    diff --git a/mobile/android/base/java/org/mozilla/gecko/toolbar/SiteIdentityPopup.java b/mobile/android/base/java/org/mozilla/gecko/toolbar/SiteIdentityPopup.java
    index 831f69f2bf09..df67f0a9b9ed 100644
    a b public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe 
    144144            init();
    145145        }
    146146
    147         final boolean isIdentityKnown = (siteIdentity.getSecurityMode() == SecurityMode.IDENTIFIED ||
    148                                          siteIdentity.getSecurityMode() == SecurityMode.VERIFIED);
     147        final boolean isIdentityKnown = ((siteIdentity.getSecurityMode() == SecurityMode.IDENTIFIED ||
     148                                         siteIdentity.getSecurityMode() == SecurityMode.VERIFIED) &&
     149                                         siteIdentity.hasCert());
    149150        updateConnectionState(siteIdentity);
    150151        toggleIdentityKnownContainerVisibility(isIdentityKnown);
    151152
    public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe 
    322323        } else if (!siteIdentity.isSecure()) {
    323324            if (siteIdentity.getMixedModeActive() == MixedMode.LOADED) {
    324325                // Active Mixed Content loaded because user has disabled blocking.
    325                 mIcon.setImageResource(R.drawable.ic_lock_disabled);
     326                int resId = siteIdentity.isOnionHost() ? R.drawable.ic_onion_disabled : R.drawable.ic_lock_disabled;
     327                mIcon.setImageResource(resId);
    326328                clearSecurityStateIcon();
    327329                mMixedContentActivity.setVisibility(View.VISIBLE);
    328330                mMixedContentActivity.setText(R.string.mixed_content_protection_disabled);
    public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe 
    330332                mLink.setVisibility(View.VISIBLE);
    331333            } else if (siteIdentity.getMixedModeDisplay() == MixedMode.LOADED) {
    332334                // Passive Mixed Content loaded.
    333                 mIcon.setImageResource(R.drawable.ic_lock_inactive);
     335                int resId = siteIdentity.isOnionHost() ? R.drawable.ic_onion_disabled : R.drawable.ic_lock_inactive;
     336                mIcon.setImageResource(resId);
    334337                setSecurityStateIcon(R.drawable.ic_warning_major, 1);
    335338                mMixedContentActivity.setVisibility(View.VISIBLE);
    336339                if (siteIdentity.getMixedModeActive() == MixedMode.BLOCKED) {
    public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe 
    342345
    343346            } else {
    344347                // Unencrypted connection with no mixed content.
    345                 mIcon.setImageResource(R.drawable.globe_light);
     348                int resId = siteIdentity.isOnionHost() ? R.drawable.ic_onion : R.drawable.globe_light;
     349                mIcon.setImageResource(resId);
    346350                clearSecurityStateIcon();
    347351
    348352                mMixedContentActivity.setVisibility(View.GONE);
    public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe 
    361365
    362366        } else {
    363367            // Connection is secure.
    364             mIcon.setImageResource(R.drawable.ic_lock);
     368            int resId = siteIdentity.isOnionHost() ? (siteIdentity.hasCert() ? R.drawable.ic_onion_lock : R.drawable.ic_onion) : R.drawable.ic_lock;
     369            mIcon.setImageResource(resId);
    365370
    366371            setSecurityStateIcon(R.drawable.img_check, 2);
    367372            mSecurityState.setTextColor(ContextCompat.getColor(mContext, R.color.affirmative_green));
  • mobile/android/chrome/content/browser.js

    diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js
    index d081fde9b20e..c3430f5b5a4c 100644
    a b var IdentityHandler = { 
    55585558  */
    55595559  getIdentityData : function() {
    55605560    let result = {};
     5561
     5562    // Even if the connection is secure, it may not have a certificate
     5563    if (!this._lastStatus) {
     5564      return result;
     5565    }
     5566
    55615567    let status = this._lastStatus.QueryInterface(Ci.nsISSLStatus);
    55625568    let cert = status.serverCert;
    55635569
    var IdentityHandler = { 
    55855591    return result;
    55865592  },
    55875593
     5594  isOnionHost: function isOnionHost() {
     5595    return this._uri.host.toLowerCase().endsWith(".onion");
     5596  },
     5597
    55885598  /**
    55895599   * Determines the identity mode corresponding to the icon we show in the urlbar.
    55905600   */
    var IdentityHandler = { 
    57045714    };
    57055715
    57065716    result.host = this.getEffectiveHost();
     5717    result.isOnionHost = this.isOnionHost();
     5718    result.hasCert = !!this._lastStatus;
    57075719
    57085720    // Don't show identity data for pages with an unknown identity or if any
    57095721    // mixed content is loaded (mixed display content is loaded by default).
    var IdentityHandler = { 
    57575769    // hasMatchingOverride does not handle that, so avoid calling it.
    57585770    // Updating the tooltip value in those cases isn't critical.
    57595771    // FIXME: Fixing bug 646690 would probably makes this check unnecessary
    5760     if (this._lastLocation.hostname &&
     5772    if (this._lastLocation.hostname && iData.cert &&
    57615773        this._overrideService.hasMatchingOverride(this._lastLocation.hostname,
    57625774                                                  (this._lastLocation.port || 443),
    57635775                                                  iData.cert, {}, {})) {