Merge "Changes Controller to use Tab.getUrl in more places" into honeycomb
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 50e7813..23594f2 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -733,7 +733,7 @@
     // WebViewController
 
     @Override
-    public void onPageStarted(Tab tab, WebView view, String url, Bitmap favicon) {
+    public void onPageStarted(Tab tab, WebView view, Bitmap favicon) {
 
         // We've started to load a new page. If there was a pending message
         // to save a screenshot then we will now take the new page and save
@@ -764,6 +764,7 @@
 
         mUi.onTabDataChanged(tab);
 
+        String url = tab.getUrl();
         // update the bookmark database for favicon
         maybeUpdateFavicon(tab, null, url, favicon);
 
@@ -777,9 +778,10 @@
     }
 
     @Override
-    public void onPageFinished(Tab tab, String url) {
+    public void onPageFinished(Tab tab) {
         mUi.onTabDataChanged(tab);
-        if (!tab.isPrivateBrowsingEnabled()) {
+        if (!tab.isPrivateBrowsingEnabled()
+                && !TextUtils.isEmpty(tab.getUrl())) {
             if (tab.inForeground() && !didUserStopLoading()
                     || !tab.inForeground()) {
                 // Only update the bookmark screenshot if the user did not
@@ -799,7 +801,7 @@
         }
         // Performance probe
         if (false) {
-            Performance.onPageFinished(url);
+            Performance.onPageFinished(tab.getUrl());
          }
 
         Performance.tracePageFinished();
@@ -843,7 +845,7 @@
     public void onReceivedTitle(Tab tab, final String title) {
         mUi.onTabDataChanged(tab);
         final String pageUrl = tab.getUrl();
-        if (pageUrl == null || pageUrl.length()
+        if (TextUtils.isEmpty(pageUrl) || pageUrl.length()
                 >= SQLiteDatabase.SQLITE_MAX_LIKE_PATTERN_LENGTH) {
             return;
         }
@@ -887,12 +889,13 @@
     }
 
     @Override
-    public void doUpdateVisitedHistory(Tab tab, String url,
-            boolean isReload) {
+    public void doUpdateVisitedHistory(Tab tab, boolean isReload) {
         // Don't save anything in private browsing mode
         if (tab.isPrivateBrowsingEnabled()) return;
+        String url = tab.getUrl();
 
-        if (url.regionMatches(true, 0, "about:", 0, 6)) {
+        if (TextUtils.isEmpty(url)
+                || url.regionMatches(true, 0, "about:", 0, 6)) {
             return;
         }
         mDataController.updateVisitedHistory(url);
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 5ef7564..d70b0ef 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -16,7 +16,6 @@
 
 package com.android.browser;
 
-import com.android.browser.homepages.HomeProvider;
 import com.android.common.speech.LoggingEvents;
 
 import android.app.Activity;
@@ -533,7 +532,7 @@
             }
 
             // finally update the UI in the activity if it is in the foreground
-            mWebViewController.onPageStarted(Tab.this, view, url, favicon);
+            mWebViewController.onPageStarted(Tab.this, view, favicon);
 
             updateBookmarkedStatus();
         }
@@ -557,7 +556,7 @@
                 // but before a provisional load occurred
                 mCurrentState.mLockIcon = LockIcon.LOCK_ICON_UNSECURE;
             }
-            mWebViewController.onPageFinished(Tab.this, url);
+            mWebViewController.onPageFinished(Tab.this);
         }
 
         // return true if want to hijack the url to let another app to handle it
@@ -688,7 +687,7 @@
         @Override
         public void doUpdateVisitedHistory(WebView view, String url,
                 boolean isReload) {
-            mWebViewController.doUpdateVisitedHistory(Tab.this, url, isReload);
+            mWebViewController.doUpdateVisitedHistory(Tab.this, isReload);
         }
 
         /**
@@ -1569,10 +1568,7 @@
     }
 
     String getUrl() {
-        if (HomeProvider.MOST_VISITED.equals(mCurrentState.mUrl)) {
-            return "";
-        }
-        return mCurrentState.mUrl;
+        return UrlUtils.filteredUrl(mCurrentState.mUrl);
     }
 
     /**
diff --git a/src/com/android/browser/UrlUtils.java b/src/com/android/browser/UrlUtils.java
index 2df0a61..72ac37b 100644
--- a/src/com/android/browser/UrlUtils.java
+++ b/src/com/android/browser/UrlUtils.java
@@ -16,6 +16,8 @@
 
 package com.android.browser;
 
+import com.android.browser.homepages.HomeProvider;
+
 import android.net.Uri;
 import android.util.Patterns;
 import android.webkit.URLUtil;
@@ -145,4 +147,15 @@
         return inUrl;
     }
 
+    // Returns the filtered URL. Cannot return null, but can return an empty string
+    /* package */ static String filteredUrl(String inUrl) {
+        if (inUrl == null) {
+            return "";
+        }
+        if (inUrl.startsWith(HomeProvider.MOST_VISITED)) {
+            return "";
+        }
+        return inUrl;
+    }
+
 }
diff --git a/src/com/android/browser/WebViewController.java b/src/com/android/browser/WebViewController.java
index a187af0..813b63b 100644
--- a/src/com/android/browser/WebViewController.java
+++ b/src/com/android/browser/WebViewController.java
@@ -46,9 +46,9 @@
 
     void createSubWindow(Tab tab);
 
-    void onPageStarted(Tab tab, WebView view, String url, Bitmap favicon);
+    void onPageStarted(Tab tab, WebView view, Bitmap favicon);
 
-    void onPageFinished(Tab tab, String url);
+    void onPageFinished(Tab tab);
 
     void onProgressChanged(Tab tab);
 
@@ -62,7 +62,7 @@
 
     void onUnhandledKeyEvent(KeyEvent event);
 
-    void doUpdateVisitedHistory(Tab tab, String url, boolean isReload);
+    void doUpdateVisitedHistory(Tab tab, boolean isReload);
 
     void getVisitedHistory(final ValueCallback<String[]> callback);