• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007 Apple Inc.  All rights reserved.
3  * Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1.  Redistributions of source code must retain the above copyright
10  *     notice, this list of conditions and the following disclaimer.
11  * 2.  Redistributions in binary form must reproduce the above copyright
12  *     notice, this list of conditions and the following disclaimer in the
13  *     documentation and/or other materials provided with the distribution.
14  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15  *     its contributors may be used to endorse or promote products derived
16  *     from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #ifndef WorkQueueItem_h
31 #define WorkQueueItem_h
32 
33 #include <qstring.h>
34 #include <qpointer.h>
35 #include <qwebpage.h>
36 
37 class WorkQueueItem {
38 public:
WorkQueueItem(QWebPage * page)39     WorkQueueItem(QWebPage *page) : m_webPage(page) {}
~WorkQueueItem()40     virtual ~WorkQueueItem() { }
41     virtual bool invoke() const = 0;
42 
43 protected:
44     QPointer<QWebPage> m_webPage;
45 };
46 
47 class LoadItem : public WorkQueueItem {
48 public:
LoadItem(const QString & url,const QString & target,QWebPage * page)49     LoadItem(const QString &url, const QString &target, QWebPage *page)
50         : WorkQueueItem(page)
51         , m_url(url)
52         , m_target(target)
53     {
54     }
55 
url()56     QString url() const { return m_url; }
target()57     QString target() const { return m_target; }
58 
59     virtual bool invoke() const;
60 
61 private:
62     QString m_url;
63     QString m_target;
64 };
65 
66 class ReloadItem : public WorkQueueItem {
67 public:
ReloadItem(QWebPage * page)68     ReloadItem(QWebPage *page)
69         : WorkQueueItem(page)
70     {
71     }
72     virtual bool invoke() const;
73 };
74 
75 class ScriptItem : public WorkQueueItem {
76 public:
ScriptItem(const QString & script,QWebPage * page)77     ScriptItem(const QString &script, QWebPage *page)
78         : WorkQueueItem(page)
79         , m_script(script)
80     {
81     }
82 
script()83     QString script() const { return m_script; }
84 
85     virtual bool invoke() const;
86 
87 private:
88     QString m_script;
89 };
90 
91 class BackForwardItem : public WorkQueueItem {
92 public:
93     virtual bool invoke() const;
94 
95 protected:
BackForwardItem(int howFar,QWebPage * page)96     BackForwardItem(int howFar, QWebPage *page)
97         : WorkQueueItem(page)
98         , m_howFar(howFar)
99     {
100     }
101 
102     int m_howFar;
103 };
104 
105 class BackItem : public BackForwardItem {
106 public:
BackItem(unsigned howFar,QWebPage * page)107     BackItem(unsigned howFar, QWebPage *page)
108         : BackForwardItem(-howFar, page)
109     {
110     }
111 };
112 
113 class ForwardItem : public BackForwardItem {
114 public:
ForwardItem(unsigned howFar,QWebPage * page)115     ForwardItem(unsigned howFar, QWebPage *page)
116         : BackForwardItem(howFar, page)
117     {
118     }
119 };
120 
121 #endif // !defined(WorkQueueItem_h)
122