Remove unused ChromeClient::formStateDidChange().
[WebKit-https.git] / Source / WebKit2 / WebProcess / WebCoreSupport / WebChromeClient.h
1 /*
2  * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved.
3  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
15  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
18  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
24  * THE POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 #ifndef WebChromeClient_h
28 #define WebChromeClient_h
29
30 #include <WebCore/ChromeClient.h>
31 #include <WebCore/ViewportArguments.h>
32 #include <wtf/text/WTFString.h>
33
34 namespace WebKit {
35
36 class WebFrame;
37 class WebPage;
38
39 class WebChromeClient : public WebCore::ChromeClient {
40 public:
41     WebChromeClient(WebPage* page)
42         : m_cachedMainFrameHasHorizontalScrollbar(false)
43         , m_cachedMainFrameHasVerticalScrollbar(false)
44         , m_page(page)
45     {
46     }
47     
48     WebPage* page() const { return m_page; }
49
50     virtual void* webView() const { return 0; }
51
52 private:
53     virtual void chromeDestroyed() override;
54     
55     virtual void setWindowRect(const WebCore::FloatRect&) override;
56     virtual WebCore::FloatRect windowRect() override;
57     
58     virtual WebCore::FloatRect pageRect() override;
59     
60     virtual void focus() override;
61     virtual void unfocus() override;
62     
63     virtual bool canTakeFocus(WebCore::FocusDirection) override;
64     virtual void takeFocus(WebCore::FocusDirection) override;
65
66     virtual void focusedElementChanged(WebCore::Element*) override;
67     virtual void focusedFrameChanged(WebCore::Frame*) override;
68
69     // The Frame pointer provides the ChromeClient with context about which
70     // Frame wants to create the new Page.  Also, the newly created window
71     // should not be shown to the user until the ChromeClient of the newly
72     // created Page has its show method called.
73     virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&) override;
74     virtual void show() override;
75     
76     virtual bool canRunModal() override;
77     virtual void runModal() override;
78     
79     virtual void setToolbarsVisible(bool) override;
80     virtual bool toolbarsVisible() override;
81     
82     virtual void setStatusbarVisible(bool) override;
83     virtual bool statusbarVisible() override;
84     
85     virtual void setScrollbarsVisible(bool) override;
86     virtual bool scrollbarsVisible() override;
87     
88     virtual void setMenubarVisible(bool) override;
89     virtual bool menubarVisible() override;
90     
91     virtual void setResizable(bool) override;
92     
93     virtual void addMessageToConsole(Inspector::MessageSource, Inspector::MessageLevel, const String& message, unsigned lineNumber, unsigned columnNumber, const String& sourceID) override;
94     
95     virtual bool canRunBeforeUnloadConfirmPanel() override;
96     virtual bool runBeforeUnloadConfirmPanel(const String& message, WebCore::Frame*) override;
97     
98     virtual void closeWindowSoon() override;
99     
100     virtual void runJavaScriptAlert(WebCore::Frame*, const String&) override;
101     virtual bool runJavaScriptConfirm(WebCore::Frame*, const String&) override;
102     virtual bool runJavaScriptPrompt(WebCore::Frame*, const String& message, const String& defaultValue, String& result) override;
103     virtual void setStatusbarText(const String&) override;
104     virtual bool shouldInterruptJavaScript() override;
105
106     virtual WebCore::KeyboardUIMode keyboardUIMode() override;
107
108     virtual WebCore::IntRect windowResizerRect() const override;
109     
110     // HostWindow member function overrides.
111     virtual void invalidateRootView(const WebCore::IntRect&, bool) override;
112     virtual void invalidateContentsAndRootView(const WebCore::IntRect&, bool) override;
113     virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool) override;
114     virtual void scroll(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& scrollRect, const WebCore::IntRect& clipRect) override;
115 #if USE(TILED_BACKING_STORE)
116     virtual void delegatedScrollRequested(const WebCore::IntPoint& scrollOffset) override;
117 #endif
118     virtual WebCore::IntPoint screenToRootView(const WebCore::IntPoint&) const override;
119     virtual WebCore::IntRect rootViewToScreen(const WebCore::IntRect&) const override;
120     virtual PlatformPageClient platformPageClient() const override;
121     virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const override;
122     virtual void scrollRectIntoView(const WebCore::IntRect&) const override; // Currently only Mac has a non empty implementation.
123
124     virtual bool shouldUnavailablePluginMessageBeButton(WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const override;
125     virtual void unavailablePluginButtonClicked(WebCore::Element*, WebCore::RenderEmbeddedObject::PluginUnavailabilityReason) const override;
126
127     virtual void scrollbarsModeDidChange() const override;
128     virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags) override;
129     
130     virtual void setToolTip(const String&, WebCore::TextDirection) override;
131     
132     virtual void print(WebCore::Frame*) override;
133     
134 #if ENABLE(SQL_DATABASE)
135     virtual void exceededDatabaseQuota(WebCore::Frame*, const String& databaseName, WebCore::DatabaseDetails) override;
136 #endif
137
138     virtual void reachedMaxAppCacheSize(int64_t spaceNeeded) override;
139     virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*, int64_t spaceNeeded) override;
140
141 #if ENABLE(DASHBOARD_SUPPORT)
142     virtual void annotatedRegionsChanged() override;
143 #endif
144
145     virtual void populateVisitedLinks() override;
146     
147     virtual bool shouldReplaceWithGeneratedFileForUpload(const String& path, String& generatedFilename) override;
148     virtual String generateReplacementFile(const String& path) override;
149     
150 #if ENABLE(INPUT_TYPE_COLOR)
151     virtual PassOwnPtr<WebCore::ColorChooser> createColorChooser(WebCore::ColorChooserClient*, const WebCore::Color&) override;
152 #endif
153
154 #if ENABLE(IOS_TOUCH_EVENTS)
155     virtual void didPreventDefaultForEvent() override;
156 #endif
157
158 #if PLATFORM(IOS)
159     virtual void didReceiveMobileDocType() override;
160     virtual void setNeedsScrollNotifications(WebCore::Frame*, bool) override;
161     virtual void observedContentChange(WebCore::Frame*) override;
162     virtual void clearContentChangeObservers(WebCore::Frame*) override;
163     virtual void notifyRevealedSelectionByScrollingFrame(WebCore::Frame*) override;
164     virtual bool isStopping() override;
165
166     virtual void didLayout(LayoutType = NormalLayout) override;
167     virtual void didStartOverflowScroll() override;
168     virtual void didEndOverflowScroll() override;
169
170     // FIXME: See <rdar://problem/5975559>
171     virtual void suppressFormNotifications() override;
172     virtual void restoreFormNotifications() override;
173
174     virtual void addOrUpdateScrollingLayer(WebCore::Node*, PlatformLayer* scrollingLayer, PlatformLayer* contentsLayer, const WebCore::IntSize& scrollSize, bool allowHorizontalScrollbar, bool allowVerticalScrollbar) override;
175     virtual void removeScrollingLayer(WebCore::Node*, PlatformLayer* scrollingLayer, PlatformLayer* contentsLayer) override;
176
177     virtual void webAppOrientationsUpdated() override;
178 #endif
179
180     virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>) override;
181     virtual void loadIconForFiles(const Vector<String>&, WebCore::FileIconLoader*) override;
182
183 #if !PLATFORM(IOS)
184     virtual void setCursor(const WebCore::Cursor&) override;
185     virtual void setCursorHiddenUntilMouseMoves(bool) override;
186 #endif
187 #if ENABLE(REQUEST_ANIMATION_FRAME) && !USE(REQUEST_ANIMATION_FRAME_TIMER)
188     virtual void scheduleAnimation() override;
189 #endif
190
191     virtual void didAssociateFormControls(const Vector<RefPtr<WebCore::Element>>&) override;
192     virtual bool shouldNotifyOnFormChanges() override;
193
194     virtual bool selectItemWritingDirectionIsNatural() override;
195     virtual bool selectItemAlignmentFollowsMenuWritingDirection() override;
196     virtual bool hasOpenedPopup() const override;
197     virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const override;
198     virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const override;
199
200     virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() const override;
201     virtual void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
202     virtual void setNeedsOneShotDrawingSynchronization() override;
203     virtual void scheduleCompositingLayerFlush() override;
204
205     virtual CompositingTriggerFlags allowedCompositingTriggers() const
206     {
207         return static_cast<CompositingTriggerFlags>(
208             ThreeDTransformTrigger |
209             VideoTrigger |
210             PluginTrigger| 
211             CanvasTrigger |
212 #if PLATFORM(IOS)
213             AnimatedOpacityTrigger | // Allow opacity animations to trigger compositing mode for iPhone: <rdar://problem/7830677>
214 #endif
215             AnimationTrigger);
216     }
217
218     virtual bool layerTreeStateIsFrozen() const override;
219
220 #if ENABLE(ASYNC_SCROLLING)
221     virtual PassRefPtr<WebCore::ScrollingCoordinator> createScrollingCoordinator(WebCore::Page*) const override;
222 #endif
223
224 #if ENABLE(TOUCH_EVENTS)
225     virtual void needTouchEvents(bool) override { }
226 #endif
227
228 #if PLATFORM(IOS)
229     virtual void elementDidFocus(const WebCore::Node*) override;
230     virtual void elementDidBlur(const WebCore::Node*) override;
231 #endif
232
233 #if PLATFORM(IOS)
234     virtual bool supportsFullscreenForNode(const WebCore::Node*);
235     virtual void enterFullscreenForNode(WebCore::Node*);
236     virtual void exitFullscreenForNode(WebCore::Node*);
237 #endif
238
239 #if ENABLE(FULLSCREEN_API)
240     virtual bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) override;
241     virtual void enterFullScreenForElement(WebCore::Element*) override;
242     virtual void exitFullScreenForElement(WebCore::Element*) override;
243 #endif
244
245 #if PLATFORM(MAC)
246     virtual void makeFirstResponder() override;
247 #endif
248
249     virtual void enableSuddenTermination() override;
250     virtual void disableSuddenTermination() override;
251     
252     virtual void dispatchViewportPropertiesDidChange(const WebCore::ViewportArguments&) const override;
253
254     virtual void notifyScrollerThumbIsVisibleInRect(const WebCore::IntRect&) override;
255     virtual void recommendedScrollbarStyleDidChange(int32_t newStyle) override;
256
257     virtual WebCore::Color underlayColor() const override;
258     
259     virtual void numWheelEventHandlersChanged(unsigned) override;
260
261     virtual void logDiagnosticMessage(const String& message, const String& description, const String& success) override;
262
263     virtual String plugInStartLabelTitle(const String& mimeType) const override;
264     virtual String plugInStartLabelSubtitle(const String& mimeType) const override;
265     virtual String plugInExtraStyleSheet() const override;
266     virtual String plugInExtraScript() const override;
267
268     virtual void didAddHeaderLayer(WebCore::GraphicsLayer*) override;
269     virtual void didAddFooterLayer(WebCore::GraphicsLayer*) override;
270
271     virtual bool shouldUseTiledBackingForFrameView(const WebCore::FrameView*) const override;
272
273     String m_cachedToolTip;
274     mutable RefPtr<WebFrame> m_cachedFrameSetLargestFrame;
275     mutable bool m_cachedMainFrameHasHorizontalScrollbar;
276     mutable bool m_cachedMainFrameHasVerticalScrollbar;
277
278     WebPage* m_page;
279 };
280
281 } // namespace WebKit
282
283 #endif // WebChromeClient_h