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