Remove invalidateContents, it isn't used and it never makes sense to only invalidate...
[WebKit-https.git] / WebKit / chromium / src / ChromeClientImpl.h
1 /*
2  * Copyright (C) 2009 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #ifndef ChromeClientImpl_h
32 #define ChromeClientImpl_h
33
34 #include "ChromeClientChromium.h"
35
36 namespace WebCore {
37 class AccessibilityObject;
38 class HTMLParserQuirks;
39 class PopupContainer;
40 class SecurityOrigin;
41 struct WindowFeatures;
42 }
43
44 namespace WebKit {
45 class WebViewImpl;
46 struct WebCursorInfo;
47 struct WebPopupMenuInfo;
48
49 // Handles window-level notifications from WebCore on behalf of a WebView.
50 class ChromeClientImpl : public WebCore::ChromeClientChromium {
51 public:
52     explicit ChromeClientImpl(WebViewImpl* webView);
53     virtual ~ChromeClientImpl();
54
55     WebViewImpl* webView() const { return m_webView; }
56
57     // ChromeClient methods:
58     virtual void chromeDestroyed();
59     virtual void setWindowRect(const WebCore::FloatRect&);
60     virtual WebCore::FloatRect windowRect();
61     virtual WebCore::FloatRect pageRect();
62     virtual float scaleFactor();
63     virtual void focus();
64     virtual void unfocus();
65     virtual bool canTakeFocus(WebCore::FocusDirection);
66     virtual void takeFocus(WebCore::FocusDirection);
67     virtual void focusedNodeChanged(WebCore::Node*);
68     virtual WebCore::Page* createWindow(
69         WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&);
70     virtual void show();
71     virtual bool canRunModal();
72     virtual void runModal();
73     virtual void setToolbarsVisible(bool);
74     virtual bool toolbarsVisible();
75     virtual void setStatusbarVisible(bool);
76     virtual bool statusbarVisible();
77     virtual void setScrollbarsVisible(bool);
78     virtual bool scrollbarsVisible();
79     virtual void setMenubarVisible(bool);
80     virtual bool menubarVisible();
81     virtual void setResizable(bool);
82     virtual void addMessageToConsole(
83         WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel,
84         const WebCore::String& message, unsigned lineNumber,
85         const WebCore::String& sourceID);
86     virtual bool canRunBeforeUnloadConfirmPanel();
87     virtual bool runBeforeUnloadConfirmPanel(
88         const WebCore::String& message, WebCore::Frame*);
89     virtual void closeWindowSoon();
90     virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&);
91     virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&);
92     virtual bool runJavaScriptPrompt(
93         WebCore::Frame*, const WebCore::String& message,
94         const WebCore::String& defaultValue, WebCore::String& result);
95     virtual void setStatusbarText(const WebCore::String& message);
96     virtual bool shouldInterruptJavaScript();
97     virtual bool tabsToLinks() const;
98     virtual WebCore::IntRect windowResizerRect() const;
99     virtual void invalidateWindow(const WebCore::IntRect&, bool);
100     virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool);
101     virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool);
102     virtual void scroll(
103         const WebCore::IntSize& scrollDelta, const WebCore::IntRect& rectToScroll,
104         const WebCore::IntRect& clipRect);
105     virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const;
106     virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const;
107     virtual PlatformPageClient platformPageClient() const { return 0; }
108     virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
109     virtual void scrollRectIntoView(
110         const WebCore::IntRect&, const WebCore::ScrollView*) const { }
111     virtual void scrollbarsModeDidChange() const;
112     virtual void mouseDidMoveOverElement(
113         const WebCore::HitTestResult& result, unsigned modifierFlags);
114     virtual void setToolTip(const WebCore::String& tooltipText, WebCore::TextDirection);
115     virtual void print(WebCore::Frame*);
116     virtual void exceededDatabaseQuota(
117         WebCore::Frame*, const WebCore::String& databaseName);
118 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
119     virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
120 #endif
121 #if ENABLE(NOTIFICATIONS)
122     virtual WebCore::NotificationPresenter* notificationPresenter() const;
123 #endif
124     virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
125     virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*) { }
126     virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
127     virtual void iconForFiles(const Vector<WebCore::String>&, PassRefPtr<WebCore::FileChooser>);
128     virtual bool setCursor(WebCore::PlatformCursorHandle) { return false; }
129     virtual void formStateDidChange(const WebCore::Node*);
130     virtual PassOwnPtr<WebCore::HTMLParserQuirks> createHTMLParserQuirks() { return 0; }
131 #if ENABLE(TOUCH_EVENTS)
132     // FIXME: All touch events are forwarded regardless of whether or not they are needed.
133     virtual void needTouchEvents(bool needTouchEvents) { }
134 #endif
135
136     // ChromeClientChromium methods:
137     virtual void popupOpened(WebCore::PopupContainer* popupContainer,
138                              const WebCore::IntRect& bounds,
139                              bool activatable,
140                              bool handleExternally);
141     virtual void didChangeAccessibilityObjectState(WebCore::AccessibilityObject*);
142
143     // ChromeClientImpl:
144     void setCursor(const WebCursorInfo& cursor);
145     void setCursorForPlugin(const WebCursorInfo& cursor);
146
147 private:
148     void getPopupMenuInfo(WebCore::PopupContainer*, WebPopupMenuInfo*);
149
150     WebViewImpl* m_webView;  // weak pointer
151     bool m_toolbarsVisible;
152     bool m_statusbarVisible;
153     bool m_scrollbarsVisible;
154     bool m_menubarVisible;
155     bool m_resizable;
156     // Set to true if the next SetCursor is to be ignored.
157     bool m_ignoreNextSetCursor;
158 };
159
160 } // namespace WebKit
161
162 #endif