Show title if secure site

- Show site title if the the site is secure
- Don't hide title bar if site certificate has issues

Change-Id: Ie10d317b76d449795806b8dbd164355c3ed98b6e
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 026e661..d1c2a11 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -702,6 +702,7 @@
     private void updateTabSecurityState(Tab t) {
         if (t != null && t.inForeground()) {
             mNavigationBar.setSecurityState(t.getSecurityState());
+            setUrlTitle(t);
         }
     }
 
@@ -712,7 +713,7 @@
             title = url;
         }
         if (tab.inForeground()) {
-            mNavigationBar.setDisplayTitle(url);
+            mNavigationBar.setDisplayTitle(title, url);
         }
     }
 
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index 486c202..9087991 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -58,7 +58,6 @@
 import java.net.URL;
 
 import org.codeaurora.net.NetworkServices;
-import org.codeaurora.swe.Engine;
 import org.codeaurora.swe.WebRefiner;
 import org.codeaurora.swe.WebView;
 import org.codeaurora.swe.util.ColorUtils;
@@ -93,6 +92,8 @@
     private static final int WEBREFINER_COUNTER_MSG_DELAY = 3000;
     private Handler mHandler;
 
+    protected int mTrustLevel = SiteTileView.TRUST_UNKNOWN;
+
     private static final String noSitePrefs[] = {
             "browser://",
             "about:",
@@ -165,21 +166,28 @@
     public void setSecurityState(Tab.SecurityState securityState) {
         switch (securityState) {
             case SECURITY_STATE_SECURE:
-                mFaviconTile.setTrustLevel(SiteTileView.TRUST_TRUSTED);
+                mTrustLevel = SiteTileView.TRUST_TRUSTED;
                 mFaviconTile.setBadgeHasCertIssues(false);
                 break;
             case SECURITY_STATE_MIXED:
-                mFaviconTile.setTrustLevel(SiteTileView.TRUST_UNTRUSTED);
+                mTrustLevel = SiteTileView.TRUST_UNTRUSTED;
                 mFaviconTile.setBadgeHasCertIssues(true);
+                mTitleBar.showTopControls(false);
                 break;
             case SECURITY_STATE_BAD_CERTIFICATE:
-                mFaviconTile.setTrustLevel(SiteTileView.TRUST_AVOID);
+                mTrustLevel = SiteTileView.TRUST_AVOID;
                 mFaviconTile.setBadgeHasCertIssues(true);
+                mTitleBar.showTopControls(false);
                 break;
             case SECURITY_STATE_NOT_SECURE:
             default:
-                mFaviconTile.setTrustLevel(SiteTileView.TRUST_UNKNOWN);
+                mTrustLevel = SiteTileView.TRUST_UNKNOWN;
         }
+        mFaviconTile.setTrustLevel(mTrustLevel);
+    }
+
+    public int getTrustLevel() {
+        return mTrustLevel;
     }
 
     public static int adjustColor(int color, float hueMultiplier,
@@ -437,7 +445,7 @@
             if (mUrlInput.getText().length() == 0) {
                 Tab currentTab = mUiController.getTabControl().getCurrentTab();
                 if (currentTab != null) {
-                    setDisplayTitle(currentTab.getUrl());
+                    setDisplayTitle(currentTab.getTitle(), currentTab.getUrl());
                 }
             }
         }
@@ -458,10 +466,18 @@
         }
     }
 
