Multiple fixes to browser

- Ensure that clearing of the FLAG_DIM_BEHIND happens only once.
  Clearing FLAG_DIM_BEHIND window flag multiple time was causing
  unnecessary paint.
- Implement shouldDownloadFavicon API in Tab to optimize favicon
  download.

Change-Id: I8027565a29f2f1f6a2429a282c8727c6b4fe0d45
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index bed4043..ccc1c59 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -250,6 +250,7 @@
     private String mVoiceResult;
     private boolean mUpdateMyNavThumbnail;
     private String mUpdateMyNavThumbnailUrl;
+    private float mLevel = 0.0f;
 
     public Controller(Activity browser) {
         mActivity = browser;
@@ -3413,7 +3414,10 @@
     }
 
     public void setWindowDimming(float level) {
-        if (level != 0) {
+        if (mLevel == level)
+            return;
+        mLevel = level;
+        if (level != 0.0f) {
             WindowManager.LayoutParams lp = mActivity.getWindow().getAttributes();
             lp.dimAmount = level;
             mActivity.getWindow().setAttributes(lp);
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index b07f035..a973c93 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -208,7 +208,7 @@
             mTabSwitcher.setVisibility(View.VISIBLE);
             mTabText.setVisibility(View.VISIBLE);
             if (mUiController != null) {
-                mUiController.setWindowDimming(0f);
+                mUiController.setWindowDimming(0.0f);
             }
             break;
         case StateListener.STATE_HIGHLIGHTED:
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 789db54..3b57d9e 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -432,6 +432,11 @@
             }
         }
 
+        @Override
+        public boolean shouldDownloadFavicon(WebView view, String url) {
+            return true;
+        }
+
         /**
          * Updates the security state. This method is called when we discover
          * another resource to be loaded for this page (for example,