• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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