1 /* 2 * Copyright 2006, The Android Open Source Project 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * * Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * * Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #ifndef WebHistory_h 27 #define WebHistory_h 28 29 #include "AndroidWebHistoryBridge.h" 30 31 #include "PlatformString.h" 32 #include "SkBitmap.h" 33 34 #include <jni.h> 35 #include <wtf/RefCounted.h> 36 #include <wtf/Threading.h> 37 #include <wtf/Vector.h> 38 39 namespace android { 40 41 class AutoJObject; 42 43 class WebHistory { 44 public: 45 static void Flatten(JNIEnv*, WTF::Vector<char>&, WebCore::HistoryItem*); 46 static void AddItem(const AutoJObject&, WebCore::HistoryItem*); 47 static void RemoveItem(const AutoJObject&, int); 48 static void UpdateHistoryIndex(const AutoJObject&, int); 49 }; 50 51 // there are two scale factors saved with each history item. m_scale reflects the 52 // viewport scale factor, default to 100 means 100%. m_textWrapScale records 53 // the scale factor for wrapping the text paragraph. 54 class WebHistoryItem : public WebCore::AndroidWebHistoryBridge { 55 public: WebHistoryItem(WebHistoryItem * parent)56 WebHistoryItem(WebHistoryItem* parent) 57 : WebCore::AndroidWebHistoryBridge(0) 58 , m_favicon(0) 59 , m_faviconCached(0) 60 , m_dataCached(0) 61 , m_parent(parent) 62 {} WebHistoryItem(WebCore::HistoryItem * item)63 WebHistoryItem(WebCore::HistoryItem* item) 64 : WebCore::AndroidWebHistoryBridge(item) 65 , m_favicon(0) 66 , m_faviconCached(0) 67 , m_dataCached(0) 68 , m_parent(0) 69 {} 70 ~WebHistoryItem(); 71 void updateHistoryItem(WebCore::HistoryItem* item); setParent(WebHistoryItem * parent)72 void setParent(WebHistoryItem* parent) { m_parent = parent; } parent()73 WebHistoryItem* parent() const { return m_parent.get(); } 74 75 // TODO: This is ugly. Really the whole bindings of WebHistoryItem needs to be 76 // cleaned up, but this will do for now 77 WTF::Mutex m_lock; 78 String m_url; 79 String m_originalUrl; 80 String m_title; 81 SkBitmap* m_favicon; 82 WTF::Vector<char> m_data; 83 jobject m_faviconCached; 84 jobject m_dataCached; 85 86 private: 87 RefPtr<WebHistoryItem> m_parent; 88 }; 89 90 }; 91 92 #endif 93