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

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

    From d789f2940abae8425604a0c7f34b099e38541ed8 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 -> 931 bytes
     .../photon/res/drawable-hdpi/ic_onion_disabled.png | Bin 0 -> 1120 bytes
     .../src/photon/res/drawable-hdpi/ic_onion_lock.png | Bin 0 -> 1061 bytes
     .../app/src/photon/res/drawable-xhdpi/ic_onion.png | Bin 0 -> 1222 bytes
     .../res/drawable-xhdpi/ic_onion_disabled.png       | Bin 0 -> 1501 bytes
     .../photon/res/drawable-xhdpi/ic_onion_lock.png    | Bin 0 -> 1391 bytes
     .../src/photon/res/drawable-xxhdpi/ic_onion.png    | Bin 0 -> 1929 bytes
     .../res/drawable-xxhdpi/ic_onion_disabled.png      | Bin 0 -> 2313 bytes
     .../photon/res/drawable-xxhdpi/ic_onion_lock.png   | Bin 0 -> 2176 bytes
     .../src/photon/res/drawable-xxxhdpi/ic_onion.png   | Bin 0 -> 2581 bytes
     .../res/drawable-xxxhdpi/ic_onion_disabled.png     | Bin 0 -> 2984 bytes
     .../photon/res/drawable-xxxhdpi/ic_onion_lock.png  | Bin 0 -> 2880 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..49a823823e2bfe3c3d723629aa9f91e6ee4010a4
    GIT binary patch
    literal 931
    zcmV;U16=%xP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O%
    z3;baP000A8Nkl<ZSP8vYNoW*76n&M&^<Xrf1i>JR5)cuM60#jM;DR1R+%DoFC>~T$
    zRPd~z;6Vj(7X|Sm;zf~oaF!$r0V6>#3W5u$5OD#GNoLAd-2<uauI}odOy`Hr{QB?L
    z|8J^)SN|HIl9I<t^rJR3WG|+NVkMx)<`5gtVH*l)bSUYQ`mhwE*g?}`6w#$aCcVmJ
    zOl(stQ^ajl;jc4SLLh_f$YKB^cthK6RO298@Y@!9;wvOcBZuouGz}8V(Th18KjyfJ
    zV<kT@1?#Z}-<*-<pRnL|IES@doo>fb;5AA7p}wj#E|Tshu8blWODeHKZgQ1QvWC2J
    zG6@+qb>cN7S+XV(xQ{lRHbGIg@>VE=PL}O{27buvZK+oDJcFpm9^DXEPhLY=CX%?R
    zB^aYV{>217aMaAd&zetcHTf-@k9&+hpk){*;~EDsh6Ng)NKH<t0mIC2AT*1_Mq;Nz
    zaSM=~kP29XUzWJ)(JxDq6MBg{-jW-ZY@NtsgT==PCoAe4I#|%xcr7$W(~W}LCHUxr
    zyLcO(=ung%k5C@-_~N|8K%1k2g<=BFxZ@q=CfOhAQv&RS^4P`idXcL#+ZHSm7mOfr
    zhhMD=i|{YZH=0lu=NRO0*yJ+p-RzjQaG!EJ17DEvqR!w*3S?CJb$lou;T2~3xHv;I
    zp)9|Fz!}qoir6F{j-M<8g9LAx>Tj}aBY-6a|4N(M(avm|1Xn1Jt;8pTjG}Q&<Kn16
    zLK27kPN|IrJINR93pDW(>c<Qga+8LqtE%36ls8QiFQH*H5c9viHTM+MqIcK#5-MO;
    z3Mp+NJsYl<Pz}D?W~YFAP9t7Ib@<4;>K<NF$ZQN*#ST*wFQG;r>m=)b@}$5sTd$tZ
    zOUOlT=?<ytg6Fj+e9?0R3031R9X{z!sp#(8|ExcDkdQimS7Wc=vEpNi3;x%J$`K@_
    ztS!#b_=HkZ5rL;{L5`bZ2VbtbSB9qxf%7bMGjZKFzW#ts+Rm^hEt-%@;{McfnWR?4
    z&uR1=a@yEd&mlA5XeXqmNLE!3fA1+^A4jc$C{YH1_k^!vDz0EPhN4^*7LSk~<vAC7
    z1RXRr^IFDhE(zB&QY}Bf^HU{#$4l)mJ*3}9n>vBSlK(m9tOnXT6_x-1002ovPDHLk
    FV1f}nrV#)D
  • 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..c164b8df555090048772e28489299b8e70478a74
    GIT binary patch
    literal 1120
    zcmV-m1fTnfP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O%
    z3;baP000CRNkl<ZSP9*jT}TvB6vt=Q-ECPbEF-Fi#9~u|GK%bDiNxxmbX^EV(1eA+
    zm%u2ory`=Dm!KX*3W}((mks=0LI@Peo{Ex!WGOJ*2Sxitmvq<Ze@4$bGu~YtclM=$
    z;of`hx##@$-gEDqyOLzVQ&m;vEGsKJkjzwVZSDGGeMY(6C@|XwOxD!Y)C;@aepx%#
    z@AvPH#bVWpq8yx_o(`bzx3)i7J#C<9G<qAxeKwn|ft*xSRGf;(<2Pq#XAjA;Jmz#d
    zy=`r6<5~a(KO#K*?vf-a$0bSb_Y~~ED+hyd(vh`_X6p;HFoapi!c#dnH|Iqij$l}p
    zXYiJEcXz+h+Eq$Q?BU6g=ZYj%v0RpIO}mD^+@ZFOg{vvCBsBy>V*zuEVW^E6yRZ@%
    z(w(2F`C3{)FtKIc3`{CYA=gpf@9OG$sA)^0nOW?Y`?<a<AfL~dzhK}G8{!hnG?<;8
    zeUaN#rh-At1Sy7C-&70{2m+RVc_|!!KpDZzoJkmy<*$gPqn(|dV=P-1CO5A}?(2)O
    zzNuY?ILQV`F(7D(ieQ9Zeqw;BP6vhznOd@*o}P~w)5rvd(vBb>C@(KRL2|P*!?sKT
    z(IAJz(aVDcr3*7RwptjnX9@_;WE^<c1Rx2KLz3!^=L~nM0c?mF?&EUBL5&l58v?oo
    zP<|e4ENzIby2*&NFS=y&(Fq*%ECWOKmIb136+RD*0J(~Hoe_fDR=_L^gaGvb;tAd(
    z>{wJ<1(Om8OXS58^#aB%f?%1IFiC-M02Tt~H54|oV^L`a21~ydOW%StrJ=pO{inzt
    z$(HQ0Kp^140T@D`r7*~uUczo2cIl&JFhZb-iHY-Aru>wHOzb9_8G?a5FWH3cv&b%w
    zC9|)aq5ArI2L@b8rc83P%cO;2yQzHWfFhB|VJL6sfyUAbm<5|B5vRh<q60!wRbYhR
    zwuLZcl0Gro4>P;b2Q`9D2xKvg>Ks5@6BL??ZiXOVqv=ztnSdd~NMn#zFMV`CP#V>$
    zWD16SV1~YFeR16g^ghv%#@1#VDayY&IXPibzYfUda=n7mcqV6tAg~f0t*x!Xi=z%G
    zh|8K&QJPnpLKqJ{(JvOrD0Z3!a#f_usVUPN9{s#ml#>|qnN`A&(-x${1Id6AGsI~p
    z99J5ZErjXEMIiN;fSfao_Ik@u7Q%GlzIGZH$Z57MD%B+m{}{QRDHsIsB;F=ms~?L1
    zj4~AnxjXV?inYbZI5X6Pzf~x8P`}!Xn&KKDKB4D<+wFde&GJjEwNwhfk~F+$$1?z(
    z<8BcQ_fhhOPfRHeww-Xg8S+hd<EVd!Y#i@fv<E|>&<Kw)Q>s9t#f7<3(V2Tl`HOI(
    mcX&4B-Oyfd%^3XebpHWaOrFT7X!QF40000<MNUMnLSTY^-~=rI
  • 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..cdface9325abf85019b1f6d424bda0cb304785f1
    GIT binary patch
    literal 1061
    zcmV+=1ls$FP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ00004XF*Lt006O%
    z3;baP000BrNkl<ZSPAV|NoW*76n&LMjl_LH5mY>g8zJJ7iKFJApr99phzc6?=1oKt
    zk$@YBiijxa#f2C=2#Sa(Djp>!lRy+iRMbR>AW9Sx<Cd8zU)6NFyJot3dO8VSEa<7K
    zzrOzU>sR#v18uDsizdwXG$SGK3Zp%FKEx6qdN}fPl;H;+VhpMcg#?x&g)Ia+6T?tz
    z@bXLs2B;TTX@4=}lZJ{$6E<;v7)i`y{~E<ujwOU#KobSXnxf5E%P2gsh%xs2_|#bQ
    zZ|o}($6IS2x{Ds6G`73E)N?#n&jq7Zgsq4b4o2x0X(Lg7B&NF5GGH=<g9P)?#Vcr7
    z7$Aufv|@(kp~u71O)SGn4|-@)ct8m(#8b4O4;}2E(8Gi*FD=}2JF;j6Ps8U>3X^EP
    zT<<1u_qdxtH@9~UD$wgDM;V8Y&@wz`#+~wXB3X(4;02e{olBmg`H0~GDN7QM0t}AE
    zNOT79L$SgGYUQFx90;`9!`d{!7A}WcFo(%}iN03&`V%<E?S5PHGgUjz+P#V|F^#ld
    zj$dLp?qU(X_}U;NxKg*H6rXT}Mt4(ogs-6@oJAG(XnunAIfV<<sqm2hP1<=(Mjd8D
    zjdPkmAay_{ag7@J67?C+`xq85t)F5u<r@fQSdJ%?(8v<8#%ou4=TIXL$s`&>fKj!6
    zzXqe~ltg_9FbZ0nNA6`4V`i2Ms2MBCYT%PUzXaMDo5$Kz5~ta_m$i*xS21tOm>9Fj
    zJH)<E%c>vAXg1~Mr0F!l^C^it6n7i8ZFmgs(uqU@)2X-G<_o+bbvg6ur$y^vf0O_^
    zNp~V6b!C5I>v3R4D2ctKjdu$Kjs@Opeu_(Aw&SGqgK;=jxWX6cun7uuR&xL~V<LIG
    zviQMMX#o<($*=ZqTY#dQHzixn0VJ`G%u(3_zH@;aT#|bh-&}fuU%q<M;N|Q_$B<<4
    z3*SEQ^r~ef(#)S~)}0N8Y8oe40=f;FGpS-8^|w;W)v-vN>A&hm10-<Y+UjZ(sLNPs
    zzX#n*Y&7QnlM;eEMjI+!bYXRtEZeBR5ykne*-0H$6HKt4H&?QTS<L|?BAnEMi#9mT
    zw&Mom&i=u16Tylb&@JjGBiI;J6$elZU0eY5;rCCQ14zNhT)+bFD?^Re1Qf?t9;xf;
    z^!rdd_OovSQc{)t)G6j&Mc|{K(ooWK0V!`W*3Tkdp9HS+Ne?A}Y}?*|GN8Kn6}pXp
    z%K2R4(`745jMHQ3qS?$y1KYM;kn);QpV0|IOzFs_IJ&5H8hM`<*vWC!iv5nOq5hnB
    fo)^P^0Y>02N=DClGlYeV00000NkvXXu0mjfE;8kg
  • 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..3619725e63e473fd0a364827ef2d5bb67ff0777d
    GIT binary patch
    literal 1222
    zcmV;%1UdVOP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O%
    z3;baP000DiNkl<ZXa&t$NoW*76n!<uH7MeO3yLVXKwMD7HE}zLxPhQvTo6IMh<XrF
    z1O?H9;)0-uATCjYkdp^NK`+jXL2v^lCb*)43L2M#;x<#hnq=a1PjydKx_f2{Cf)Vx
    z*Z=R;HviWIC{{^edK9i=Q5bdDln}UuTK@g&kh?2!Ohg<9(1>yFrqb5qI7|ZXwIGrh
    zOVIoHY2qhMy){}rA7O=0Tkxhh)<R+z4LL_YjwzHKLJEsIoW!sbb5P$=H+&I>diH8@
    z3}mMk66lxd+y&#&1F!Id%LyE5wY0J&hSR9Q)@;@08RZOY?EtS3Nsjt=oZ;I{2SCBa
    zQ;i)CnMEZ!0urknIMO)6`e27l;4SMbITwE&a*IlI1c1>l98U1SPXb@TrSs9HXH|{z
    z81*037`71neJivY<?smH!62^YxgDER;E~2(n@Hdk!C&-jw`ll(5?FM~Q%zt!fuG21
    z+O~ClnL1UhFUivtxK8lPf~@;oo52Yrc$TMeE!U{e`(5<Kd`#kb6jBMkglagV>Kr#I
    z0#``3tBI<qPVgB}o}QsQgM~+2GGh!J|D^Ur%wVq&O7Iy_AV%XC|JE7d5qK9Cc;zn~
    z0?LxWDD^NXLl{u>Fwiqn35P%u%ej0u8hMoHi8nZCq-&rQY!9e_EQxL0m`CZ$?ps~p
    z0=M%KMn=sBI6YN5Pauh@42O@?a*d~TlLmnY9EPI|=o<J;nRLn3u_tf`eYj;$(1_WR
    z$@S*<F7T2BwsSbH`l-3w><HY#0y;Uz^*+LFD8zaLhiD5XyOJOe2WA8$Ppd>`o$nxc
    zvpyaU4aF_oQA;r!FAC`w2Ga)q0)ek9WGvKn!7y8JXVl=SpWVX8XadKI4qhRaOi3lf
    z6cy$A6n_G7W=pd3>7I{YvnGj=`0f7<@4bYQ=*>e-#VfueV1^{H)&^!8bvi5FGmysa
    zG6An}ALL5Veo^WPG@%<iY}PR@k!%=lW3|q=o<J)zCSZWBL&;=m{VAv?Aec3kTai3a
    z@8u^$dIHjQ`BWZcDtW6n!41WWz)-hhnbe24ap(z%_WMk?cB$(!e_!eexNnn74Ls{#
    z^BaSnfMm{8j-?_Wm!5#Y>vF`8F6IOhWk{fzzp}Nuap`BECx0ms_~TYCX<gvF&cB|(
    zRD5D6VU^nHjE5*o@gnAu&Yqrt((H=;oQ2=IPDPgqoWwMI(E0TyFbj`43;T7QiY#l!
    zaP0N+>75U#9+LY$ft!5J^D+>rTrhZuF%zg}6y#C7XFzpO_cXmScl<Xz`bR1LM&k?p
    zz$@qeGmwR+@`F~MOp+;Pamoko!Nr(`hlSkv&p@_!6*u!7{^}?gldIc;sEXha#c-D3
    zt4zQv7-ln&3%HSiUW)(Ikj4gzD|4Fyy$j}CG3?=zvHB9VCy+&{lKyn&UkNr*G&w7_
    zdJ24|em#NL5_pqU-*)BB6Ug<Z{;eR!Bq+s+7bK(ZbW}(#(VtJ1Uw`3Kg#ilibAB4B
    k-^iP{CzQ)vQ?~E_01j{9Qc^Ih3IG5A07*qoM6N<$f_UXRJ^%m!
  • 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..460fd9ce372e497afcc26224462132eb27131930
    GIT binary patch
    literal 1501
    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
    DZ12iT
  • 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..1980d4181b67fda352b17f087fe6631d2c795738
    GIT binary patch
    literal 1391
    zcmV-#1(5oQP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004XF*Lt006O%
    z3;baP000FhNkl<ZXa((ATZ~;(82;9oPA5nz6;euQg+yFB8Z+&jL0{aj389g`cvF!`
    z`r@VPWfU)HA`KCZh*VG{c<_Rd;#_79O+ApP&|9<#QFl7ky?y`QbM~yYuWK)R$4ufs
    zS$nU`xBm70>;CTp)FqQR9iQQxy42UJw}-RQ#><(F_)zHLN_4P=;lfOuMM1*?Qx4L>
    zB242QR{A?pv4hKK*b^kZA09qr`NtT;7YSU6j0GjIc2FNL5O@*8S5bv2tfV=cN&3bp
    zPvJh2e<MmeMyefwE^dO4+X5~=E@xb!g$a`XlyRN>Q)uEDN6tnyWu*RXqK$V+^lDAb
    z!;C+qr9qQEV9#I6cXEmuK)XbB2KX4@{QjNI4&^kx4+}BE-w!#MQbpCRfi6zUC9m)&
    z7I1o1NM0<hZVjx)Z=4ptWOkpzJs8EV%yP#9_Yr8}1hzRr(s%H^gVSd_<CBc*Yapbh
    z@FeH`_ApWH(`^lWj>VkqT`t)3V|0!(ZLR@@S4e&xjq_vJN|J6<Xa$atPTC%Bk_Wyc
    z@eOs6mmY94Kx#IziNv}R&5@-%y!LT=$#z<cxEr8woQ$?uuo|MF-&)|DAnpc8bBZ@k
    zJ2}%1RvzVUKnE+h4koOc^sv?n=KylsMq9X(<hL;_Dr{5XORltA6Sygy%k{CEI+g}y
    ziVMEMH8qNF64;!Ka@*(>F2*rDMtwKu=+ukaygJ;#)A#2fQ!aNM8V_tF@nIbp#T9ll
    z{wTNJ*N86MdhHD8VUSm^P3*CaRBk(JM~EE8DjW#NwQvgGI~cAC(#4PW30aGA{FnzV
    zHX!Wv7pY`ro}xrqgFQWl*Ms~XPUXn8*q`x(FHz0NP}sw+8_&Bx<uBqcr^+$(sI(k;
    z;G>AV+)}4`=#?cemPnnj?to#KmdKtCEe^hiSBZ_Eu3GhsXamnhC0*Rj_?jr)k0|`X
    z=u4dE(m_IYl+Sg1pBSWPA8WX@MaT2AS+lY9Db&JwgtQn=n}u4(e!?02EyrI$jW!Q4
    zAIpr|D)7+m;^g?+$d`8I?&Q;V)<t12PyXe4RzIGcLVmDF-z30=yc}**5qWXq<K%%~
    zIj?U|kQYW`kdz5V7ttZQQY2|Wht78Bl&8S0vi3$OkDpHBqVO~q<^Fhfl$J8VB;|@^
    zR{Sz23l4Z74QQR`YxkbU%pqk~7N4O=(lDvl5px74aXp9ptRn51<>EFf?2O7ioE*jb
    z5yjhSk)&bLbWxAF3wgM%NOxwr;+{2tTex?9l8LFIz%;<;T6Yz>8?Azzo}sh@*K(L6
    zYKlkSxQ#<*W-R4#7mJJHsV+L3cuy}<dV+w%Y;cK@XPZzwx|%Z%P8$zW&t}`IrErQ@
    znkF9U*D==s=<B-5V&fa<23Iu}^$gvn0shRb(LzfCa)GvY`@H+qB{AKm0l>k!+O12k
    zX@Dx{Ow>iHjNZ5bZ<VP$7qF%QfEW;7!sY@y3l63MWBj(Mw5za%g8v#~8X#;2`8{9p
    zJeVhvG$3@q*V71ZKG={nKv*~NHlOR~uK}SE+xWVdLB2T8SxFy(KHYIV%c(TZu&19j
    z*WURC2-_zAZy&^^{AwnS&iC`r0AW1BF9>6Jod1G}V|_ov&cq_`XpWFL;dMz&x9JZQ
    zH98#p3%QlBt#q=N(1>ezZN7wQ3CkG5yOiQ+`N3aGL(HpEj<QX|<u(0*Dx2!jDVe4d
    xG7$6nT-!L#kDCkm-E^eD8FJPCe?7+@_y<=F4hiHO6J7uS002ovPDHLkV1mzyq>%ss
  • 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..c56f75fb075a9f90a84bb724ece45b1b385076bf
    GIT binary patch
    literal 1929
    zcmV;42X^?0P)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!00004XF*Lt006O%
    z3;baP000L-Nkl<Zcmd^HYlu}<6#n+TlUhoal|>J;qB0O9P%CFl!4e8BMk~vtlB5WY
    zK#K^<A4x?&G}Pz?6_I9H7HUQH!}QLbaWKIOjiSPu3Z#70#GRyhoW6Ch$GP6eK4<Uq
    zxaZy$oH^(0wbtHieY5x4&vSt!QwPQ&gR^RBVyc#fYs=1{8U2`tYw?Fxt`gIMLMJY*
    z#4=55GF6C0K8vXsz(+{oN~7}HFoAk^pbfLAdykQB6=78+y>`jcta`DNb)cKI=R!|I
    zvbY=$ZYMDFD0>C<dig#J)9{(6t`C7^)u7!t6Fsasz-e^ym#X&fA-@}o2*v_7!wJXb
    z6tx^I3=15|H(3DnU;`bz_?W|E_?#jL1IGc_jgiRV34(J!(?*bgA}Kt=TDShh#9(j9
    z3DOzX1_##_xigXtZLoH<p_Sl#NB%NiBZ}k-j|yuUxmK2?2TVu?K>IO_ev~`c$HpR*
    z!D9q(6Q9n`znA_|*iLYkmL`Yso{T2eg}HQQbeTg6;|b1#1n228o|~ZXGfu&+Y>Itu
    zQkeH-00hjh=+pqNqT_c}<Vm8!Ka8TSn23W_Wdbsi0?=TrInkl<Wr4VuuW&D>U{7&U
    z*w3|(K{DzE&a-fACF9Np3q2#1+5;qG7lnU~tX9~@?)*_B9ZTWb15_}4zi;~sL3tiQ
    z?f0z{Krmi_zQ<6`la?Zj8(43O<6oywAC6LPPLx5p)Q<S(V(qww9r0^4U|ik^h2MF9
    zhu1oSC6m&Z^69!iDfV_T#GPUjq6g?J49A~%icLbsGnH$s!eR186&qIetgxJMXGK|h
    z#0ixR4zti+HYJ7YtAZnCd4uy}Ex-}eq6cUq{vtrLc^#1gEod*TjHSn_WLxx2%q=yG
    zo7nGcc3%zeIm&NFn(?X`pAziB8NOjgrsC1pAlIT6Y~kZZ_to$|obvMt%VOS37dZ^G
    zG82yvAhAo~1vB$Xq*Lq#WndX2#S2iH@hBMC#xd(s;{~XnGw&eeU}g|?8{IgAbPI#@
    z=QOf-1Z`%sEN`SR2`$)Xrf4r6PYudo2Eq9-5IEwagOeGkH*vahnZ3(qn$gxEhaGbk
    z57V&~yiPJRO)H&auwKQw_!ifLzST+wWJU*229s&qS^^{YDCtXrwVKPW>p6+-4ZEQ5
    z0g{cp0nWW-)?HW(3)|+(`KkOq+A0F|3W4gWEM%S<9zZfF?Z)E-Wht*A=B9+Cq0q%Z
    z{s05{$6@3c4nS>~&RX*(4LUyzqe96;;cZ61hd4EnWff}*29PwNHtuE?wq?@RRz#=x
    z8@q<tK^FGy0ou)?d)SLOxFtIOLdjWrygRvEVl`2=8wc%UjLG4>IsiuymWl5BtmzAF
    z;5G+H#x@5D4!C?#FC;6O1MJ<hxY5*PbAU4WE_}9WK?#s=;%I&&+BsD*AhQ^h!OhJ3
    z12!!)Jp+Sc5dDd#i^lWZh%CZ+lK&bchns-c>l_>bWGok5p7BKHn1FwPdhjH{Io)r@
    z371=p9qjylkUxOhStT9Z=Oe%R5GkBolj)Er`2(n*Gjg!^Y9w+n9Ub1MXuScFbAjLi
    zrADMa?^9{s0QGP;!QmXa5y{~{zJrT!8uA7R=7TFuc}Zgp<=CiMXOteG!g$A5wAU4q
    zaNZ1^eR_a8c@o2G-&~h_J@6c!7txR&pgvrp(QOo#b`47pkdq%hHwqBd{1{!0A?bR6
    z6wc5oHv~_%l4QBK3h4oIcx3MXKu7Z@{VRIv1yInv^ooThE-}sRhAN~7C~bY{sY-E)
    zOwQ@{)ARrhM7wL52)LBqM?F9n;2Sy-%X#D)g7vkoY&}31LCz(Aq06A|d9rb(Aw56^
    zMXT)+O_@nz^|O=Tsx!zNpeDS_73kOwP3nw|fVa)-)V?=B&G?aqX;F^A@OZLJ<2kQ_
    zyaAFN(s<S@qq^fOj-Q+HiI?5}0BX*E$G*-hv%2D^_-TZX6SMvR63>V6kOFY1u0W_}
    ztm5`ni@x`ARs91r83#DEUEl|GH}gc^6~}fXS$lkve}E*zsrfcrv+pK+`lJ&(z<+S7
    z-(6M7$ZiWcgC*2m!_`JReVq$Y@#IUzCjM~26#QUPguR11a5oEjl~?lj%M^dHVF<yw
    z8o!!=BeG^qtT^{+c!SW~#w1^d0E$&(eOB1T@}}B=BX-)?AlJ(*#&A0OJYSP`Bqqmy
    z|8n+LtLdfnggZDugFwxp8Eg1z^9{V4OIY`<tldipPFK(j!vjbx>BOo00)82v7BPUI
    z8`L;seZ?~yDW1SDe4A#hUP&QbfZP(~lW+N%EaZRZXC}e2k9BUI)$Z~^Fc=S0c$vV+
    z&*y|n(EwCz;!cd^=iqa>9w0lka-CDmws`JmOxa7l4uZ0s4SEX->sA(7d8<SZP^k?&
    z=uQEsNpw_x4`>uG*<Nz*a+u%<Yu#b;<#X{v`8)Ef3IfV5)|9^~6AS$Zi6U5Mz6uX|
    P00000NkvXXu0mjf_nVt-
  • 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..a6828199bbe672482074fc18542880a54a9e7d2b
    GIT binary patch
    literal 2313
    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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..83552d83e7a556266238b3d71506746ad6edb02b
    GIT binary patch
    literal 2176
    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
    Cs|KF{
  • 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..3222eaf2df95d6773257665674ec6ac164945de1
    GIT binary patch
    literal 2581
    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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..d2d57df2c3bc49bf3c0751e369c45c8b57c01493
    GIT binary patch
    literal 2984
    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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..1e352adc4439da649af405720d45fe90ac538fa3
    GIT binary patch
    literal 2880
    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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, {}, {})) {