1fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald/* 2fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Copyright (C) 2012 The Android Open Source Project 3fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * 4fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Licensed under the Apache License, Version 2.0 (the "License"); 5fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * you may not use this file except in compliance with the License. 6fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * You may obtain a copy of the License at 7fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * 8fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * http://www.apache.org/licenses/LICENSE-2.0 9fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * 10fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Unless required by applicable law or agreed to in writing, software 11fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * distributed under the License is distributed on an "AS IS" BASIS, 12fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * See the License for the specific language governing permissions and 14fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * limitations under the License. 15fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 16fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 17fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwaldpackage android.webkit; 18fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 19fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwaldimport android.graphics.Bitmap; 20fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 21fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwaldimport java.net.MalformedURLException; 22fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwaldimport java.net.URL; 23fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 24fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald/* package */ class WebHistoryItemClassic extends WebHistoryItem implements Cloneable { 25fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // Global identifier count. 26fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private static int sNextId = 0; 27fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // Unique identifier. 28fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private final int mId; 29fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // A point to a native WebHistoryItem instance which contains the actual data 30fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private int mNativeBridge; 31fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // The favicon for this item. 32fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private Bitmap mFavicon; 33fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // The pre-flattened data used for saving the state. 34fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private byte[] mFlattenedData; 35fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // The apple-touch-icon url for use when adding the site to the home screen, 36fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // as obtained from a <link> element in the page. 37fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private String mTouchIconUrlFromLink; 38fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // If no <link> is specified, this holds the default location of the 39fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // apple-touch-icon. 40fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private String mTouchIconUrlServerDefault; 41fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // Custom client data that is not flattened or read by native code. 42fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private Object mCustomData; 43fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 44fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 45fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Basic constructor that assigns a unique id to the item. Called by JNI 46fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * only. 47fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 48fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private WebHistoryItemClassic(int nativeBridge) { 49fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald synchronized (WebHistoryItemClassic.class) { 50fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mId = sNextId++; 51fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 52fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mNativeBridge = nativeBridge; 53fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald nativeRef(mNativeBridge); 54fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 55fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 56fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald protected void finalize() throws Throwable { 57fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (mNativeBridge != 0) { 58fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald nativeUnref(mNativeBridge); 59fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mNativeBridge = 0; 60fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 61fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 62fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 63fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 64fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Construct a new WebHistoryItem with initial flattened data. 65fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * @param data The pre-flattened data coming from restoreState. 66fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 67fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /*package*/ WebHistoryItemClassic(byte[] data) { 68fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mFlattenedData = data; 69fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald synchronized (WebHistoryItemClassic.class) { 70fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mId = sNextId++; 71fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 72fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 73fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 74fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 75fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Construct a clone of a WebHistoryItem from the given item. 76fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * @param item The history item to clone. 77fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 78fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private WebHistoryItemClassic(WebHistoryItemClassic item) { 79fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mFlattenedData = item.mFlattenedData; 80fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mId = item.mId; 81fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mFavicon = item.mFavicon; 82fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mNativeBridge = item.mNativeBridge; 83fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (mNativeBridge != 0) { 84fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald nativeRef(mNativeBridge); 85fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 86fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 87fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 88fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald @Deprecated 89fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public int getId() { 90fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return mId; 91fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 92fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 93fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public String getUrl() { 94fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (mNativeBridge == 0) return null; 95fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return nativeGetUrl(mNativeBridge); 96fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 97fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 98fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public String getOriginalUrl() { 99fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (mNativeBridge == 0) return null; 100fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return nativeGetOriginalUrl(mNativeBridge); 101fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 102fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 103fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public String getTitle() { 104fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (mNativeBridge == 0) return null; 105fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return nativeGetTitle(mNativeBridge); 106fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 107fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 108fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public Bitmap getFavicon() { 109fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (mFavicon == null && mNativeBridge != 0) { 110fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mFavicon = nativeGetFavicon(mNativeBridge); 111fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 112fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return mFavicon; 113fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 114fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 115fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 116fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Return the touch icon url. 117fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * If no touch icon <link> tag was specified, returns 118fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * <host>/apple-touch-icon.png. The DownloadTouchIcon class that 119fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * attempts to retrieve the touch icon will handle the case where 120fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * that file does not exist. An icon set by a <link> tag is always 121fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * used in preference to an icon saved on the server. 122fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * @hide 123fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 124fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public String getTouchIconUrl() { 125fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (mTouchIconUrlFromLink != null) { 126fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return mTouchIconUrlFromLink; 127fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } else if (mTouchIconUrlServerDefault != null) { 128fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return mTouchIconUrlServerDefault; 129fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 130fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 131fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald try { 132fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald URL url = new URL(getOriginalUrl()); 133fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mTouchIconUrlServerDefault = new URL(url.getProtocol(), url.getHost(), url.getPort(), 134fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald "/apple-touch-icon.png").toString(); 135fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } catch (MalformedURLException e) { 136fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return null; 137fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 138fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return mTouchIconUrlServerDefault; 139fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 140fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 141fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 142fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Return the custom data provided by the client. 143fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * @hide 144fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 145fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public Object getCustomData() { 146fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return mCustomData; 147fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 148fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 149fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 150fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Set the custom data field. 151fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * @param data An Object containing any data the client wishes to associate 152fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * with the item. 153fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * @hide 154fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 155fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public void setCustomData(Object data) { 156fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // NOTE: WebHistoryItems are used in multiple threads. However, the 157fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // public facing apis are all getters with the exception of this one 158fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // api. Since this api is exclusive to clients, we don't make any 159fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald // promises about thread safety. 160fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mCustomData = data; 161fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 162fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 163fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 164fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Set the favicon. 165fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * @param icon A Bitmap containing the favicon for this history item. 166fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Note: The VM ensures 32-bit atomic read/write operations so we don't have 167fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * to synchronize this method. 168fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 169fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /*package*/ void setFavicon(Bitmap icon) { 170fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mFavicon = icon; 171fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 172fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 173fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 174fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Set the touch icon url. Will not overwrite an icon that has been 175fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * set already from a <link> tag, unless the new icon is precomposed. 176fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * @hide 177fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 178fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /*package*/ void setTouchIconUrl(String url, boolean precomposed) { 179fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (precomposed || mTouchIconUrlFromLink == null) { 180fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mTouchIconUrlFromLink = url; 181fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 182fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 183fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 184fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 185fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Get the pre-flattened data. 186fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Note: The VM ensures 32-bit atomic read/write operations so we don't have 187fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * to synchronize this method. 188fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 189fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /*package*/ byte[] getFlattenedData() { 190fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald if (mNativeBridge != 0) { 191fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return nativeGetFlattenedData(mNativeBridge); 192fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 193fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return mFlattenedData; 194fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 195fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 196fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /** 197fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Inflate this item. 198fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * Note: The VM ensures 32-bit atomic read/write operations so we don't have 199fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald * to synchronize this method. 200fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 201fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /*package*/ void inflate(int nativeFrame) { 202fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mNativeBridge = inflate(nativeFrame, mFlattenedData); 203fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald mFlattenedData = null; 204fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 205fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 206fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald public synchronized WebHistoryItemClassic clone() { 207fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald return new WebHistoryItemClassic(this); 208fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald } 209fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 210fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald /* Natively inflate this item, this method is called in the WebCore thread. 211fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald */ 212fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private native int inflate(int nativeFrame, byte[] data); 213fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private native void nativeRef(int nptr); 214fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private native void nativeUnref(int nptr); 215fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private native String nativeGetTitle(int nptr); 216fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private native String nativeGetUrl(int nptr); 217fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private native String nativeGetOriginalUrl(int nptr); 218fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private native byte[] nativeGetFlattenedData(int nptr); 219fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald private native Bitmap nativeGetFavicon(int nptr); 220fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald 221fcc1f75bdf21a89f0a40c323efae4d6a817cced5Jesse Greenwald} 222