2 * Copyright (C) 2007 Holger Hans Peter Freyther
3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
21 #ifndef ChromeClientGtk_h
22 #define ChromeClientGtk_h
24 #include "ChromeClient.h"
26 #include "PopupMenu.h"
27 #include "SearchPopupMenu.h"
29 typedef struct _WebKitWebView WebKitWebView;
32 class PopupMenuClient;
37 class ChromeClient : public WebCore::ChromeClient {
39 ChromeClient(WebKitWebView*);
40 WebKitWebView* webView() const { return m_webView; }
42 virtual void chromeDestroyed();
44 virtual void setWindowRect(const WebCore::FloatRect&);
45 virtual WebCore::FloatRect windowRect();
47 virtual WebCore::FloatRect pageRect();
49 virtual float scaleFactor();
52 virtual void unfocus();
54 virtual bool canTakeFocus(WebCore::FocusDirection);
55 virtual void takeFocus(WebCore::FocusDirection);
57 virtual void focusedNodeChanged(WebCore::Node*);
58 virtual void focusedFrameChanged(WebCore::Frame*);
60 virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&);
63 virtual bool canRunModal();
64 virtual void runModal();
66 virtual void setToolbarsVisible(bool);
67 virtual bool toolbarsVisible();
69 virtual void setStatusbarVisible(bool);
70 virtual bool statusbarVisible();
72 virtual void setScrollbarsVisible(bool);
73 virtual bool scrollbarsVisible();
75 virtual void setMenubarVisible(bool);
76 virtual bool menubarVisible();
78 virtual void setResizable(bool);
80 virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type,
81 WebCore::MessageLevel level, const WTF::String& message,
82 unsigned int lineNumber, const WTF::String& sourceID);
84 virtual bool canRunBeforeUnloadConfirmPanel();
85 virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame);
87 virtual void closeWindowSoon();
89 virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
90 virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
91 virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
92 virtual void setStatusbarText(const WTF::String&);
93 virtual bool shouldInterruptJavaScript();
94 virtual bool tabsToLinks() const;
96 virtual WebCore::IntRect windowResizerRect() const;
98 virtual void invalidateWindow(const WebCore::IntRect&, bool);
99 virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool);
100 virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool);
101 virtual void scroll(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& rectToScroll, const WebCore::IntRect& clipRect);
103 virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const;
104 virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const;
105 virtual PlatformPageClient platformPageClient() const;
106 virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
108 virtual void scrollbarsModeDidChange() const;
109 virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
111 virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
113 virtual void dispatchViewportDataDidChange(const WebCore::ViewportArguments& arguments) const;
115 virtual void print(WebCore::Frame*);
117 virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String&);
119 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
120 virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
121 virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*);
123 #if ENABLE(CONTEXT_MENUS)
124 virtual void showContextMenu() { }
126 virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
127 virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
129 virtual void formStateDidChange(const WebCore::Node*) { }
131 virtual PassOwnPtr<WebCore::HTMLParserQuirks> createHTMLParserQuirks() { return 0; }
133 virtual void setCursor(const WebCore::Cursor&);
135 virtual void scrollRectIntoView(const WebCore::IntRect&, const WebCore::ScrollView*) const {}
136 virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
137 virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*);
139 virtual bool selectItemWritingDirectionIsNatural();
140 virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
141 virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
143 virtual bool supportsFullscreenForNode(const WebCore::Node*);
144 virtual void enterFullscreenForNode(WebCore::Node*);
145 virtual void exitFullscreenForNode(WebCore::Node*);
149 WebKitWebView* m_webView;
150 WebCore::KURL m_hoveredLinkURL;
154 #endif // ChromeClient_h