18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Holger Hans Peter Freyther
3db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ChromeClientGtk_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ChromeClientGtk_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ChromeClient.h"
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "KURL.h"
26db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "PopupMenu.h"
27db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "SearchPopupMenu.h"
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct _WebKitWebView WebKitWebView;
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
31db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blocknamespace WebCore {
32db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockclass PopupMenuClient;
33db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block}
34db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebKit {
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class ChromeClient : public WebCore::ChromeClient {
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    public:
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        ChromeClient(WebKitWebView*);
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        WebKitWebView* webView() const { return m_webView; }
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void chromeDestroyed();
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setWindowRect(const WebCore::FloatRect&);
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual WebCore::FloatRect windowRect();
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual WebCore::FloatRect pageRect();
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual float scaleFactor();
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void focus();
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void unfocus();
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool canTakeFocus(WebCore::FocusDirection);
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void takeFocus(WebCore::FocusDirection);
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        virtual void focusedNodeChanged(WebCore::Node*);
5828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void focusedFrameChanged(WebCore::Frame*);
59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
60e14391e94c850b8bd03680c23b38978db68687a8John Reck        virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&);
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void show();
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool canRunModal();
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void runModal();
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setToolbarsVisible(bool);
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool toolbarsVisible();
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setStatusbarVisible(bool);
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool statusbarVisible();
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setScrollbarsVisible(bool);
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool scrollbarsVisible();
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setMenubarVisible(bool);
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool menubarVisible();
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void setResizable(bool);
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type,
81dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch                                         WebCore::MessageLevel level, const WTF::String& message,
82dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch                                         unsigned int lineNumber, const WTF::String& sourceID);
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool canRunBeforeUnloadConfirmPanel();
85dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame);
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void closeWindowSoon();
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
89dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
90dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
91dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
92dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual void setStatusbarText(const WTF::String&);
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool shouldInterruptJavaScript();
9481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        virtual WebCore::KeyboardUIMode keyboardUIMode();
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual WebCore::IntRect windowResizerRect() const;
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
98dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        virtual void invalidateWindow(const WebCore::IntRect&, bool);
99dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool);
100dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool);
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void scroll(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& rectToScroll, const WebCore::IntRect& clipRect);
102dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const;
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const;
105231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        virtual PlatformPageClient platformPageClient() const;
106635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
108231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block        virtual void scrollbarsModeDidChange() const;
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
111dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
113f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        virtual void dispatchViewportDataDidChange(const WebCore::ViewportArguments& arguments) const;
114f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void print(WebCore::Frame*);
1168ccf722629b08f2a06b2cadbdc3d0c9dc885e25dBen Murdoch#if ENABLE(DATABASE)
117dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String&);
1188ccf722629b08f2a06b2cadbdc3d0c9dc885e25dBen Murdoch#endif
119c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu#if ENABLE(OFFLINE_WEB_APPLICATIONS)
120c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu        virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
121db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*);
122c60802dd50f86c37e0596d41c3ef6fc2c8804da4Andrei Popescu#endif
12328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#if ENABLE(CONTEXT_MENUS)
12428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        virtual void showContextMenu() { }
12528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#endif
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
127dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
129635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project        virtual void formStateDidChange(const WebCore::Node*) { }
130635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
131967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch        virtual void setCursor(const WebCore::Cursor&);
1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        virtual void scrollRectIntoView(const WebCore::IntRect&, const WebCore::ScrollView*) const {}
1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
135dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*);
1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
137db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        virtual bool selectItemWritingDirectionIsNatural();
1382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block        virtual bool selectItemAlignmentFollowsMenuWritingDirection();
139db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
140db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block        virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
141e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#if ENABLE(VIDEO)
142e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block        virtual bool supportsFullscreenForNode(const WebCore::Node*);
143e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block        virtual void enterFullscreenForNode(WebCore::Node*);
144e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block        virtual void exitFullscreenForNode(WebCore::Node*);
145e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#endif
146db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
147f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if ENABLE(FULLSCREEN_API)
1482bde8e466a4451c7319e3a072d118917957d6554Steve Block        virtual bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard);
149f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        virtual void enterFullScreenForElement(WebCore::Element*);
150f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        virtual void exitFullScreenForElement(WebCore::Element*);
151f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif
152f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    private:
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        WebKitWebView* m_webView;
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        WebCore::KURL m_hoveredLinkURL;
156cad810f21b803229eb11403f9209855525a25d57Steve Block        unsigned int m_closeSoonTimer;
15781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        bool m_pendingScrollInvalidations;
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ChromeClient_h
162