Pass the key_press_event or key_release_event to parent widget when it is not handled...
[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 "KeyBindingTranslator.h"
32 #include "PageClient.h"
33 #include "WebPageProxy.h"
34 #include "WindowsKeyboardCodes.h"
35 #include <WebCore/IntSize.h>
36 #include <gtk/gtk.h>
37
38 namespace WebKit {
39
40 class DrawingAreaProxy;
41 class WebPageNamespace;
42
43 class PageClientImpl : public PageClient {
44 public:
45     ~PageClientImpl();
46     static PassOwnPtr<PageClientImpl> create(GtkWidget* viewWidget)
47     {
48         return adoptPtr(new PageClientImpl(viewWidget));
49     }
50
51     GtkWidget* viewWidget() { return m_viewWidget; }
52
53 private:
54     PageClientImpl(GtkWidget*);
55
56     virtual PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy();
57     virtual void setViewNeedsDisplay(const WebCore::IntRect&);
58     virtual void displayView();
59     virtual void scrollView(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset);
60     virtual WebCore::IntSize viewSize();
61     virtual bool isViewWindowActive();
62     virtual bool isViewFocused();
63     virtual bool isViewVisible();
64     virtual bool isViewInWindow();
65     virtual void processDidCrash();
66     virtual void didRelaunchProcess();
67     virtual void pageClosed();
68     virtual void takeFocus(bool direction);
69     virtual void toolTipChanged(const WTF::String&, const WTF::String&);
70     virtual void setCursor(const WebCore::Cursor&);
71     virtual void setCursorHiddenUntilMouseMoves(bool);
72     virtual void setViewportArguments(const WebCore::ViewportArguments&);
73     virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo);
74     virtual void clearAllEditCommands();
75     virtual bool canUndoRedo(WebPageProxy::UndoOrRedo);
76     virtual void executeUndoRedo(WebPageProxy::UndoOrRedo);
77     virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&);
78     virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&);
79     virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&);
80     virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&);
81     virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled);
82     virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*);
83     virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*);
84     virtual void setFindIndicator(PassRefPtr<FindIndicator>, bool fadeOut);
85     virtual void didChangeScrollbarsForMainFrame() const;
86     virtual void flashBackingStoreUpdates(const Vector<WebCore::IntRect>& updateRects);
87     virtual float userSpaceScaleFactor() const { return 1; }
88     virtual void getEditorCommandsForKeyEvent(const NativeWebKeyboardEvent&, const AtomicString&, Vector<WTF::String>&);
89     virtual void findStringInCustomRepresentation(const String&, FindOptions, unsigned);
90     virtual void countStringMatchesInCustomRepresentation(const String&, FindOptions, unsigned);
91
92 #if USE(ACCELERATED_COMPOSITING)
93     virtual void pageDidEnterAcceleratedCompositing();
94     virtual void pageDidLeaveAcceleratedCompositing();
95 #endif
96
97     virtual void didCommitLoadForMainFrame(bool useCustomRepresentation);
98     virtual void didFinishLoadingDataForCustomRepresentation(const String& suggestedFilename, const CoreIPC::DataReference&);
99     virtual double customRepresentationZoomFactor();
100     virtual void setCustomRepresentationZoomFactor(double);
101
102     // Members of PageClientImpl class
103     GtkWidget* m_viewWidget;
104     WebCore::KeyBindingTranslator m_keyBindingTranslator;
105 };
106
107 } // namespace WebKit
108
109 #endif // PageClientImpl_h