108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu/*
208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * Copyright (C) 2012 The Android Open Source Project
308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu *
408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * Licensed under the Apache License, Version 2.0 (the "License");
508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * you may not use this file except in compliance with the License.
608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * You may obtain a copy of the License at
708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu *
808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu *      http://www.apache.org/licenses/LICENSE-2.0
908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu *
1008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * Unless required by applicable law or agreed to in writing, software
1108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * distributed under the License is distributed on an "AS IS" BASIS,
1208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * See the License for the specific language governing permissions and
1408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * limitations under the License.
1508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu */
1608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
1708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liupackage com.android.webview.chromium;
1808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
1908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liuimport org.chromium.content.browser.NavigationEntry;
2008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
2108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liuimport android.graphics.Bitmap;
2208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liuimport android.webkit.WebHistoryItem;
2308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
2408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu/**
2508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * WebView Chromium implementation of WebHistoryItem. Simple immutable wrapper
2608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu * around NavigationEntry
2708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu */
2808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liupublic class WebHistoryItemChromium extends WebHistoryItem {
2908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    private final String mUrl;
3008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    private final String mOriginalUrl;
3108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    private final String mTitle;
3208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    private final Bitmap mFavicon;
3308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
3408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    /* package */ WebHistoryItemChromium(NavigationEntry entry) {
3508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        mUrl = entry.getUrl();
3608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        mOriginalUrl = entry.getOriginalUrl();
3708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        mTitle = entry.getTitle();
3808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        mFavicon = entry.getFavicon();
3908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    }
4008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
4108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    /**
4208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     * See {@link android.webkit.WebHistoryItem#getId}.
4308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     */
4408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    @Override
4508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    public int getId() {
4608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        // This method is deprecated in superclass. Returning constant -1 now.
4708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        return -1;
4808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    }
4908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
5008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    /**
5108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     * See {@link android.webkit.WebHistoryItem#getUrl}.
5208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     */
5308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    @Override
5408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    public String getUrl() {
5508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        return mUrl;
5608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    }
5708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
5808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    /**
5908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     * See {@link android.webkit.WebHistoryItem#getOriginalUrl}.
6008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     */
6108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    @Override
6208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    public String getOriginalUrl() {
6308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        return mOriginalUrl;
6408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    }
6508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
6608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    /**
6708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     * See {@link android.webkit.WebHistoryItem#getTitle}.
6808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     */
6908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    @Override
7008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    public String getTitle() {
7108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        return mTitle;
7208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    }
7308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
7408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    /**
7508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     * See {@link android.webkit.WebHistoryItem#getFavicon}.
7608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     */
7708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    @Override
7808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    public Bitmap getFavicon() {
7908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        return mFavicon;
8008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    }
8108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
8208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    // Clone constructor.
8308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    private WebHistoryItemChromium(
8408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu            String url, String originalUrl, String title, Bitmap favicon) {
8508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        mUrl = url;
8608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        mOriginalUrl = originalUrl;
8708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        mTitle = title;
8808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        mFavicon = favicon;
8908a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    }
9008a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu
9108a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    /**
9208a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     * See {@link android.webkit.WebHistoryItem#clone}.
9308a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu     */
9408a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    @Override
9508a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    public synchronized WebHistoryItemChromium clone() {
9608a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu        return new WebHistoryItemChromium(mUrl, mOriginalUrl, mTitle, mFavicon);
9708a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu    }
9808a5e00cdfb74f4ffd843d2d0a9b0b40b86b107aBo Liu}
99