Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit baa7e3de authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 9682

* changes:
  Add a callback for the url of an apple-touch-icon.
parents ea03f4af 2ba1262b
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -107,7 +107,8 @@ public class Browser {
    public static final String[] HISTORY_PROJECTION = new String[] {
        BookmarkColumns._ID, BookmarkColumns.URL, BookmarkColumns.VISITS,
        BookmarkColumns.DATE, BookmarkColumns.BOOKMARK, BookmarkColumns.TITLE,
        BookmarkColumns.FAVICON, BookmarkColumns.THUMBNAIL };
        BookmarkColumns.FAVICON, BookmarkColumns.THUMBNAIL,
        BookmarkColumns.TOUCH_ICON };

    /* these indices dependent on HISTORY_PROJECTION */
    public static final int HISTORY_PROJECTION_ID_INDEX = 0;
@@ -121,6 +122,10 @@ public class Browser {
     * @hide
     */
    public static final int HISTORY_PROJECTION_THUMBNAIL_INDEX = 7;
    /**
     * @hide
     */
    public static final int HISTORY_PROJECTION_TOUCH_ICON_INDEX = 8;

    /* columns needed to determine whether to truncate history */
    public static final String[] TRUNCATE_HISTORY_PROJECTION = new String[] {
@@ -521,6 +526,10 @@ public class Browser {
         * @hide
         */
        public static final String THUMBNAIL = "thumbnail";
        /**
         * @hide
         */
        public static final String TOUCH_ICON = "touch_icon";
    }

    public static class SearchColumns implements BaseColumns {
+5 −0
Original line number Diff line number Diff line
@@ -615,6 +615,11 @@ class BrowserFrame extends Handler {
        mCallbackProxy.onReceivedIcon(icon);
    }

    // Called by JNI when an apple-touch-icon attribute was found.
    private void didReceiveTouchIconUrl(String url) {
        mCallbackProxy.onReceivedTouchIconUrl(url);
    }

    /**
     * Request a new window from the client.
     * @return The BrowserFrame object stored in the new WebView.
+23 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ class CallbackProxy extends Handler {
    private static final int ADD_MESSAGE_TO_CONSOLE              = 129;
    private static final int GEOLOCATION_PERMISSIONS_SHOW_PROMPT = 130;
    private static final int GEOLOCATION_PERMISSIONS_HIDE_PROMPT = 131;
    private static final int RECEIVED_TOUCH_ICON_URL             = 132;

    // Message triggered by the client to resume execution
    private static final int NOTIFY                              = 200;
@@ -244,6 +245,13 @@ class CallbackProxy extends Handler {
                }
                break;

            case RECEIVED_TOUCH_ICON_URL:
                if (mWebChromeClient != null) {
                    mWebChromeClient.onReceivedTouchIconUrl(mWebView,
                            (String) msg.obj);
                }
                break;

            case RECEIVED_TITLE:
                if (mWebChromeClient != null) {
                    mWebChromeClient.onReceivedTitle(mWebView,
@@ -1054,6 +1062,21 @@ class CallbackProxy extends Handler {
        sendMessage(obtainMessage(RECEIVED_ICON, icon));
    }

    /* package */ void onReceivedTouchIconUrl(String url) {
        // 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);
        }
        // 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));
    }

    public void onReceivedTitle(String title) {
        // Do an unsynchronized quick check to avoid posting if no callback has
        // been set.
+8 −0
Original line number Diff line number Diff line
@@ -44,6 +44,14 @@ public class WebChromeClient {
     */
    public void onReceivedIcon(WebView view, Bitmap icon) {}

    /**
     * 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.
     * @hide pending council approval
     */
    public void onReceivedTouchIconUrl(WebView view, String url) {}

    /**
     * A callback interface used by the host application to notify
     * the current page that its custom view has been dismissed.
+18 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ public class WebHistoryItem implements Cloneable {
    private Bitmap mFavicon;
    // The pre-flattened data used for saving the state.
    private byte[] mFlattenedData;
    // The apple-touch-icon url for use when adding the site to the home screen
    private String mTouchIconUrl;

    /**
     * Basic constructor that assigns a unique id to the item. Called by JNI
@@ -126,6 +128,14 @@ public class WebHistoryItem implements Cloneable {
        return mFavicon;
    }

    /**
     * Return the touch icon url.
     * @hide
     */
    public String getTouchIconUrl() {
        return mTouchIconUrl;
    }

    /**
     * Set the favicon.
     * @param icon A Bitmap containing the favicon for this history item.
@@ -136,6 +146,14 @@ public class WebHistoryItem implements Cloneable {
        mFavicon = icon;
    }

    /**
     * Set the touch icon url.
     * @hide
     */
    /*package*/ void setTouchIconUrl(String url) {
        mTouchIconUrl = url;
    }

    /**
     * Get the pre-flattened data.
     * Note: The VM ensures 32-bit atomic read/write operations so we don't have
Loading