• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
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 #ifndef PageClientImpl_h
27 #define PageClientImpl_h
28 
29 #include "CorrectionPanel.h"
30 #include "PageClient.h"
31 #include <wtf/RetainPtr.h>
32 
33 @class WKEditorUndoTargetObjC;
34 @class WKView;
35 
36 namespace WebKit {
37 
38 class FindIndicatorWindow;
39 
40 // NOTE: This does not use String::operator NSString*() since that function
41 // expects to be called on the thread running WebCore.
42 NSString* nsStringFromWebCoreString(const String&);
43 
44 class PageClientImpl : public PageClient {
45 public:
46     static PassOwnPtr<PageClientImpl> create(WKView*);
47     virtual ~PageClientImpl();
48 
49 private:
50     PageClientImpl(WKView*);
51 
52     virtual PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy();
53     virtual void setViewNeedsDisplay(const WebCore::IntRect&);
54     virtual void displayView();
55     virtual void scrollView(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset);
56 
57     virtual WebCore::IntSize viewSize();
58     virtual bool isViewWindowActive();
59     virtual bool isViewFocused();
60     virtual bool isViewVisible();
61     virtual bool isViewInWindow();
62 
63     virtual void processDidCrash();
64     virtual void pageClosed();
65     virtual void didRelaunchProcess();
66     virtual void toolTipChanged(const String& oldToolTip, const String& newToolTip);
67     virtual void setCursor(const WebCore::Cursor&);
68     virtual void setViewportArguments(const WebCore::ViewportArguments&);
69 
70     virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo);
71     virtual void clearAllEditCommands();
72     virtual bool canUndoRedo(WebPageProxy::UndoOrRedo);
73     virtual void executeUndoRedo(WebPageProxy::UndoOrRedo);
74     virtual bool interpretKeyEvent(const NativeWebKeyboardEvent&, Vector<WebCore::KeypressCommand>&);
75     virtual bool executeSavedCommandBySelector(const String& selector);
76     virtual void setDragImage(const WebCore::IntPoint& clientPosition, PassRefPtr<ShareableBitmap> dragImage, bool isLinkDrag);
77     virtual void updateSecureInputState();
78 
79     virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&);
80     virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&);
81     virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&);
82 
83     virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled);
84 
85     virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*);
86     virtual PassRefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy*);
87 
88     void setFindIndicator(PassRefPtr<FindIndicator>, bool fadeOut);
89 
90     virtual void enterAcceleratedCompositingMode(const LayerTreeContext&);
91     virtual void exitAcceleratedCompositingMode();
92 
93     virtual void accessibilityWebProcessTokenReceived(const CoreIPC::DataReference&);
94     virtual void setComplexTextInputEnabled(uint64_t pluginComplexTextInputIdentifier, bool complexTextInputEnabled);
95 
96     virtual CGContextRef containingWindowGraphicsContext();
97 
98     virtual void didChangeScrollbarsForMainFrame() const;
99 
100     virtual void didCommitLoadForMainFrame(bool useCustomRepresentation);
101     virtual void didFinishLoadingDataForCustomRepresentation(const String& suggestedFilename, const CoreIPC::DataReference&);
102 
103     virtual double customRepresentationZoomFactor();
104     virtual void setCustomRepresentationZoomFactor(double);
105     virtual void findStringInCustomRepresentation(const String&, FindOptions, unsigned maxMatchCount);
106     virtual void countStringMatchesInCustomRepresentation(const String&, FindOptions, unsigned maxMatchCount);
107 
108     virtual void flashBackingStoreUpdates(const Vector<WebCore::IntRect>& updateRects);
109 
110     virtual void didPerformDictionaryLookup(const String&, double scaleFactor, const DictionaryPopupInfo&);
111     virtual void dismissDictionaryLookupPanel();
112 
113     virtual void showCorrectionPanel(WebCore::CorrectionPanelInfo::PanelType, const WebCore::FloatRect& boundingBoxOfReplacedString, const String& replacedString, const String& replacementString, const Vector<String>& alternativeReplacementStrings);
114     virtual void dismissCorrectionPanel(WebCore::ReasonForDismissingCorrectionPanel);
115     virtual String dismissCorrectionPanelSoon(WebCore::ReasonForDismissingCorrectionPanel);
116     virtual void recordAutocorrectionResponse(WebCore::EditorClient::AutocorrectionResponseType, const String& replacedString, const String& replacementString);
117 
118     virtual float userSpaceScaleFactor() const;
119 
120     WKView* m_wkView;
121     RetainPtr<WKEditorUndoTargetObjC> m_undoTarget;
122 #if !defined(BUILDING_ON_SNOW_LEOPARD)
123     CorrectionPanel m_correctionPanel;
124 #endif
125 };
126 
127 } // namespace WebKit
128 
129 #endif // PageClientImpl_h
130