/* * Copyright (C) 2010 Apple Inc. All rights reserved. * Portions Copyright (c) 2010 Motorola Mobility, Inc. All rights reserved. * Copyright (C) 2011 Igalia S.L. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PageClientImpl_h #define PageClientImpl_h #include "DefaultUndoController.h" #include "PageClient.h" #include "WebFullScreenManagerProxy.h" #include "WebPageProxy.h" #include #include #include namespace WebKit { class DrawingAreaProxy; class WebPageNamespace; class PageClientImpl : public PageClient #if ENABLE(FULLSCREEN_API) , public WebFullScreenManagerProxyClient #endif { public: explicit PageClientImpl(GtkWidget*); GtkWidget* viewWidget() { return m_viewWidget; } private: // PageClient std::unique_ptr createDrawingAreaProxy() override; void setViewNeedsDisplay(const WebCore::Region&) override; void requestScroll(const WebCore::FloatPoint& scrollPosition, const WebCore::IntPoint& scrollOrigin, bool isProgrammaticScroll) override; WebCore::IntSize viewSize() override; bool isViewWindowActive() override; bool isViewFocused() override; bool isViewVisible() override; bool isViewInWindow() override; void processDidExit() override; void didRelaunchProcess() override; void pageClosed() override; void preferencesDidChange() override; void toolTipChanged(const WTF::String&, const WTF::String&) override; void setCursor(const WebCore::Cursor&) override; void setCursorHiddenUntilMouseMoves(bool) override; void didChangeViewportProperties(const WebCore::ViewportAttributes&) override; void registerEditCommand(PassRefPtr, WebPageProxy::UndoOrRedo) override; void clearAllEditCommands() override; bool canUndoRedo(WebPageProxy::UndoOrRedo) override; void executeUndoRedo(WebPageProxy::UndoOrRedo) override; WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&) override; WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&) override; WebCore::IntPoint screenToRootView(const WebCore::IntPoint&) override; WebCore::IntRect rootViewToScreen(const WebCore::IntRect&) override; void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled) override; RefPtr createPopupMenuProxy(WebPageProxy&) override; std::unique_ptr createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) override; #if ENABLE(INPUT_TYPE_COLOR) RefPtr createColorPicker(WebPageProxy*, const WebCore::Color& intialColor, const WebCore::IntRect&) override; #endif void selectionDidChange() override; #if ENABLE(DRAG_SUPPORT) void startDrag(Ref&&, WebCore::DragOperation, RefPtr&& dragImage) override; #endif void enterAcceleratedCompositingMode(const LayerTreeContext&) override; void exitAcceleratedCompositingMode() override; void updateAcceleratedCompositingMode(const LayerTreeContext&) override; void handleDownloadRequest(DownloadProxy*) override; void didChangeContentSize(const WebCore::IntSize&) override; void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) override; void didFailLoadForMainFrame() override { } // Auxiliary Client Creation #if ENABLE(FULLSCREEN_API) WebFullScreenManagerProxyClient& fullScreenManagerProxyClient() final; #endif #if ENABLE(FULLSCREEN_API) // WebFullScreenManagerProxyClient void closeFullScreenManager() override; bool isFullScreen() override; void enterFullScreen() override; void exitFullScreen() override; void beganEnterFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame) override; void beganExitFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame) override; #endif void didFinishLoadingDataForCustomContentProvider(const String& suggestedFilename, const IPC::DataReference&) override; void navigationGestureDidBegin() override; void navigationGestureWillEnd(bool, WebBackForwardListItem&) override; void navigationGestureDidEnd(bool, WebBackForwardListItem&) override; void navigationGestureDidEnd() override; void willRecordNavigationSnapshot(WebBackForwardListItem&) override; void didRemoveNavigationGestureSnapshot() override; void didFirstVisuallyNonEmptyLayoutForMainFrame() override; void didFinishLoadForMainFrame() override; void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override; #if ENABLE(TOUCH_EVENTS) void doneWithTouchEvent(const NativeWebTouchEvent&, bool wasEventHandled) override; #endif void wheelEventWasNotHandledByWebCore(const NativeWebWheelEvent&) override; void didChangeBackgroundColor() override; void refView() override; void derefView() override; void didRestoreScrollPosition() override { } #if ENABLE(VIDEO) && USE(GSTREAMER) bool decidePolicyForInstallMissingMediaPluginsPermissionRequest(InstallMissingMediaPluginsPermissionRequest&) override; #endif WebCore::UserInterfaceLayoutDirection userInterfaceLayoutDirection() override { return WebCore::UserInterfaceLayoutDirection::LTR; } // Members of PageClientImpl class GtkWidget* m_viewWidget; DefaultUndoController m_undoController; }; } // namespace WebKit #endif // PageClientImpl_h