Reviewed by Darin Adler.
[WebKit-https.git] / Source / WebKit / haiku / WebCoreSupport / ChromeClientHaiku.h
1 /*
2  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
3  * Copyright (C) 2007 Ryan Leavengood <leavengood@gmail.com> All rights reserved.
4  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5  *
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
20  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #ifndef ChromeClientHaiku_h
30 #define ChromeClientHaiku_h
31
32 #include "ChromeClient.h"
33 #include "FloatRect.h"
34 #include "RefCounted.h"
35 #include "WebCoreKeyboardUIMode.h"
36
37 namespace WebCore {
38
39     class FloatRect;
40     class Page;
41     struct FrameLoadRequest;
42
43     class ChromeClientHaiku : public ChromeClient {
44     public:
45         ChromeClientHaiku();
46         virtual ~ChromeClientHaiku();
47         virtual void chromeDestroyed();
48
49         virtual void setWindowRect(const FloatRect&);
50         virtual FloatRect windowRect();
51
52         virtual FloatRect pageRect();
53
54         virtual float scaleFactor();
55
56         virtual void focus();
57         virtual void unfocus();
58
59         virtual bool canTakeFocus(FocusDirection);
60         virtual void takeFocus(FocusDirection);
61
62         virtual void focusedNodeChanged(Node*);
63         virtual void focusedFrameChanged(Frame*);
64
65         virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&);
66         virtual Page* createModalDialog(Frame*, const FrameLoadRequest&);
67         virtual void show();
68
69         virtual bool canRunModal();
70         virtual void runModal();
71
72         virtual void setToolbarsVisible(bool);
73         virtual bool toolbarsVisible();
74
75         virtual void setStatusbarVisible(bool);
76         virtual bool statusbarVisible();
77
78         virtual void setScrollbarsVisible(bool);
79         virtual bool scrollbarsVisible();
80
81         virtual void setMenubarVisible(bool);
82         virtual bool menubarVisible();
83
84         virtual void setResizable(bool);
85
86         virtual void addMessageToConsole(const String& message, unsigned int lineNumber,
87                                  const String& sourceID);
88         virtual void addMessageToConsole(MessageSource, MessageLevel, const String& message,
89                                  unsigned int lineNumber, const String& sourceID);
90         virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel,
91                                  const String&, unsigned int, const String&);
92
93         virtual bool canRunBeforeUnloadConfirmPanel();
94
95         virtual bool runBeforeUnloadConfirmPanel(const String& message, Frame* frame);
96
97         virtual void closeWindowSoon();
98
99         virtual void runJavaScriptAlert(Frame*, const String&);
100         virtual bool runJavaScriptConfirm(Frame*, const String&);
101         virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result);
102         virtual bool shouldInterruptJavaScript();
103
104         virtual void setStatusbarText(const WTF::String&);
105         virtual WebCore::KeyboardUIMode keyboardUIMode();
106         virtual IntRect windowResizerRect() const;
107
108         virtual void invalidateWindow(const IntRect&, bool);
109         virtual void invalidateContentsAndWindow(const IntRect&, bool);
110         virtual void invalidateContentsForSlowScroll(const IntRect&, bool);
111         virtual void scroll(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect);
112
113         virtual IntPoint screenToWindow(const IntPoint&) const;
114         virtual IntRect windowToScreen(const IntRect&) const;
115         virtual PlatformPageClient platformPageClient() const;
116         virtual void contentsSizeChanged(Frame*, const IntSize&) const;
117         virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const;
118
119         void addToDirtyRegion(const IntRect&);
120         void scrollBackingStore(int, int, const IntRect&, const IntRect&);
121         void updateBackingStore();
122
123         virtual void scrollbarsModeDidChange() const { }
124         virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
125
126         void setToolTip(const String&);
127
128         virtual void setToolTip(const String&, TextDirection);
129
130         void print(Frame*);
131
132 #if ENABLE(DATABASE)
133         virtual void exceededDatabaseQuota(Frame*, const String& databaseName);
134 #endif
135
136         virtual bool selectItemWritingDirectionIsNatural();
137         virtual bool selectItemAlignmentFollowsMenuWritingDirection();
138         virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
139         virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
140
141 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
142         virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
143         virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*);
144 #endif
145 #if ENABLE(CONTEXT_MENUS)
146         virtual void showContextMenu() { }
147 #endif
148
149         // This is an asynchronous call. The ChromeClient can display UI asking the user for permission
150         // to use Geolococation.
151         virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*);
152         virtual void cancelGeolocationPermissionRequestForFrame(Frame*, Geolocation*) { }
153
154         virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
155         virtual void chooseIconForFiles(const Vector<String>&, FileChooser*);
156
157         virtual void setCursor(const Cursor&);
158
159         // Notification that the given form element has changed. This function
160         // will be called frequently, so handling should be very fast.
161         virtual void formStateDidChange(const Node*);
162     };
163
164 } // namespace WebCore
165
166 #endif
167