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 APPLE COMPUTER, INC. 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 ANDROID_WEBKIT_WEBHISTORY_H 27 #define ANDROID_WEBKIT_WEBHISTORY_H 28 29 #include <jni.h> 30 #include <wtf/RefCounted.h> 31 #include <wtf/Vector.h> 32 33 namespace WebCore { 34 class HistoryItem; 35 } 36 37 namespace android { 38 39 class AutoJObject; 40 41 class WebHistory { 42 public: 43 static jbyteArray Flatten(JNIEnv*, WTF::Vector<char>&, WebCore::HistoryItem*); 44 static void AddItem(const AutoJObject&, WebCore::HistoryItem*); 45 static void RemoveItem(const AutoJObject&, int); 46 static void UpdateHistoryIndex(const AutoJObject&, int); 47 }; 48 49 // there are two scale factors saved with each history item. mScale reflects the 50 // viewport scale factor, default to 100 means 100%. mScreenWidthScale records 51 // the scale factor for the screen width used to wrap the text paragraph. 52 class WebHistoryItem : public WTF::RefCounted<WebHistoryItem> { 53 public: WebHistoryItem(WebHistoryItem * parent)54 WebHistoryItem(WebHistoryItem* parent) 55 : mParent(parent) 56 , mObject(NULL) 57 , mScale(100) 58 , mScreenWidthScale(100) 59 , mActive(false) 60 , mHistoryItem(NULL) {} 61 WebHistoryItem(JNIEnv*, jobject, WebCore::HistoryItem*); 62 ~WebHistoryItem(); 63 void updateHistoryItem(WebCore::HistoryItem* item); setScale(int s)64 void setScale(int s) { mScale = s; } setScreenWidthScale(int s)65 void setScreenWidthScale(int s) { mScreenWidthScale = s; } setActive()66 void setActive() { mActive = true; } setParent(WebHistoryItem * parent)67 void setParent(WebHistoryItem* parent) { mParent = parent; } parent()68 WebHistoryItem* parent() { return mParent.get(); } scale()69 int scale() { return mScale; } screenWidthScale()70 int screenWidthScale() { return mScreenWidthScale; } historyItem()71 WebCore::HistoryItem* historyItem() { return mHistoryItem; } 72 private: 73 RefPtr<WebHistoryItem> mParent; 74 jobject mObject; 75 int mScale; 76 int mScreenWidthScale; 77 bool mActive; 78 WebCore::HistoryItem* mHistoryItem; 79 }; 80 81 }; 82 83 #endif 84