• 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 #include "config.h"
27 #include "WKBundlePage.h"
28 #include "WKBundlePagePrivate.h"
29 
30 #include "InjectedBundleBackForwardList.h"
31 #include "InjectedBundleNodeHandle.h"
32 #include "WKAPICast.h"
33 #include "WKBundleAPICast.h"
34 #include "WebFullScreenManager.h"
35 #include "WebImage.h"
36 #include "WebPage.h"
37 #include "WebURL.h"
38 #include "WebURLRequest.h"
39 
40 #include <WebCore/KURL.h>
41 
42 using namespace WebKit;
43 
WKBundlePageGetTypeID()44 WKTypeID WKBundlePageGetTypeID()
45 {
46     return toAPI(WebPage::APIType);
47 }
48 
WKBundlePageSetContextMenuClient(WKBundlePageRef pageRef,WKBundlePageContextMenuClient * wkClient)49 void WKBundlePageSetContextMenuClient(WKBundlePageRef pageRef, WKBundlePageContextMenuClient* wkClient)
50 {
51     if (wkClient && wkClient->version)
52         return;
53     toImpl(pageRef)->initializeInjectedBundleContextMenuClient(wkClient);
54 }
55 
WKBundlePageSetEditorClient(WKBundlePageRef pageRef,WKBundlePageEditorClient * wkClient)56 void WKBundlePageSetEditorClient(WKBundlePageRef pageRef, WKBundlePageEditorClient* wkClient)
57 {
58     if (wkClient && wkClient->version)
59         return;
60     toImpl(pageRef)->initializeInjectedBundleEditorClient(wkClient);
61 }
62 
WKBundlePageSetFormClient(WKBundlePageRef pageRef,WKBundlePageFormClient * wkClient)63 void WKBundlePageSetFormClient(WKBundlePageRef pageRef, WKBundlePageFormClient* wkClient)
64 {
65     if (wkClient && wkClient->version)
66         return;
67     toImpl(pageRef)->initializeInjectedBundleFormClient(wkClient);
68 }
69 
WKBundlePageSetPageLoaderClient(WKBundlePageRef pageRef,WKBundlePageLoaderClient * wkClient)70 void WKBundlePageSetPageLoaderClient(WKBundlePageRef pageRef, WKBundlePageLoaderClient* wkClient)
71 {
72     if (wkClient && wkClient->version)
73         return;
74     toImpl(pageRef)->initializeInjectedBundleLoaderClient(wkClient);
75 }
76 
WKBundlePageSetResourceLoadClient(WKBundlePageRef pageRef,WKBundlePageResourceLoadClient * wkClient)77 void WKBundlePageSetResourceLoadClient(WKBundlePageRef pageRef, WKBundlePageResourceLoadClient* wkClient)
78 {
79     if (wkClient && wkClient->version)
80         return;
81     toImpl(pageRef)->initializeInjectedBundleResourceLoadClient(wkClient);
82 }
83 
WKBundlePageSetPolicyClient(WKBundlePageRef pageRef,WKBundlePagePolicyClient * wkClient)84 void WKBundlePageSetPolicyClient(WKBundlePageRef pageRef, WKBundlePagePolicyClient* wkClient)
85 {
86     if (wkClient && wkClient->version)
87         return;
88     toImpl(pageRef)->initializeInjectedBundlePolicyClient(wkClient);
89 }
90 
WKBundlePageSetUIClient(WKBundlePageRef pageRef,WKBundlePageUIClient * wkClient)91 void WKBundlePageSetUIClient(WKBundlePageRef pageRef, WKBundlePageUIClient* wkClient)
92 {
93     if (wkClient && wkClient->version)
94         return;
95     toImpl(pageRef)->initializeInjectedBundleUIClient(wkClient);
96 }
97 
WKBundlePageSetFullScreenClient(WKBundlePageRef pageRef,WKBundlePageFullScreenClient * wkClient)98 void WKBundlePageSetFullScreenClient(WKBundlePageRef pageRef, WKBundlePageFullScreenClient* wkClient)
99 {
100 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
101     if (wkClient && wkClient->version)
102         return;
103     toImpl(pageRef)->initializeInjectedBundleFullScreenClient(wkClient);
104 #endif
105 }
106 
WKBundlePageWillEnterFullScreen(WKBundlePageRef pageRef)107 void WKBundlePageWillEnterFullScreen(WKBundlePageRef pageRef)
108 {
109 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
110     toImpl(pageRef)->fullScreenManager()->willEnterFullScreen();
111 #endif
112 }
113 
WKBundlePageDidEnterFullScreen(WKBundlePageRef pageRef)114 void WKBundlePageDidEnterFullScreen(WKBundlePageRef pageRef)
115 {
116 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
117     toImpl(pageRef)->fullScreenManager()->didEnterFullScreen();
118 #endif
119 }
120 
WKBundlePageWillExitFullScreen(WKBundlePageRef pageRef)121 void WKBundlePageWillExitFullScreen(WKBundlePageRef pageRef)
122 {
123 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
124     toImpl(pageRef)->fullScreenManager()->willExitFullScreen();
125 #endif
126 }
127 
WKBundlePageDidExitFullScreen(WKBundlePageRef pageRef)128 void WKBundlePageDidExitFullScreen(WKBundlePageRef pageRef)
129 {
130 #if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
131     toImpl(pageRef)->fullScreenManager()->didExitFullScreen();
132 #endif
133 }
134 
WKBundlePageGetPageGroup(WKBundlePageRef pageRef)135 WKBundlePageGroupRef WKBundlePageGetPageGroup(WKBundlePageRef pageRef)
136 {
137     return toAPI(toImpl(pageRef)->pageGroup());
138 }
139 
WKBundlePageGetMainFrame(WKBundlePageRef pageRef)140 WKBundleFrameRef WKBundlePageGetMainFrame(WKBundlePageRef pageRef)
141 {
142     return toAPI(toImpl(pageRef)->mainFrame());
143 }
144 
WKBundlePageStopLoading(WKBundlePageRef pageRef)145 void WKBundlePageStopLoading(WKBundlePageRef pageRef)
146 {
147     toImpl(pageRef)->stopLoading();
148 }
149 
WKBundlePageSetDefersLoading(WKBundlePageRef pageRef,bool defersLoading)150 void WKBundlePageSetDefersLoading(WKBundlePageRef pageRef, bool defersLoading)
151 {
152     toImpl(pageRef)->setDefersLoading(defersLoading);
153 }
154 
WKBundlePageCopyRenderTreeExternalRepresentation(WKBundlePageRef pageRef)155 WKStringRef WKBundlePageCopyRenderTreeExternalRepresentation(WKBundlePageRef pageRef)
156 {
157     return toCopiedAPI(toImpl(pageRef)->renderTreeExternalRepresentation());
158 }
159 
WKBundlePageExecuteEditingCommand(WKBundlePageRef pageRef,WKStringRef name,WKStringRef argument)160 void WKBundlePageExecuteEditingCommand(WKBundlePageRef pageRef, WKStringRef name, WKStringRef argument)
161 {
162     toImpl(pageRef)->executeEditingCommand(toImpl(name)->string(), toImpl(argument)->string());
163 }
164 
WKBundlePageIsEditingCommandEnabled(WKBundlePageRef pageRef,WKStringRef name)165 bool WKBundlePageIsEditingCommandEnabled(WKBundlePageRef pageRef, WKStringRef name)
166 {
167     return toImpl(pageRef)->isEditingCommandEnabled(toImpl(name)->string());
168 }
169 
WKBundlePageClearMainFrameName(WKBundlePageRef pageRef)170 void WKBundlePageClearMainFrameName(WKBundlePageRef pageRef)
171 {
172     toImpl(pageRef)->clearMainFrameName();
173 }
174 
WKBundlePageClose(WKBundlePageRef pageRef)175 void WKBundlePageClose(WKBundlePageRef pageRef)
176 {
177     toImpl(pageRef)->sendClose();
178 }
179 
WKBundlePageGetTextZoomFactor(WKBundlePageRef pageRef)180 double WKBundlePageGetTextZoomFactor(WKBundlePageRef pageRef)
181 {
182     return toImpl(pageRef)->textZoomFactor();
183 }
184 
WKBundlePageSetTextZoomFactor(WKBundlePageRef pageRef,double zoomFactor)185 void WKBundlePageSetTextZoomFactor(WKBundlePageRef pageRef, double zoomFactor)
186 {
187     toImpl(pageRef)->setTextZoomFactor(zoomFactor);
188 }
189 
WKBundlePageGetPageZoomFactor(WKBundlePageRef pageRef)190 double WKBundlePageGetPageZoomFactor(WKBundlePageRef pageRef)
191 {
192     return toImpl(pageRef)->pageZoomFactor();
193 }
194 
WKBundlePageSetPageZoomFactor(WKBundlePageRef pageRef,double zoomFactor)195 void WKBundlePageSetPageZoomFactor(WKBundlePageRef pageRef, double zoomFactor)
196 {
197     toImpl(pageRef)->setPageZoomFactor(zoomFactor);
198 }
199 
WKBundlePageSetScaleAtOrigin(WKBundlePageRef pageRef,double scale,WKPoint origin)200 void WKBundlePageSetScaleAtOrigin(WKBundlePageRef pageRef, double scale, WKPoint origin)
201 {
202     toImpl(pageRef)->scaleWebView(scale, toIntPoint(origin));
203 }
204 
WKBundlePageGetBackForwardList(WKBundlePageRef pageRef)205 WKBundleBackForwardListRef WKBundlePageGetBackForwardList(WKBundlePageRef pageRef)
206 {
207     return toAPI(toImpl(pageRef)->backForwardList());
208 }
209 
WKBundlePageInstallPageOverlay(WKBundlePageRef pageRef,WKBundlePageOverlayRef pageOverlayRef)210 void WKBundlePageInstallPageOverlay(WKBundlePageRef pageRef, WKBundlePageOverlayRef pageOverlayRef)
211 {
212     toImpl(pageRef)->installPageOverlay(toImpl(pageOverlayRef));
213 }
214 
WKBundlePageUninstallPageOverlay(WKBundlePageRef pageRef,WKBundlePageOverlayRef pageOverlayRef)215 void WKBundlePageUninstallPageOverlay(WKBundlePageRef pageRef, WKBundlePageOverlayRef pageOverlayRef)
216 {
217     toImpl(pageRef)->uninstallPageOverlay(toImpl(pageOverlayRef), false);
218 }
219 
WKBundlePageHasLocalDataForURL(WKBundlePageRef pageRef,WKURLRef urlRef)220 bool WKBundlePageHasLocalDataForURL(WKBundlePageRef pageRef, WKURLRef urlRef)
221 {
222     return toImpl(pageRef)->hasLocalDataForURL(WebCore::KURL(WebCore::KURL(), toImpl(urlRef)->string()));
223 }
224 
WKBundlePageCanHandleRequest(WKURLRequestRef requestRef)225 bool WKBundlePageCanHandleRequest(WKURLRequestRef requestRef)
226 {
227     return WebPage::canHandleRequest(toImpl(requestRef)->resourceRequest());
228 }
229 
WKBundlePageFindString(WKBundlePageRef pageRef,WKStringRef target,WKFindOptions findOptions)230 bool WKBundlePageFindString(WKBundlePageRef pageRef, WKStringRef target, WKFindOptions findOptions)
231 {
232     return toImpl(pageRef)->findStringFromInjectedBundle(toImpl(target)->string(), toFindOptions(findOptions));
233 }
234 
WKBundlePageCreateSnapshotInViewCoordinates(WKBundlePageRef pageRef,WKRect rect,WKImageOptions options)235 WKImageRef WKBundlePageCreateSnapshotInViewCoordinates(WKBundlePageRef pageRef, WKRect rect, WKImageOptions options)
236 {
237     RefPtr<WebImage> webImage = toImpl(pageRef)->snapshotInViewCoordinates(toIntRect(rect), toImageOptions(options));
238     return toAPI(webImage.release().leakRef());
239 }
240 
WKBundlePageCreateSnapshotInDocumentCoordinates(WKBundlePageRef pageRef,WKRect rect,WKImageOptions options)241 WKImageRef WKBundlePageCreateSnapshotInDocumentCoordinates(WKBundlePageRef pageRef, WKRect rect, WKImageOptions options)
242 {
243     RefPtr<WebImage> webImage = toImpl(pageRef)->snapshotInDocumentCoordinates(toIntRect(rect), toImageOptions(options));
244     return toAPI(webImage.release().leakRef());
245 }
246 
WKBundlePageCreateScaledSnapshotInDocumentCoordinates(WKBundlePageRef pageRef,WKRect rect,double scaleFactor,WKImageOptions options)247 WKImageRef WKBundlePageCreateScaledSnapshotInDocumentCoordinates(WKBundlePageRef pageRef, WKRect rect, double scaleFactor, WKImageOptions options)
248 {
249     RefPtr<WebImage> webImage = toImpl(pageRef)->scaledSnapshotInDocumentCoordinates(toIntRect(rect), scaleFactor, toImageOptions(options));
250     return toAPI(webImage.release().leakRef());
251 }
252 
253 #if defined(ENABLE_INSPECTOR) && ENABLE_INSPECTOR
WKBundlePageGetInspector(WKBundlePageRef pageRef)254 WKBundleInspectorRef WKBundlePageGetInspector(WKBundlePageRef pageRef)
255 {
256     return toAPI(toImpl(pageRef)->inspector());
257 }
258 #endif
259 
WKBundlePageForceRepaint(WKBundlePageRef page)260 void WKBundlePageForceRepaint(WKBundlePageRef page)
261 {
262     toImpl(page)->forceRepaintWithoutCallback();
263 }
264 
WKBundlePageSimulateMouseDown(WKBundlePageRef page,int button,WKPoint position,int clickCount,WKEventModifiers modifiers,double time)265 void WKBundlePageSimulateMouseDown(WKBundlePageRef page, int button, WKPoint position, int clickCount, WKEventModifiers modifiers, double time)
266 {
267     toImpl(page)->simulateMouseDown(button, toIntPoint(position), clickCount, modifiers, time);
268 }
269 
WKBundlePageSimulateMouseUp(WKBundlePageRef page,int button,WKPoint position,int clickCount,WKEventModifiers modifiers,double time)270 void WKBundlePageSimulateMouseUp(WKBundlePageRef page, int button, WKPoint position, int clickCount, WKEventModifiers modifiers, double time)
271 {
272     toImpl(page)->simulateMouseUp(button, toIntPoint(position), clickCount, modifiers, time);
273 }
274 
WKBundlePageSimulateMouseMotion(WKBundlePageRef page,WKPoint position,double time)275 void WKBundlePageSimulateMouseMotion(WKBundlePageRef page, WKPoint position, double time)
276 {
277     toImpl(page)->simulateMouseMotion(toIntPoint(position), time);
278 }
279