Add a boolean indicating if the apple-touch-icon is precomposed.
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index 4204a1a..e233a02 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -605,8 +605,8 @@
     }
 
     // Called by JNI when an apple-touch-icon attribute was found.
-    private void didReceiveTouchIconUrl(String url) {
-        mCallbackProxy.onReceivedTouchIconUrl(url);
+    private void didReceiveTouchIconUrl(String url, boolean precomposed) {
+        mCallbackProxy.onReceivedTouchIconUrl(url, precomposed);
     }
 
     /**
diff --git a/core/java/android/webkit/CallbackProxy.java b/core/java/android/webkit/CallbackProxy.java
index b051675..1ec769b 100644
--- a/core/java/android/webkit/CallbackProxy.java
+++ b/core/java/android/webkit/CallbackProxy.java
@@ -249,7 +249,7 @@
             case RECEIVED_TOUCH_ICON_URL:
                 if (mWebChromeClient != null) {
                     mWebChromeClient.onReceivedTouchIconUrl(mWebView,
-                            (String) msg.obj);
+                            (String) msg.obj, msg.arg1 == 1);
                 }
                 break;
 
@@ -1065,19 +1065,22 @@
         sendMessage(obtainMessage(RECEIVED_ICON, icon));
     }
 
-    /* package */ void onReceivedTouchIconUrl(String url) {
+    /* package */ void onReceivedTouchIconUrl(String url, boolean precomposed) {
         // We should have a current item but we do not want to crash so check
         // for null.
         WebHistoryItem i = mBackForwardList.getCurrentItem();
         if (i != null) {
-            i.setTouchIconUrl(url);
+            if (precomposed || i.getTouchIconUrl() != null) {
+                i.setTouchIconUrl(url);
+            }
         }
         // Do an unsynchronized quick check to avoid posting if no callback has
         // been set.
         if (mWebChromeClient == null) {
             return;
         }
-        sendMessage(obtainMessage(RECEIVED_TOUCH_ICON_URL, url));
+        sendMessage(obtainMessage(RECEIVED_TOUCH_ICON_URL,
+                precomposed ? 1 : 0, 0, url));
     }
 
     public void onReceivedTitle(String title) {
diff --git a/core/java/android/webkit/WebChromeClient.java b/core/java/android/webkit/WebChromeClient.java
index 0e08514..1ae1d85 100644
--- a/core/java/android/webkit/WebChromeClient.java
+++ b/core/java/android/webkit/WebChromeClient.java
@@ -48,9 +48,11 @@
      * Notify the host application of the url for an apple-touch-icon.
      * @param view The WebView that initiated the callback.
      * @param url The icon url.
+     * @param precomposed True if the url is for a precomposed touch icon.
      * @hide pending council approval
      */
-    public void onReceivedTouchIconUrl(WebView view, String url) {}
+    public void onReceivedTouchIconUrl(WebView view, String url,
+            boolean precomposed) {}
 
     /**
      * A callback interface used by the host application to notify