Refactor and improve TextIndicator to prepare for tests
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / gtk / PageClientImpl.h
1
2 /*
3  * Copyright (C) 2010 Apple Inc. All rights reserved.
4  * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
5  * Copyright (C) 2011 Igalia S.L.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26  * THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #ifndef PageClientImpl_h
30 #define PageClientImpl_h
31
32 #include "DefaultUndoController.h"
33 #include "PageClient.h"
34 #include "WebFullScreenManagerProxy.h"
35 #include "WebPageProxy.h"
36 #include <WebCore/IntSize.h>
37 #include <gtk/gtk.h>
38 #include <memory>
39
40 namespace WebKit {
41
42 class DrawingAreaProxy;
43 class WebPageNamespace;
44
45 class PageClientImpl : public PageClient
46 #if ENABLE(FULLSCREEN_API)
47     , public WebFullScreenManagerProxyClient
48 #endif
49 {
50 public:
51     explicit PageClientImpl(GtkWidget*);
52
53     GtkWidget* viewWidget() { return m_viewWidget; }
54
55 private:
56     // PageClient
57     virtual std::unique_ptr<DrawingAreaProxy> createDrawingAreaProxy() override;
58     virtual void setViewNeedsDisplay(const WebCore::IntRect&) override;
59     virtual void displayView() override;
60     virtual bool canScrollView() override { return false; }
61     virtual void scrollView(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset) override;
62     virtual void requestScroll(const WebCore::FloatPoint& scrollPosition, const WebCore::IntPoint& scrollOrigin, bool isProgrammaticScroll) override;
63     virtual WebCore::IntSize viewSize() override;
64     virtual bool isViewWindowActive() override;
65     virtual bool isViewFocused() override;
66     virtual bool isViewVisible() override;
67     virtual bool isViewInWindow() override;
68     virtual void processDidExit() override;
69     virtual void didRelaunchProcess() override;
70     virtual void pageClosed() override;
71     virtual void preferencesDidChange() override;
72     virtual void toolTipChanged(const WTF::String&, const WTF::String&) override;
73     virtual void setCursor(const WebCore::Cursor&) override;
74     virtual void setCursorHiddenUntilMouseMoves(bool) override;
75     virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&) override;
76     virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo) override;
77     virtual void clearAllEditCommands() override;
78     virtual bool canUndoRedo(WebPageProxy::UndoOrRedo) override;
79     virtual void executeUndoRedo(WebPageProxy::UndoOrRedo) override;
80     virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&) override;
81     virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&) override;
82     virtual WebCore::IntPoint screenToRootView(const WebCore::IntPoint&) override;
83     virtual WebCore::IntRect rootViewToScreen(const WebCore::IntRect&) override;
84     virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled) override;
85     virtual RefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*) override;
86     virtual RefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*) override;
87 #if ENABLE(INPUT_TYPE_COLOR)
88     virtual RefPtr<WebColorPicker> createColorPicker(WebPageProxy*, const WebCore::Color& intialColor, const WebCore::IntRect&) override;
89 #endif
90     virtual void selectionDidChange() override;
91 #if ENABLE(DRAG_SUPPORT)
92     virtual void startDrag(const WebCore::DragData&, PassRefPtr<ShareableBitmap> dragImage) override;
93 #endif
94
95     virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
96     virtual void exitAcceleratedCompositingMode() override;
97     virtual void updateAcceleratedCompositingMode(const LayerTreeContext&) override;
98
99     virtual void handleDownloadRequest(DownloadProxy*) override;
100     virtual void didChangeContentSize(const WebCore::IntSize&) override { }
101     virtual void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) override;
102     virtual void didFailLoadForMainFrame() override { }
103
104     // Auxiliary Client Creation
105 #if ENABLE(FULLSCREEN_API)
106     virtual WebFullScreenManagerProxyClient& fullScreenManagerProxyClient() final;
107 #endif
108
109 #if ENABLE(FULLSCREEN_API)
110     // WebFullScreenManagerProxyClient
111     virtual void closeFullScreenManager() override;
112     virtual bool isFullScreen() override;
113     virtual void enterFullScreen() override;
114     virtual void exitFullScreen() override;
115     virtual void beganEnterFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame) override;
116     virtual void beganExitFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame) override;
117 #endif
118
119     virtual void didFinishLoadingDataForCustomContentProvider(const String& suggestedFilename, const IPC::DataReference&) override;
120
121     virtual void navigationGestureDidBegin() override;
122     virtual void navigationGestureWillEnd(bool, WebBackForwardListItem&) override;
123     virtual void navigationGestureDidEnd(bool, WebBackForwardListItem&) override;
124     virtual void navigationGestureDidEnd() override;
125     virtual void willRecordNavigationSnapshot(WebBackForwardListItem&) override;
126
127     virtual void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
128     virtual void didFinishLoadForMainFrame() override;
129     virtual void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
130
131     virtual void doneWithTouchEvent(const NativeWebTouchEvent&, bool wasEventHandled) override;
132
133     virtual void didChangeBackgroundColor() override;
134
135 #if ENABLE(VIDEO)
136     virtual void mediaDocumentNaturalSizeChanged(const WebCore::IntSize&) override { }
137 #endif
138
139     virtual void refView() override;
140     virtual void derefView() override;
141
142 #if ENABLE(VIDEO)
143     virtual bool decicePolicyForInstallMissingMediaPluginsPermissionRequest(InstallMissingMediaPluginsPermissionRequest&) override;
144 #endif
145
146     // Members of PageClientImpl class
147     GtkWidget* m_viewWidget;
148     DefaultUndoController m_undoController;
149 };
150
151 } // namespace WebKit
152
153 #endif // PageClientImpl_h