18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright 2006, The Android Open Source Project 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * * Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * * Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 163298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 263d1195ca6a380e5af16e3a505a007369cf18a4dbSteve Block#ifndef WebHistory_h 273d1195ca6a380e5af16e3a505a007369cf18a4dbSteve Block#define WebHistory_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 29be33b78f63b17f1b6f5a36a503d797d5f9b941eeBen Murdoch#include "AndroidWebHistoryBridge.h" 30be33b78f63b17f1b6f5a36a503d797d5f9b941eeBen Murdoch 31e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck#include "PlatformString.h" 32e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck#include "SkBitmap.h" 33e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <jni.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefCounted.h> 36e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck#include <wtf/Threading.h> 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/Vector.h> 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace android { 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass AutoJObject; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebHistory { 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 45e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck static void Flatten(JNIEnv*, WTF::Vector<char>&, WebCore::HistoryItem*); 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void AddItem(const AutoJObject&, WebCore::HistoryItem*); 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void RemoveItem(const AutoJObject&, int); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void UpdateHistoryIndex(const AutoJObject&, int); 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 51c05b3a990126a5a1de357c025e25e6acd4e4e185Grace Kloba// there are two scale factors saved with each history item. m_scale reflects the 52c05b3a990126a5a1de357c025e25e6acd4e4e185Grace Kloba// viewport scale factor, default to 100 means 100%. m_textWrapScale records 53c05b3a990126a5a1de357c025e25e6acd4e4e185Grace Kloba// the scale factor for wrapping the text paragraph. 54be33b78f63b17f1b6f5a36a503d797d5f9b941eeBen Murdochclass WebHistoryItem : public WebCore::AndroidWebHistoryBridge { 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebHistoryItem(WebHistoryItem* parent) 570b9d36d96db8c9f0462409ac20b6c25a31dcb4bbGrace Kloba : WebCore::AndroidWebHistoryBridge(0) 584d31493c3fa47a28b2753bc5b99e2074b6a7a4dfJohn Reck , m_favicon(0) 59e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck , m_faviconCached(0) 60e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck , m_dataCached(0) 61be33b78f63b17f1b6f5a36a503d797d5f9b941eeBen Murdoch , m_parent(parent) 62e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck {} 63e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck WebHistoryItem(WebCore::HistoryItem* item) 64e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck : WebCore::AndroidWebHistoryBridge(item) 654d31493c3fa47a28b2753bc5b99e2074b6a7a4dfJohn Reck , m_favicon(0) 66e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck , m_faviconCached(0) 67e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck , m_dataCached(0) 68e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck , m_parent(0) 69e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck {} 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~WebHistoryItem(); 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void updateHistoryItem(WebCore::HistoryItem* item); 72be33b78f63b17f1b6f5a36a503d797d5f9b941eeBen Murdoch void setParent(WebHistoryItem* parent) { m_parent = parent; } 73be33b78f63b17f1b6f5a36a503d797d5f9b941eeBen Murdoch WebHistoryItem* parent() const { return m_parent.get(); } 74e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck 75e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck // TODO: This is ugly. Really the whole bindings of WebHistoryItem needs to be 76e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck // cleaned up, but this will do for now 77e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck WTF::Mutex m_lock; 78e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck String m_url; 79e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck String m_originalUrl; 80e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck String m_title; 814d31493c3fa47a28b2753bc5b99e2074b6a7a4dfJohn Reck SkBitmap* m_favicon; 82e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck WTF::Vector<char> m_data; 83e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck jobject m_faviconCached; 84e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck jobject m_dataCached; 85e38a6c283211dcfd3b1fb390e4c108a86481dd8aJohn Reck 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 87be33b78f63b17f1b6f5a36a503d797d5f9b941eeBen Murdoch RefPtr<WebHistoryItem> m_parent; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 93