3d8d88c4f4454f5e49943d4f4c699b890b0cbdad
[WebKit-https.git] / Source / WebKit / UIProcess / API / wpe / PageClientImpl.h
1 /*
2  * Copyright (C) 2014 Igalia S.L.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #pragma once
27
28 #include "PageClient.h"
29 #include "WebFullScreenManagerProxy.h"
30
31 struct wpe_view_backend;
32
33 namespace WKWPE {
34 class View;
35 }
36
37 namespace WebCore {
38 enum class DOMPasteAccessResponse : uint8_t;
39 }
40
41 namespace WebKit {
42
43 class ScrollGestureController;
44
45 enum class UndoOrRedo : bool;
46
47 class PageClientImpl final : public PageClient
48 #if ENABLE(FULLSCREEN_API)
49     , public WebFullScreenManagerProxyClient
50 #endif
51 {
52 public:
53     PageClientImpl(WKWPE::View&);
54     virtual ~PageClientImpl();
55
56     struct wpe_view_backend* viewBackend();
57
58 private:
59     // PageClient
60     std::unique_ptr<DrawingAreaProxy> createDrawingAreaProxy(WebProcessProxy&) override;
61     void setViewNeedsDisplay(const WebCore::Region&) override;
62     void requestScroll(const WebCore::FloatPoint&, const WebCore::IntPoint&, bool) override;
63     WebCore::FloatPoint viewScrollPosition() override;
64     WebCore::IntSize viewSize() override;
65     bool isViewWindowActive() override;
66     bool isViewFocused() override;
67     bool isViewVisible() override;
68     bool isViewInWindow() override;
69
70     void processDidExit() override;
71     void didRelaunchProcess() override;
72     void pageClosed() override;
73     void preferencesDidChange() override;
74     void toolTipChanged(const String&, const String&) override;
75
76     void didCommitLoadForMainFrame(const String&, bool) override;
77     void handleDownloadRequest(DownloadProxy*) override;
78
79     void didChangeContentSize(const WebCore::IntSize&) override;
80
81     void setCursor(const WebCore::Cursor&) override;
82     void setCursorHiddenUntilMouseMoves(bool) override;
83     void didChangeViewportProperties(const WebCore::ViewportAttributes&) override;
84
85     void registerEditCommand(Ref<WebEditCommandProxy>&&, UndoOrRedo) override;
86     void clearAllEditCommands() override;
87     bool canUndoRedo(UndoOrRedo) override;
88     void executeUndoRedo(UndoOrRedo) override;
89
90     WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&) override;
91     WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&) override;
92     WebCore::IntPoint screenToRootView(const WebCore::IntPoint&) override;
93     WebCore::IntRect rootViewToScreen(const WebCore::IntRect&) override;
94     WebCore::IntPoint accessibilityScreenToRootView(const WebCore::IntPoint&) override;
95     WebCore::IntRect rootViewToAccessibilityScreen(const WebCore::IntRect&) override;
96
97     void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool) override;
98 #if ENABLE(TOUCH_EVENTS)
99     void doneWithTouchEvent(const NativeWebTouchEvent&, bool) override;
100 #endif
101     void wheelEventWasNotHandledByWebCore(const NativeWebWheelEvent&) override;
102
103     RefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy&) override;
104 #if ENABLE(CONTEXT_MENUS)
105     Ref<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, ContextMenuContextData&&, const UserData&) override;
106 #endif
107
108     void enterAcceleratedCompositingMode(const LayerTreeContext&) override;
109     void exitAcceleratedCompositingMode() override;
110     void updateAcceleratedCompositingMode(const LayerTreeContext&) override;
111
112     void didFinishLoadingDataForCustomContentProvider(const String&, const IPC::DataReference&) override;
113
114     void navigationGestureDidBegin() override;
115     void navigationGestureWillEnd(bool, WebBackForwardListItem&) override;
116     void navigationGestureDidEnd(bool, WebBackForwardListItem&) override;
117     void navigationGestureDidEnd() override;
118     void willRecordNavigationSnapshot(WebBackForwardListItem&) override;
119     void didRemoveNavigationGestureSnapshot() override;
120
121     void didStartProvisionalLoadForMainFrame() override;
122     void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
123     void didFinishLoadForMainFrame() override;
124     void didFailLoadForMainFrame() override;
125     void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
126
127     void didChangeBackgroundColor() override;
128     void isPlayingAudioWillChange() final { }
129     void isPlayingAudioDidChange() final { }
130
131     void refView() override;
132     void derefView() override;
133
134 #if ENABLE(VIDEO) && USE(GSTREAMER)
135     bool decidePolicyForInstallMissingMediaPluginsPermissionRequest(InstallMissingMediaPluginsPermissionRequest&) override;
136 #endif
137
138     void didRestoreScrollPosition() override;
139
140 #if ENABLE(FULLSCREEN_API)
141     WebFullScreenManagerProxyClient& fullScreenManagerProxyClient() final;
142
143     void closeFullScreenManager() override;
144     bool isFullScreen() override;
145     void enterFullScreen() override;
146     void exitFullScreen() override;
147     void beganEnterFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame) override;
148     void beganExitFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame) override;
149 #endif
150
151     void didFinishProcessingAllPendingMouseEvents() final { }
152
153     IPC::Attachment hostFileDescriptor() final;
154     void requestDOMPasteAccess(const WebCore::IntRect&, const String&, CompletionHandler<void(WebCore::DOMPasteAccessResponse)>&&) final;
155
156     WebCore::UserInterfaceLayoutDirection userInterfaceLayoutDirection() override;
157
158     WKWPE::View& m_view;
159
160     std::unique_ptr<ScrollGestureController> m_scrollGestureController;
161 };
162
163 } // namespace WebKit