Merge "Set user agent setting when toggling debug" into honeycomb
diff --git a/res/drawable-hdpi/fav_incognito.png b/res/drawable-hdpi/fav_incognito.png
deleted file mode 100644
index b8acde2..0000000
--- a/res/drawable-hdpi/fav_incognito.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_chevron.png b/res/drawable-hdpi/ic_chevron.png
index 96e1afb..6dc842f 100644
--- a/res/drawable-hdpi/ic_chevron.png
+++ b/res/drawable-hdpi/ic_chevron.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_incognito_holo_dark.png b/res/drawable-hdpi/ic_incognito_holo_dark.png
index 8f7a9d4..f4997ae 100644
--- a/res/drawable-hdpi/ic_incognito_holo_dark.png
+++ b/res/drawable-hdpi/ic_incognito_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/fav_incognito.png b/res/drawable-mdpi/fav_incognito.png
deleted file mode 100644
index 6a120b9..0000000
--- a/res/drawable-mdpi/fav_incognito.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_chevron.png b/res/drawable-mdpi/ic_chevron.png
index 6804d75..786899a 100644
--- a/res/drawable-mdpi/ic_chevron.png
+++ b/res/drawable-mdpi/ic_chevron.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_incognito_holo_dark.png b/res/drawable-mdpi/ic_incognito_holo_dark.png
index e2e8b17..dfb380a 100644
--- a/res/drawable-mdpi/ic_incognito_holo_dark.png
+++ b/res/drawable-mdpi/ic_incognito_holo_dark.png
Binary files differ
diff --git a/res/layout/tab_title.xml b/res/layout/tab_title.xml
index 164e9b6..0f500c7 100644
--- a/res/layout/tab_title.xml
+++ b/res/layout/tab_title.xml
@@ -26,11 +26,11 @@
         android:visibility="gone" />
     <ImageView
         android:id="@+id/incognito"
-        android:layout_width="16dip"
-        android:layout_height="16dip"
-        android:layout_marginRight="16dip"
+        android:layout_width="32dip"
+        android:layout_height="32dip"
+        android:layout_marginRight="8dip"
         android:gravity="center_vertical"
-        android:src="@drawable/fav_incognito"
+        android:src="@drawable/ic_incognito_holo_dark"
         android:visibility="gone" />
     <ImageView
         android:id="@+id/favicon"
diff --git a/res/mipmap-hdpi/ic_launcher_browser.png b/res/mipmap-hdpi/ic_launcher_browser.png
index ed7d3ce..1c1a0bd 100644
--- a/res/mipmap-hdpi/ic_launcher_browser.png
+++ b/res/mipmap-hdpi/ic_launcher_browser.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_browser.png b/res/mipmap-mdpi/ic_launcher_browser.png
index 46ad0a0..efcd33b 100644
--- a/res/mipmap-mdpi/ic_launcher_browser.png
+++ b/res/mipmap-mdpi/ic_launcher_browser.png
Binary files differ
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 5deb335..568a7e9 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -253,7 +253,7 @@
     }
 
     private void attachTabToContentView(Tab tab) {
-        if (tab.getWebView() == null) {
+        if ((tab == null) || (tab.getWebView() == null)) {
             return;
         }
         View container = tab.getViewContainer();
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 83db214..c4897f2 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -148,14 +148,12 @@
             if (incognito) {
                 mUrl = "browser:incognito";
                 mTitle = c.getString(R.string.new_incognito_tab);
-                mFavicon = BitmapFactory.decodeResource(
-                        c.getResources(), R.drawable.fav_incognito);
             } else {
                 mUrl = "";
                 mTitle = c.getString(R.string.new_tab);
-                mFavicon = BitmapFactory.decodeResource(
-                        c.getResources(), R.drawable.app_web_browser_sm);
             }
+            mFavicon = BitmapFactory.decodeResource(
+                    c.getResources(), R.drawable.app_web_browser_sm);
             mLockIcon = LockIcon.LOCK_ICON_UNSECURE;
         }
 
@@ -170,13 +168,8 @@
             if (favicon != null) {
                 mFavicon = favicon;
             } else {
-                if (incognito) {
-                    mFavicon = BitmapFactory.decodeResource(
-                            c.getResources(), R.drawable.fav_incognito);
-                } else {
-                    mFavicon = BitmapFactory.decodeResource(
-                            c.getResources(), R.drawable.app_web_browser_sm);
-                }
+                mFavicon = BitmapFactory.decodeResource(
+                        c.getResources(), R.drawable.app_web_browser_sm);
             }
         }
     }
diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java
index 0214843..02c9f4c 100644
--- a/src/com/android/browser/UrlInputView.java
+++ b/src/com/android/browser/UrlInputView.java
@@ -18,11 +18,15 @@
 
 import com.android.browser.SuggestionsAdapter.CompletionListener;
 import com.android.browser.SuggestionsAdapter.SuggestItem;
+import com.android.browser.search.SearchEngine;
+import com.android.browser.search.SearchEngineInfo;
+import com.android.browser.search.SearchEngines;
 
 import android.content.Context;
 import android.content.res.Configuration;
 import android.text.TextUtils;
 import android.util.AttributeSet;
+import android.util.Patterns;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.View.OnFocusChangeListener;
@@ -55,6 +59,7 @@
     private View mContainer;
     private boolean mLandscape;
     private boolean mInVoiceMode;
+    private boolean mIncognitoMode;
 
     public UrlInputView(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
@@ -174,10 +179,33 @@
         if (TextUtils.isEmpty(url)) {
             mListener.onDismiss();
         } else {
+            if (mIncognitoMode && isSearch(url)) {
+                // To prevent logging, intercept this request
+                // TODO: This is a quick hack, refactor this
+                SearchEngine searchEngine = BrowserSettings.getInstance()
+                        .getSearchEngine();
+                if (searchEngine == null) return;
+                SearchEngineInfo engineInfo = SearchEngines
+                        .getSearchEngineInfo(mContext, searchEngine.getName());
+                if (engineInfo == null) return;
+                url = engineInfo.getSearchUriForQuery(url);
+                // mLister.onAction can take it from here without logging
+            }
             mListener.onAction(url, extra, source);
         }
     }
 
+    boolean isSearch(String inUrl) {
+        String url = UrlUtils.fixUrl(inUrl).trim();
+        if (TextUtils.isEmpty(url)) return false;
+
+        if (Patterns.WEB_URL.matcher(url).matches()
+                || UrlUtils.ACCEPTED_URI_SCHEMA.matcher(url).matches()) {
+            return false;
+        }
+        return true;
+    }
+
     // Completion Listener
 
     @Override
@@ -224,7 +252,8 @@
     }
 
     public void setIncognitoMode(boolean incognito) {
-        mAdapter.setIncognitoMode(incognito);
+        mIncognitoMode = incognito;
+        mAdapter.setIncognitoMode(mIncognitoMode);
     }
 
 }
diff --git a/src/com/android/browser/search/SearchEngines.java b/src/com/android/browser/search/SearchEngines.java
index 62690e7..a6ba3de 100644
--- a/src/com/android/browser/search/SearchEngines.java
+++ b/src/com/android/browser/search/SearchEngines.java
@@ -61,7 +61,7 @@
         return new OpenSearchSearchEngine(context, searchEngineInfo);
     }
 
-    private static SearchEngineInfo getSearchEngineInfo(Context context, String name) {
+    public static SearchEngineInfo getSearchEngineInfo(Context context, String name) {
         try {
             return new SearchEngineInfo(context, name);
         } catch (IllegalArgumentException exception) {