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