1bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen/*
265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2010 Apple Inc. All rights reserved.
365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen *
5bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * Redistribution and use in source and binary forms, with or without
6bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * modification, are permitted provided that the following conditions
7bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * are met:
8bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * 1. Redistributions of source code must retain the above copyright
9bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen *    notice, this list of conditions and the following disclaimer.
10bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * 2. Redistributions in binary form must reproduce the above copyright
11bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen *    notice, this list of conditions and the following disclaimer in the
12bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen *    documentation and/or other materials provided with the distribution.
13bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen *
1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THE POSSIBILITY OF SUCH DAMAGE.
25bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen */
26bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef WebChromeClient_h
2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define WebChromeClient_h
29bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/ChromeClient.h>
3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/ViewportArguments.h>
3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/text/WTFString.h>
33bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
34bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsennamespace WebKit {
35bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebFrame;
3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebPage;
38bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass WebChromeClient : public WebCore::ChromeClient {
4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic:
4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebChromeClient(WebPage* page)
422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block        : m_cachedMainFrameHasHorizontalScrollbar(false)
432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block        , m_cachedMainFrameHasVerticalScrollbar(false)
442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block        , m_page(page)
4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebPage* page() const { return m_page; }
492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
5054cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block    virtual void* webView() const { return 0; }
5154cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block
5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochprivate:
53bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void chromeDestroyed();
5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
55bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void setWindowRect(const WebCore::FloatRect&);
56bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual WebCore::FloatRect windowRect();
5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
58bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual WebCore::FloatRect pageRect();
5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
60bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual float scaleFactor();
6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
62bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void focus();
63bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void unfocus();
6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
65bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual bool canTakeFocus(WebCore::FocusDirection);
66bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void takeFocus(WebCore::FocusDirection);
67bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
68bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void focusedNodeChanged(WebCore::Node*);
696b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner    virtual void focusedFrameChanged(WebCore::Frame*);
70bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
71bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    // The Frame pointer provides the ChromeClient with context about which
72bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    // Frame wants to create the new Page.  Also, the newly created window
73bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    // should not be shown to the user until the ChromeClient of the newly
74bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    // created Page has its show method called.
75e14391e94c850b8bd03680c23b38978db68687a8John Reck    virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&);
76bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void show();
7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
78bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual bool canRunModal();
79bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void runModal();
8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
81bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void setToolbarsVisible(bool);
82bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual bool toolbarsVisible();
8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
84bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void setStatusbarVisible(bool);
85bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual bool statusbarVisible();
8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
87bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void setScrollbarsVisible(bool);
88bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual bool scrollbarsVisible();
8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
90bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void setMenubarVisible(bool);
91bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual bool menubarVisible();
9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
93bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void setResizable(bool);
9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void addMessageToConsole(WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel, const String& message, unsigned int lineNumber, const String& sourceID);
9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
97bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual bool canRunBeforeUnloadConfirmPanel();
9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool runBeforeUnloadConfirmPanel(const String& message, WebCore::Frame* frame);
9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
100bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void closeWindowSoon();
10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void runJavaScriptAlert(WebCore::Frame*, const String&);
10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool runJavaScriptConfirm(WebCore::Frame*, const String&);
10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool runJavaScriptPrompt(WebCore::Frame*, const String& message, const String& defaultValue, String& result);
10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void setStatusbarText(const String&);
106bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual bool shouldInterruptJavaScript();
10781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
10881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual WebCore::KeyboardUIMode keyboardUIMode();
10981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
110bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual WebCore::IntRect windowResizerRect() const;
11165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
112bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    // Methods used by HostWindow.
113bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void invalidateWindow(const WebCore::IntRect&, bool);
114bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool);
115bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool);
116ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    virtual void scroll(const WebCore::IntSize& scrollOffset, const WebCore::IntRect& scrollRect, const WebCore::IntRect& clipRect);
11765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TILED_BACKING_STORE)
1182bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual void delegatedScrollRequested(const WebCore::IntPoint& scrollOffset);
11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
120bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const;
121bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const;
122bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual PlatformPageClient platformPageClient() const;
123bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
124bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void scrollRectIntoView(const WebCore::IntRect&, const WebCore::ScrollView*) const; // Currently only Mac has a non empty implementation.
125bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    // End methods used by HostWindow.
126bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
12765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool shouldMissingPluginMessageBeButton() const;
12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void missingPluginButtonClicked(WebCore::Element*) const;
129bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void scrollbarsModeDidChange() const;
13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void setToolTip(const String&, WebCore::TextDirection);
13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
135bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void print(WebCore::Frame*);
13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
137bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if ENABLE(DATABASE)
13865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void exceededDatabaseQuota(WebCore::Frame*, const String& databaseName);
139bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif
140bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
141bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if ENABLE(OFFLINE_WEB_APPLICATIONS)
142cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
143cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*);
144bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif
145bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(DASHBOARD_SUPPORT)
14765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void dashboardRegionsChanged();
148bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif
149bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
15065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void populateVisitedLinks();
15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual WebCore::FloatRect customHighlightRect(WebCore::Node*, const WTF::AtomicString& type, const WebCore::FloatRect& lineRect);
15365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void paintCustomHighlight(WebCore::Node*, const WTF::AtomicString& type, const WebCore::FloatRect& boxRect, const WebCore::FloatRect& lineRect,
15465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                                      bool behindText, bool entireLine);
15565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool shouldReplaceWithGeneratedFileForUpload(const String& path, String& generatedFilename);
15765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual String generateReplacementFile(const String& path);
15865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool paintCustomScrollbar(WebCore::GraphicsContext*, const WebCore::FloatRect&, WebCore::ScrollbarControlSize,
16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                                      WebCore::ScrollbarControlState, WebCore::ScrollbarPart pressedPart, bool vertical,
16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                                      float value, float proportion, WebCore::ScrollbarControlPartMask);
16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool paintCustomScrollCorner(WebCore::GraphicsContext*, const WebCore::FloatRect&);
1632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
1642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual bool paintCustomOverhangArea(WebCore::GraphicsContext*, const WebCore::IntRect&, const WebCore::IntRect&, const WebCore::IntRect&);
1652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
16665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // This is an asynchronous call. The ChromeClient can display UI asking the user for permission
16765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    // to use Geolococation. The ChromeClient must call Geolocation::setShouldClearCache() appropriately.
168bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
169bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*);
1702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
171bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
17265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void chooseIconForFiles(const Vector<String>&, WebCore::FileChooser*);
173bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void setCursor(const WebCore::Cursor&);
1752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
176bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    // Notification that the given form element has changed. This function
177bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    // will be called frequently, so handling should be very fast.
178bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void formStateDidChange(const WebCore::Node*);
1792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void formDidFocus(const WebCore::Node*);
18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void formDidBlur(const WebCore::Node*);
182bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
18365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool selectItemWritingDirectionIsNatural();
1842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual bool selectItemAlignmentFollowsMenuWritingDirection();
18565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
18665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
18765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
18865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(CONTEXT_MENUS)
18965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void showContextMenu();
19065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
19165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
192bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if USE(ACCELERATED_COMPOSITING)
193bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*);
194bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void setNeedsOneShotDrawingSynchronization();
195bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void scheduleCompositingLayerSync();
196bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif
197bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
19865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(NOTIFICATIONS)
19965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual WebCore::NotificationPresenter* notificationPresenter() const;
20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
201bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
202bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if ENABLE(TOUCH_EVENTS)
203bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual void needTouchEvents(bool);
204bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif
205bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
20665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(WIN)
20765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void setLastSetCursorToCurrentCursor();
20865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
209bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
2102bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API)
2112bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard);
2122bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual void enterFullScreenForElement(WebCore::Element*);
2132bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual void exitFullScreenForElement(WebCore::Element*);
2142bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual void setRootFullScreenLayer(WebCore::GraphicsLayer*);
2152bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
2162bde8e466a4451c7319e3a072d118917957d6554Steve Block
21765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void dispatchViewportDataDidChange(const WebCore::ViewportArguments&) const;
21865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual void didCompleteRubberBandForMainFrame(const WebCore::IntSize&) const;
2202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    String m_cachedToolTip;
22265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    mutable RefPtr<WebFrame> m_cachedFrameSetLargestFrame;
2232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    mutable bool m_cachedMainFrameHasHorizontalScrollbar;
2242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    mutable bool m_cachedMainFrameHasVerticalScrollbar;
2252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
22665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebPage* m_page;
227bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen};
228bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
229bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen} // namespace WebKit
230bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
23165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // WebChromeClient_h
232