diff --git a/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java b/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java index 540cae82ce48..6f779590de87 100644 --- a/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java +++ b/mobile/android/base/java/org/mozilla/gecko/SiteIdentity.java @@ -20,6 +20,7 @@ public class SiteIdentity { private String mHost; private String mOwner; private String mSupplemental; + private String mCountry; private String mVerifier; private String mOrigin; @@ -133,6 +134,7 @@ public class SiteIdentity { mHost = null; mOwner = null; mSupplemental = null; + mCountry = null; mVerifier = null; mSecure = false; mLoginInsecure = false; @@ -184,6 +186,7 @@ public class SiteIdentity { mHost = identityData.optString("host", null); mOwner = identityData.optString("owner", null); mSupplemental = identityData.optString("supplemental", null); + mCountry = identityData.optString("country", null); mVerifier = identityData.optString("verifier", null); mSecure = identityData.optBoolean("secure", false); } catch (Exception e) { @@ -210,10 +213,22 @@ public class SiteIdentity { return mOwner; } + public boolean hasOwner() { + return !TextUtils.isEmpty(mOwner); + } + public String getSupplemental() { return mSupplemental; } + public String getCountry() { + return mCountry; + } + + public boolean hasCountry() { + return !TextUtils.isEmpty(mCountry); + } + public String getVerifier() { return mVerifier; } diff --git a/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarDisplayLayout.java b/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarDisplayLayout.java index 236987e649b3..2ba090550b45 100644 --- a/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarDisplayLayout.java +++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarDisplayLayout.java @@ -30,7 +30,9 @@ import android.content.Context; import android.os.SystemClock; import android.support.annotation.Nullable; import android.support.annotation.NonNull; +import android.support.v4.content.ContextCompat; import android.text.Spannable; +import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.style.ForegroundColorSpan; @@ -267,7 +269,23 @@ public class ToolbarDisplayLayout extends ThemedLinearLayout { // will read the content description to obtain the full URL for performing assertions. setContentDescription(strippedURL); - if (!TextUtils.isEmpty(baseDomain)) { + final SiteIdentity siteIdentity = tab.getSiteIdentity(); + if (siteIdentity.hasOwner()) { + final String title; + + if (siteIdentity.hasCountry()) { + title = String.format("%s (%s)", siteIdentity.getOwner(), siteIdentity.getCountry()); + } else { + title = siteIdentity.getOwner(); + } + + final int color = ContextCompat.getColor(getContext(), R.color.affirmative_green); + + final SpannableString spannable = new SpannableString(title); + spannable.setSpan(new ForegroundColorSpan(color), 0, title.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + + setTitle(spannable); + } else if (!TextUtils.isEmpty(baseDomain)) { setTitle(baseDomain); } else { setTitle(strippedURL); diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 0311d4b74f03..58011cbb3048 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -6376,14 +6376,18 @@ var IdentityHandler = { // Build an appropriate supplemental block out of whatever location data we have let supplemental = ""; - if (iData.city) + if (iData.city) { supplemental += iData.city + "\n"; - if (iData.state && iData.country) + } + if (iData.state && iData.country) { supplemental += Strings.browser.formatStringFromName("identity.identified.state_and_country", [iData.state, iData.country], 2); - else if (iData.state) // State only + result.country = iData.country; + } else if (iData.state) { // State only supplemental += iData.state; - else if (iData.country) // Country only + } else if (iData.country) { // Country only supplemental += iData.country; + result.country = iData.country; + } result.supplemental = supplemental; return result;