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