Reviewed by Darin Adler.
[WebKit-https.git] / Source / WebKit / wx / WebKitSupport / ChromeClientWx.h
1 /*
2  * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
3  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4  *
5  * All rights reserved.
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 ChromeClientWx_H
30 #define ChromeClientWx_H
31
32 #include "ChromeClient.h"
33 #include "FocusDirection.h"
34 #include "IntRect.h"
35 #include "WebCoreKeyboardUIMode.h"
36 #include "WebView.h"
37
38 namespace WebCore {
39
40 class ChromeClientWx : public ChromeClient {
41 public:
42     ChromeClientWx(wxWebView*);
43     virtual ~ChromeClientWx();
44     virtual void chromeDestroyed();
45
46     virtual void setWindowRect(const FloatRect&);
47     virtual FloatRect windowRect();
48
49     virtual FloatRect pageRect();
50
51     virtual float scaleFactor();
52
53     virtual void focus();
54     virtual void unfocus();
55
56     virtual bool canTakeFocus(FocusDirection);
57     virtual void takeFocus(FocusDirection);
58
59     virtual void focusedNodeChanged(Node*);
60     virtual void focusedFrameChanged(Frame*);
61
62     virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&);
63     virtual Page* createModalDialog(Frame*, const FrameLoadRequest&);
64     virtual void show();
65
66     virtual bool canRunModal();
67     virtual void runModal();
68
69     virtual void setToolbarsVisible(bool);
70     virtual bool toolbarsVisible();
71
72     virtual void setStatusbarVisible(bool);
73     virtual bool statusbarVisible();
74
75     virtual void setScrollbarsVisible(bool);
76     virtual bool scrollbarsVisible();
77
78     virtual void setMenubarVisible(bool);
79     virtual bool menubarVisible();
80
81     virtual void setResizable(bool);
82
83     virtual void addMessageToConsole(MessageSource source,
84                                      MessageType type,
85                                      MessageLevel level,
86                                      const String& message,
87                                      unsigned int lineNumber,
88                                      const String& sourceID);
89
90     virtual bool canRunBeforeUnloadConfirmPanel();
91     virtual bool runBeforeUnloadConfirmPanel(const String& message,
92                                              Frame* frame);
93
94     virtual void closeWindowSoon();
95     
96     virtual void runJavaScriptAlert(Frame*, const String&);
97     virtual bool runJavaScriptConfirm(Frame*, const String&);
98     virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result);
99     virtual void setStatusbarText(const String&);
100     virtual bool shouldInterruptJavaScript();
101     
102     virtual WebCore::KeyboardUIMode keyboardUIMode();
103
104     virtual IntRect windowResizerRect() const;
105     virtual void scrollBackingStore(int dx, int dy, const IntRect& scrollViewRect, const IntRect& clipRect);
106     virtual void updateBackingStore();
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
118     virtual void scrollbarsModeDidChange() const { }
119     virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags);
120
121     virtual void setToolTip(const String&, TextDirection);
122
123     virtual void print(Frame*);
124
125 #if ENABLE(DATABASE)
126     virtual void exceededDatabaseQuota(Frame*, const String&);
127 #endif
128
129 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
130     virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
131     virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*);
132 #endif
133
134 #if ENABLE(CONTEXT_MENUS)
135     virtual void showContextMenu() { }
136 #endif
137
138     virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>);
139     virtual void chooseIconForFiles(const Vector<String>&, FileChooser*);
140
141     virtual void formStateDidChange(const Node*) { }
142
143     virtual void setCursor(const Cursor&);
144
145     virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const {}
146
147     virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*);
148     virtual void cancelGeolocationPermissionRequestForFrame(Frame*, Geolocation*) { }
149
150     virtual bool selectItemWritingDirectionIsNatural();
151     virtual bool selectItemAlignmentFollowsMenuWritingDirection();
152     virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const;
153     virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const;
154
155 private:
156     wxWebView* m_webView;
157 };
158
159 }
160 #endif // ChromeClientWx_H