From 2a50dd675149989cf1928edc3ae4a1eaabe1576e Mon Sep 17 00:00:00 2001 From: Igor Oliveira 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-hdpi/ic_onion.png | Bin 0 -> 807 bytes .../res/drawable-hdpi/ic_onion_disabled.png | Bin 0 -> 975 bytes .../main/res/drawable-hdpi/ic_onion_lock.png | Bin 0 -> 932 bytes .../src/main/res/drawable-xhdpi/ic_onion.png | Bin 0 -> 1015 bytes .../res/drawable-xhdpi/ic_onion_disabled.png | Bin 0 -> 1260 bytes .../main/res/drawable-xhdpi/ic_onion_lock.png | Bin 0 -> 1275 bytes .../src/main/res/drawable-xxhdpi/ic_onion.png | Bin 0 -> 1592 bytes .../res/drawable-xxhdpi/ic_onion_disabled.png | Bin 0 -> 1892 bytes .../res/drawable-xxhdpi/ic_onion_lock.png | Bin 0 -> 1899 bytes .../main/res/drawable-xxxhdpi/ic_onion.png | Bin 0 -> 2099 bytes .../drawable-xxxhdpi/ic_onion_disabled.png | Bin 0 -> 2526 bytes .../res/drawable-xxxhdpi/ic_onion_lock.png | Bin 0 -> 2568 bytes .../res/drawable/security_mode_icon_nm.xml | 9 ++++++++ .../res/drawable/security_mode_icon_pm.xml | 9 ++++++++ .../main/res/drawable/site_security_icon.xml | 10 ++++++++- .../java/org/mozilla/gecko/SiteIdentity.java | 14 ++++++++++++ .../gecko/toolbar/SecurityModeUtil.java | 21 +++++++++++++----- .../gecko/toolbar/SiteIdentityPopup.java | 17 +++++++++----- mobile/android/chrome/content/browser.js | 21 +++++++++++++++++- 19 files changed, 88 insertions(+), 13 deletions(-) create mode 100644 mobile/android/app/src/main/res/drawable-hdpi/ic_onion.png create mode 100644 mobile/android/app/src/main/res/drawable-hdpi/ic_onion_disabled.png create mode 100644 mobile/android/app/src/main/res/drawable-hdpi/ic_onion_lock.png create mode 100755 mobile/android/app/src/main/res/drawable-xhdpi/ic_onion.png create mode 100755 mobile/android/app/src/main/res/drawable-xhdpi/ic_onion_disabled.png create mode 100755 mobile/android/app/src/main/res/drawable-xhdpi/ic_onion_lock.png create mode 100755 mobile/android/app/src/main/res/drawable-xxhdpi/ic_onion.png create mode 100755 mobile/android/app/src/main/res/drawable-xxhdpi/ic_onion_disabled.png create mode 100755 mobile/android/app/src/main/res/drawable-xxhdpi/ic_onion_lock.png create mode 100755 mobile/android/app/src/main/res/drawable-xxxhdpi/ic_onion.png create mode 100755 mobile/android/app/src/main/res/drawable-xxxhdpi/ic_onion_disabled.png create mode 100755 mobile/android/app/src/main/res/drawable-xxxhdpi/ic_onion_lock.png diff --git a/mobile/android/app/src/main/res/drawable-hdpi/ic_onion.png b/mobile/android/app/src/main/res/drawable-hdpi/ic_onion.png new file mode 100644 index 0000000000000000000000000000000000000000..1a61d982752b1b6df28dfcb085999e363805494b GIT binary patch literal 807 zcmV+?1K9kDP)*+}YhK8JOL@ z=lRXKXU@z53&*^!fJUy~>-XvnQ1vfjJqpNI*XD<}rEK>OZLCcfe$VMA2=@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);&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 z5RnUuF|9LL}6_@`A1@gS6Fq^>5I{gE^yh|na~Kj^_u9VCp< zu&`U5ymiaN(xD(abPN()7eRtd$WDt;Sd?p7bZXr$f!pfNyuLr-t_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`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=+<908vVhFbxpXi6vjqao6)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$KS~Bqo0hlro>jLHvV0va}XIF)mU7rTD+FD;H{vC)w z7cfisnCk${g3!v;rvjZ{XqK;RDfV^el9$09Q$R$V3eGx7ym;a3By!NOL$c(|{;C xa;C1HC-o*)rOx~2A~}mYBH16jpMgAO;2*A-4l8@4EYSb}002ovPDHLkV1i{q&V&E} literal 0 HcmV?d00001 diff --git a/mobile/android/app/src/main/res/drawable-hdpi/ic_onion_lock.png b/mobile/android/app/src/main/res/drawable-hdpi/ic_onion_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f60fea5b28d405b3f0c748479f00002f829899 GIT binary patch literal 932 zcmV;V16%xwP)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`51sQyQ3#{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;<9@|A?=UIDM%QM6G7GN=- zDW*l>!WP`AV`^1!>l?l-^3*wALiXYdUn(7W&Jyrn^}ru1P^z7zLsEMH0000=6!GW{|Abx7=dC0iV-kIAc88iV$^_o?HDqk%peFD0uQ&K@H6RC6y*rxI30gaSu=ANmf%8CZdnLg>f5Quah?vA zGgl=HBkYOaIKuKs)`7%spdS0|Kr^*f=3j^ZqL@!-AO1z`Kmf-O$BDESo?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;{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_nadw65Ql@fSi0&*_bZ!b#m%7iN= zaMc7<0C_Xts(v!z$_RvTn?N5;V2%#SHK=(AL(rtfi&J%acRqh;73c(HSq>zV$qS%I)51K6f(4LBB<=#w#?H>pIK@T31bCew19Yr2U}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(gHkYolj;;HfW57I9Nk(+SvW)&Wl{XQpq)l5!>H*s7dya|>2{ z+Nkweb5mKU5Af7bUW=ISJoq7!^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!;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%}}$) zzAE+ 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%0w@MD8kuJr@TSGf>PxF$4ca2L1tu WcAn$1{7V)90000E^C*fM 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 lA&?=EA&?=EA+RSS@E^W7Vq`4=ZTU((I3qi znI!RRk|b=8vTniY=)|iSifui{>nX4WXY~|pBkaT=pcRAg57rZ)Ew~sRB>^RAn{W?* z>k(jbNof@#*DB-@Zx%ao5_V$^LR^j-%tEOpp&?8o{1P@TV}|$-K`vgT)w!XNsn^7?5lNnlO(b&g#ae z3up5F@9t;0*@{!>^8mqrh;h$3DlGG`k~RO40{)SBC6|C^T*5y4>7!8U!WcgP*zMPZ z>DZ4K__GlK4#w*q&S}FZ}sm|ahrkdpv_@YAc2pE9& zQn6?JcGPmvZNQ&pq_vtPc?671&tP_yh{_z)SFlM}Vqv93cY7L|;^tU@d)ZDuVAt_J z#&XLokSsG^Xh)7A0mGtkRjsdEFWcE4Ju1tR-vUOa-D!HN>e8VOAe!0GY>We{DTy7iZN%Of{UK57^@em*;OG`r2Vtr8jjU|}HaP{pFcRVx{`iq=s2-ryTzz%#ygf7xV$#Pz6IX29&y_0I6fJU6hnzVs6|3b@v z>1S^^RUL?l7*UobMz7?tI|j(yUV8l`f-msNBw;_-4Pk{_;yqAdj{p%mq%}f_3wkI& z2|-i1VpwKNPJ&Mr%yl==8}LqWjWo*P8MrTM?MHtl1P_;%xq!4 zl5B2f6XH=#!E^~|#tjs1n5KZvTqg$>JiXR3w)^^)!~NIdT)q^s(OG0y0Zff<*el)+v*2#wMPDW1ca!}hDSr2X!97Z zQJfwDC;IFsAMHTrY#}`Y3_pjcCTCnDAgnS1pkqj&*#d%UY5>$##gs*lfRNTb)#X(5 z)g!>ffAUDA{D(UF>Jb2Z8z}&B7gnRAuO0y*zK$D{NXs`m`sxuNhKAMSIynSy)KFKC zfQGcOYwRabX@GLvJjBvN>EI7N0>p|;&U2^^_pX+jdIX3>wRl-eFlX~IJo08BO)Qn1 zE&*~RjKRlBvbmbgQcX)aT>=EMT0G9b){RUo4%KYr|E(uXLC zkGn4O&G2$onn~I-ozUze2I?3(xlHN}K)F z(|ZgF8I&7b*1f@ROxMb8rj>L0b(|FJC@UWeiQFR~S4pwK{5*YnVm$}$5eynapTTKT zve(QBEBoockN$geu5GO4o4GmI%Gu2Cx!L-AkAO$OBj6G62zUfM0v-X6fJeY1;1Tc$ dcm(1?;6Fr}fijo@cyj;%002ovPDHLkV1n{v^gI9n literal 0 HcmV?d00001 diff --git a/mobile/android/app/src/main/res/drawable-xxxhdpi/ic_onion_disabled.png b/mobile/android/app/src/main/res/drawable-xxxhdpi/ic_onion_disabled.png new file mode 100755 index 0000000000000000000000000000000000000000..aec29bf6238bb6e831f0ae1c0c24d13b4b5726a0 GIT binary patch literal 2526 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 e1RMgzAn-q_8r7ndLUdaI0000 + + + diff --git a/mobile/android/app/src/main/res/drawable/security_mode_icon_pm.xml b/mobile/android/app/src/main/res/drawable/security_mode_icon_pm.xml index edbd269040d1a..be47d7fe081f4 100644 --- a/mobile/android/app/src/main/res/drawable/security_mode_icon_pm.xml +++ b/mobile/android/app/src/main/res/drawable/security_mode_icon_pm.xml @@ -28,5 +28,14 @@ + + + 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 ac8624f861ad6..f5f4c7775110f 100644 --- a/mobile/android/app/src/main/res/drawable/site_security_icon.xml +++ b/mobile/android/app/src/main/res/drawable/site_security_icon.xml @@ -28,5 +28,13 @@ - + + + diff --git a/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java b/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java index 79262586b8fe0..0a1b92b75f966 100644 --- a/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java +++ b/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java @@ -25,6 +25,8 @@ public class SiteIdentity { private String mCountry; private String mVerifier; private String mOrigin; + private boolean mIsOnionHost; + private boolean mHasCert; public enum SecurityMode { UNKNOWN, @@ -59,6 +61,8 @@ public class SiteIdentity { mCountry = null; mVerifier = null; mSecure = false; + mIsOnionHost = false; + mHasCert = false; } public void reset() { @@ -108,6 +112,8 @@ public class SiteIdentity { mVerifier = identityData.getString("verifier"); mSecure = identityData.getBoolean("secure"); mSecurityException = identityData.getBoolean("securityException"); + mIsOnionHost = identityData.getBoolean("isOnionHost"); + mHasCert = identityData.getBoolean("hasCert"); } /* package */ void updateTrackingMode(final String trackingEvent) { @@ -154,6 +160,14 @@ public class SiteIdentity { return mSecure; } + public boolean isOnionHost() { + return mIsOnionHost; + } + + public boolean hasCert() { + return mHasCert; + } + public MixedMode getMixedModeActive() { return mMixedModeActive; } 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 ceb33b8e3acb1..10bc83c279a11 100644 --- a/mobile/android/base/java/org/mozilla/gecko/toolbar/SecurityModeUtil.java +++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/SecurityModeUtil.java @@ -35,6 +35,9 @@ public class SecurityModeUtil { LOCK_SECURE(1), LOCK_WARNING(-1), // not used for now. reserve for MixedDisplayContent icon, if any. LOCK_INSECURE(3), + ONION(7), + ONION_ACTIVATE(8), + ONION_DISABLED(9), WARNING(2), TRACKING_CONTENT_BLOCKED(4), TRACKING_CONTENT_LOADED(5); @@ -100,6 +103,8 @@ public class SecurityModeUtil { final MixedMode displayMixedMode = identity.getMixedModeDisplay(); final TrackingMode trackingMode = identity.getTrackingMode(); final boolean securityException = identity.isSecurityException(); + final boolean isOnionHost = identity.isOnionHost(); + final boolean hasCert = identity.hasCert(); if (securityException) { return IconType.WARNING; @@ -108,9 +113,9 @@ public class SecurityModeUtil { } else if (trackingMode == TrackingMode.TRACKING_CONTENT_BLOCKED) { return IconType.TRACKING_CONTENT_BLOCKED; } else if (activeMixedMode == MixedMode.LOADED) { - return IconType.LOCK_INSECURE; + return isOnionHost ? IconType.ONION_DISABLED : IconType.LOCK_INSECURE; } else if (displayMixedMode == MixedMode.LOADED) { - return IconType.WARNING; + return isOnionHost ? IconType.ONION_DISABLED : IconType.WARNING; } // Chrome-UI checking is after tracking/mixed-content, even for about: pages, as they @@ -119,9 +124,15 @@ public class SecurityModeUtil { return IconType.DEFAULT; } - return securityModeMap.containsKey(securityMode) - ? securityModeMap.get(securityMode) - : IconType.UNKNOWN; + if (securityMode == SecurityMode.UNKNOWN) { + return isOnionHost ? IconType.ONION : IconType.UNKNOWN; + } else if (securityMode == SecurityMode.IDENTIFIED) { + return isOnionHost ? (hasCert ? IconType.ONION_ACTIVATE : IconType.ONION) : IconType.LOCK_SECURE; + } else if (securityMode == SecurityMode.VERIFIED) { + return isOnionHost ? IconType.ONION_ACTIVATE : IconType.LOCK_SECURE; + } else { + return IconType.UNKNOWN; + } } /** 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 831f69f2bf096..df67f0a9b9edb 100644 --- a/mobile/android/base/java/org/mozilla/gecko/toolbar/SiteIdentityPopup.java +++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/SiteIdentityPopup.java @@ -144,8 +144,9 @@ public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe init(); } - final boolean isIdentityKnown = (siteIdentity.getSecurityMode() == SecurityMode.IDENTIFIED || - siteIdentity.getSecurityMode() == SecurityMode.VERIFIED); + final boolean isIdentityKnown = ((siteIdentity.getSecurityMode() == SecurityMode.IDENTIFIED || + siteIdentity.getSecurityMode() == SecurityMode.VERIFIED) && + siteIdentity.hasCert()); updateConnectionState(siteIdentity); toggleIdentityKnownContainerVisibility(isIdentityKnown); @@ -322,7 +323,8 @@ public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe } else if (!siteIdentity.isSecure()) { if (siteIdentity.getMixedModeActive() == MixedMode.LOADED) { // Active Mixed Content loaded because user has disabled blocking. - mIcon.setImageResource(R.drawable.ic_lock_disabled); + int resId = siteIdentity.isOnionHost() ? R.drawable.ic_onion_disabled : R.drawable.ic_lock_disabled; + mIcon.setImageResource(resId); clearSecurityStateIcon(); mMixedContentActivity.setVisibility(View.VISIBLE); mMixedContentActivity.setText(R.string.mixed_content_protection_disabled); @@ -330,7 +332,8 @@ public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe mLink.setVisibility(View.VISIBLE); } else if (siteIdentity.getMixedModeDisplay() == MixedMode.LOADED) { // Passive Mixed Content loaded. - mIcon.setImageResource(R.drawable.ic_lock_inactive); + int resId = siteIdentity.isOnionHost() ? R.drawable.ic_onion_disabled : R.drawable.ic_lock_inactive; + mIcon.setImageResource(resId); setSecurityStateIcon(R.drawable.ic_warning_major, 1); mMixedContentActivity.setVisibility(View.VISIBLE); if (siteIdentity.getMixedModeActive() == MixedMode.BLOCKED) { @@ -342,7 +345,8 @@ public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe } else { // Unencrypted connection with no mixed content. - mIcon.setImageResource(R.drawable.globe_light); + int resId = siteIdentity.isOnionHost() ? R.drawable.ic_onion : R.drawable.globe_light; + mIcon.setImageResource(resId); clearSecurityStateIcon(); mMixedContentActivity.setVisibility(View.GONE); @@ -361,7 +365,8 @@ public class SiteIdentityPopup extends AnchoredPopup implements BundleEventListe } else { // Connection is secure. - mIcon.setImageResource(R.drawable.ic_lock); + int resId = siteIdentity.isOnionHost() ? (siteIdentity.hasCert() ? R.drawable.ic_onion_lock : R.drawable.ic_onion) : R.drawable.ic_lock; + mIcon.setImageResource(resId); setSecurityStateIcon(R.drawable.img_check, 2); mSecurityState.setTextColor(ContextCompat.getColor(mContext, R.color.affirmative_green)); diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 5af7e5d28c69f..580a8ed2d98cd 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -6784,6 +6784,12 @@ var IdentityHandler = { */ getIdentityData: function() { let result = {}; + + // Even if the connection is secure, it may not have a certificate + if (!this._lastSecInfo) { + return result; + } + let cert = this._lastSecInfo.serverCert; // Human readable name of Subject @@ -6810,6 +6816,17 @@ var IdentityHandler = { return result; }, + isOnionHost: function isOnionHost() { + try { + return this._uri.host.toLowerCase().endsWith(".onion"); + } catch (e) { + // If something goes wrong (e.g. host is an exception + // because this is an about: page) just fall back + // on false. + return false; + } + }, + /** * Determines the identity mode corresponding to the icon we show in the urlbar. */ @@ -6935,6 +6952,8 @@ var IdentityHandler = { }; result.host = this.getEffectiveHost(); + result.isOnionHost = this.isOnionHost(); + result.hasCert = !!this._lastSecInfo; // Don't show identity data for pages with an unknown identity or if any // mixed content is loaded (mixed display content is loaded by default). @@ -7004,7 +7023,7 @@ var IdentityHandler = { // Updating the tooltip value in those cases isn't critical. // FIXME: Fixing bug 646690 would probably makes this check unnecessary if ( - this._lastLocation.hostname && + this._lastLocation.hostname && iData.cert && this._overrideService.hasMatchingOverride( this._lastLocation.hostname, this._lastLocation.port || 443, -- GitLab