unofficialxkcdviewer/chromium_webview/src/com/mogoweb/chrome/impl/WebBackForwardListImpl.java

92 lines
2.8 KiB
Java
Executable File

// Copyright (c) 2013 mogoweb. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package com.mogoweb.chrome.impl;
import java.util.ArrayList;
import org.chromium.content.browser.NavigationEntry;
import org.chromium.content.browser.NavigationHistory;
import com.mogoweb.chrome.WebBackForwardList;
import com.mogoweb.chrome.WebHistoryItem;
public class WebBackForwardListImpl extends WebBackForwardList {
// Current position in the list.
private int mCurrentIndex;
// ArrayList of WebHistoryItems for maintaining our copy.
private ArrayList<WebHistoryItem> mArray;
public WebBackForwardListImpl(NavigationHistory history) {
int size = history.getEntryCount();
mArray = new ArrayList<WebHistoryItem>(size);
for (int i = 0; i < size; i++) {
NavigationEntry entry = history.getEntryAtIndex(i);
WebHistoryItemImpl item = new WebHistoryItemImpl(entry);
mArray.add(item);
}
mCurrentIndex = history.getCurrentEntryIndex();
}
private WebBackForwardListImpl(WebBackForwardListImpl list) {
int size = list.getSize();
mArray = new ArrayList<WebHistoryItem>(size);
for (int i = 0; i < size; i++) {
WebHistoryItemImpl item = (WebHistoryItemImpl)list.getItemAtIndex(i);
mArray.add(item.clone());
}
mCurrentIndex = list.getCurrentIndex();
}
/**
* Return the current history item. This method returns null if the list is
* empty.
* @return The current history item.
*/
@Override
public synchronized WebHistoryItem getCurrentItem() {
return getItemAtIndex(mCurrentIndex);
}
/**
* Get the index of the current history item. This index can be used to
* directly index into the array list.
* @return The current index from 0...n or -1 if the list is empty.
*/
@Override
public synchronized int getCurrentIndex() {
return mCurrentIndex;
}
/**
* Get the history item at the given index. The index range is from 0...n
* where 0 is the first item and n is the last item.
* @param index The index to retrieve.
*/
@Override
public synchronized WebHistoryItem getItemAtIndex(int index) {
return mArray.get(index);
}
/**
* Get the total size of the back/forward list.
* @return The size of the list.
*/
@Override
public synchronized int getSize() {
return mArray.size();
}
/**
* Clone the entire object to be used in the UI thread by clients of
* WebView. This creates a copy that should never be modified by any of the
* webkit package classes.
*/
@Override
public synchronized WebBackForwardList clone() {
return new WebBackForwardListImpl(this);
}
}