-    void setDisplayTitle(String title) {
+    void setDisplayTitle(String title, String url) {
         if (!isEditingUrl()) {
-            if (!title.equals(mUrlInput.getText().toString())) {
-                mUrlInput.setText(title, false);
+            if (!TextUtils.isEmpty(title)) {
+                if (mTrustLevel == SiteTileView.TRUST_TRUSTED) {
+                    if (!title.equals(mUrlInput.getText().toString())) {
+                        mUrlInput.setText(title, false);
+                    }
+                    return;
+                }
+            }
+            if (!url.equals(mUrlInput.getText().toString())) {
+                mUrlInput.setText(url, false);
             }
         }
     }
@@ -499,21 +515,21 @@
             // logic in UrlHandler for other schemas
             if (url != null && t != null &&  url.startsWith("javascript:")) {
                 mUiController.loadUrl(t, url);
-                setDisplayTitle(text);
+                setDisplayTitle(null, text);
                 return;
             }
 
             // add for carrier wap2estore feature
             if (url != null && t != null && wap2estore && isEstoreTypeUrl(url)) {
                 if (handleEstoreTypeUrl(url)) {
-                    setDisplayTitle(text);
+                    setDisplayTitle(null, text);
                     return;
                 }
             }
             // add for rtsp scheme feature
             if (url != null && t != null && isRtspTypeUrl(url)) {
                 if (handleRtspTypeUrl(url)) {
-                    setDisplayTitle(text);
+                    setDisplayTitle(null, text);
                     return;
                 }
             }
@@ -537,7 +553,7 @@
             i.putExtra("source", appData);
         }
         mUiController.handleNewIntent(i);
-        setDisplayTitle(text);
+        setDisplayTitle(null, text);
     }
 
     private boolean isMakeCallTypeUrl(String url) {
@@ -648,7 +664,7 @@
             public void run() {
                 clearFocus();
                 if (currentTab != null) {
-                    setDisplayTitle(currentTab.getUrl());
+                    setDisplayTitle(currentTab.getTitle(), currentTab.getUrl());
                 }
             }
         });
@@ -757,6 +773,7 @@
                             mFaviconTile.setVisibility(View.GONE);
                             mMagnify.setVisibility(View.VISIBLE);
                         }
+                        setDisplayTitle(currentTab.getTitle(), currentTab.getUrl());
                     }
                     mUiController.setWindowDimming(0.0f);
                 }
@@ -769,6 +786,13 @@
                 mMore.setVisibility(View.GONE);
                 if (mUiController != null) {
                     mUiController.setWindowDimming(0.75f);
+                    if (mTrustLevel == SiteTileView.TRUST_TRUSTED) {
+                        Tab currentTab = mUiController.getCurrentTab();
+                        if (currentTab != null) {
+                            mUrlInput.setText(currentTab.getUrl(), false);
+                            mUrlInput.selectAll();
+                        }
+                    }
                 }
                 break;
             case STATE_EDITED:
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 23df7fc..5fa093b 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -93,22 +93,21 @@
     /**
      * Update the text displayed in the title bar.
      * @param title String to display.  If null, the new tab string will be
-     *      shown.
+     * @param url
      */
     @Override
-    void setDisplayTitle(String title) {
+    void setDisplayTitle(String title, String url) {
         mUrlInput.setTag(title);
         if (!isEditingUrl()) {
-           // add for carrier requirement - show title from native instead of url
-            Tab currentTab = mUiController.getTabControl().getCurrentTab();
-            if (BrowserConfig.getInstance(getContext())
-                    .hasFeature(BrowserConfig.Feature.TITLE_IN_URL_BAR) &&
-                    currentTab != null && currentTab.getTitle() != null) {
-                mUrlInput.setText(currentTab.getTitle(), false);
-            } else if (title == null) {
+            // add for carrier requirement - show title from native instead of url
+            if ((BrowserConfig.getInstance(getContext())
+                    .hasFeature(BrowserConfig.Feature.TITLE_IN_URL_BAR) ||
+                    mTrustLevel == SiteTileView.TRUST_TRUSTED) && title != null) {
+                mUrlInput.setText(title, false);
+            } else if (url == null) {
                 mUrlInput.setText(R.string.new_tab);
             } else {
-                mUrlInput.setText(UrlUtils.stripUrl(title), false);
+                mUrlInput.setText(UrlUtils.stripUrl(url), false);
             }
             mUrlInput.setSelection(0);
         }
@@ -127,7 +126,7 @@
     public void onFocusChange(View view, boolean hasFocus) {
         if (view == mUrlInput && !hasFocus) {
             Tab currentTab = mUiController.getTabControl().getCurrentTab();
-            setDisplayTitle(currentTab.getUrl());
+            setDisplayTitle(currentTab.getTitle(), currentTab.getUrl());
         }
         super.onFocusChange(view, hasFocus);
     }
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 93f655d..fd19a41 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -187,7 +187,8 @@
     }
 
     protected void enableTopControls(boolean animate) {
-        if (mIsFixedTitleBar)
+        if (mIsFixedTitleBar || mNavBar.getTrustLevel() == SiteTileView.TRUST_AVOID
+                || mNavBar.getTrustLevel() == SiteTileView.TRUST_UNTRUSTED)
             return;
         Tab tab = mBaseUi.getActiveTab();
         WebView view = tab != null ? tab.getWebView() : null;