• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 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 "WKBundle.h"
28 #include "WKBundlePrivate.h"
29 
30 #include "InjectedBundle.h"
31 #include "WKAPICast.h"
32 #include "WKBundleAPICast.h"
33 
34 using namespace WebKit;
35 
WKBundleGetTypeID()36 WKTypeID WKBundleGetTypeID()
37 {
38     return toAPI(InjectedBundle::APIType);
39 }
40 
WKBundleSetClient(WKBundleRef bundleRef,WKBundleClient * wkClient)41 void WKBundleSetClient(WKBundleRef bundleRef, WKBundleClient * wkClient)
42 {
43     if (wkClient && wkClient->version)
44         return;
45     toImpl(bundleRef)->initializeClient(wkClient);
46 }
47 
WKBundlePostMessage(WKBundleRef bundleRef,WKStringRef messageNameRef,WKTypeRef messageBodyRef)48 void WKBundlePostMessage(WKBundleRef bundleRef, WKStringRef messageNameRef, WKTypeRef messageBodyRef)
49 {
50     toImpl(bundleRef)->postMessage(toImpl(messageNameRef)->string(), toImpl(messageBodyRef));
51 }
52 
WKBundlePostSynchronousMessage(WKBundleRef bundleRef,WKStringRef messageNameRef,WKTypeRef messageBodyRef,WKTypeRef * returnDataRef)53 void WKBundlePostSynchronousMessage(WKBundleRef bundleRef, WKStringRef messageNameRef, WKTypeRef messageBodyRef, WKTypeRef* returnDataRef)
54 {
55     RefPtr<APIObject> returnData;
56     toImpl(bundleRef)->postSynchronousMessage(toImpl(messageNameRef)->string(), toImpl(messageBodyRef), returnData);
57     if (returnDataRef)
58         *returnDataRef = toAPI(returnData.release().leakRef());
59 }
60 
WKBundleSetShouldTrackVisitedLinks(WKBundleRef bundleRef,bool shouldTrackVisitedLinks)61 void WKBundleSetShouldTrackVisitedLinks(WKBundleRef bundleRef, bool shouldTrackVisitedLinks)
62 {
63     toImpl(bundleRef)->setShouldTrackVisitedLinks(shouldTrackVisitedLinks);
64 }
65 
WKBundleRemoveAllVisitedLinks(WKBundleRef bundleRef)66 void WKBundleRemoveAllVisitedLinks(WKBundleRef bundleRef)
67 {
68     toImpl(bundleRef)->removeAllVisitedLinks();
69 }
70 
WKBundleActivateMacFontAscentHack(WKBundleRef bundleRef)71 void WKBundleActivateMacFontAscentHack(WKBundleRef bundleRef)
72 {
73     toImpl(bundleRef)->activateMacFontAscentHack();
74 }
75 
WKBundleGarbageCollectJavaScriptObjects(WKBundleRef bundleRef)76 void WKBundleGarbageCollectJavaScriptObjects(WKBundleRef bundleRef)
77 {
78     toImpl(bundleRef)->garbageCollectJavaScriptObjects();
79 }
80 
WKBundleGarbageCollectJavaScriptObjectsOnAlternateThreadForDebugging(WKBundleRef bundleRef,bool waitUntilDone)81 void WKBundleGarbageCollectJavaScriptObjectsOnAlternateThreadForDebugging(WKBundleRef bundleRef, bool waitUntilDone)
82 {
83     toImpl(bundleRef)->garbageCollectJavaScriptObjectsOnAlternateThreadForDebugging(waitUntilDone);
84 }
85 
WKBundleGetJavaScriptObjectsCount(WKBundleRef bundleRef)86 size_t WKBundleGetJavaScriptObjectsCount(WKBundleRef bundleRef)
87 {
88     return toImpl(bundleRef)->javaScriptObjectsCount();
89 }
90 
WKBundleAddUserScript(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,WKBundleScriptWorldRef scriptWorldRef,WKStringRef sourceRef,WKURLRef urlRef,WKArrayRef whitelistRef,WKArrayRef blacklistRef,WKUserScriptInjectionTime injectionTimeRef,WKUserContentInjectedFrames injectedFramesRef)91 void WKBundleAddUserScript(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, WKBundleScriptWorldRef scriptWorldRef, WKStringRef sourceRef, WKURLRef urlRef, WKArrayRef whitelistRef, WKArrayRef blacklistRef, WKUserScriptInjectionTime injectionTimeRef, WKUserContentInjectedFrames injectedFramesRef)
92 {
93     toImpl(bundleRef)->addUserScript(toImpl(pageGroupRef), toImpl(scriptWorldRef), toWTFString(sourceRef), toWTFString(urlRef), toImpl(whitelistRef), toImpl(blacklistRef), toUserScriptInjectionTime(injectionTimeRef), toUserContentInjectedFrames(injectedFramesRef));
94 }
95 
WKBundleAddUserStyleSheet(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,WKBundleScriptWorldRef scriptWorldRef,WKStringRef sourceRef,WKURLRef urlRef,WKArrayRef whitelistRef,WKArrayRef blacklistRef,WKUserContentInjectedFrames injectedFramesRef)96 void WKBundleAddUserStyleSheet(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, WKBundleScriptWorldRef scriptWorldRef, WKStringRef sourceRef, WKURLRef urlRef, WKArrayRef whitelistRef, WKArrayRef blacklistRef, WKUserContentInjectedFrames injectedFramesRef)
97 {
98     toImpl(bundleRef)->addUserStyleSheet(toImpl(pageGroupRef), toImpl(scriptWorldRef), toWTFString(sourceRef), toWTFString(urlRef), toImpl(whitelistRef), toImpl(blacklistRef), toUserContentInjectedFrames(injectedFramesRef));
99 }
100 
WKBundleRemoveUserScript(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,WKBundleScriptWorldRef scriptWorldRef,WKURLRef urlRef)101 void WKBundleRemoveUserScript(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, WKBundleScriptWorldRef scriptWorldRef, WKURLRef urlRef)
102 {
103     toImpl(bundleRef)->removeUserScript(toImpl(pageGroupRef), toImpl(scriptWorldRef), toWTFString(urlRef));
104 }
105 
WKBundleRemoveUserStyleSheet(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,WKBundleScriptWorldRef scriptWorldRef,WKURLRef urlRef)106 void WKBundleRemoveUserStyleSheet(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, WKBundleScriptWorldRef scriptWorldRef, WKURLRef urlRef)
107 {
108     toImpl(bundleRef)->removeUserStyleSheet(toImpl(pageGroupRef), toImpl(scriptWorldRef), toWTFString(urlRef));
109 }
110 
WKBundleRemoveUserScripts(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,WKBundleScriptWorldRef scriptWorldRef)111 void WKBundleRemoveUserScripts(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, WKBundleScriptWorldRef scriptWorldRef)
112 {
113     toImpl(bundleRef)->removeUserScripts(toImpl(pageGroupRef), toImpl(scriptWorldRef));
114 }
115 
WKBundleRemoveUserStyleSheets(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,WKBundleScriptWorldRef scriptWorldRef)116 void WKBundleRemoveUserStyleSheets(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, WKBundleScriptWorldRef scriptWorldRef)
117 {
118     toImpl(bundleRef)->removeUserStyleSheets(toImpl(pageGroupRef), toImpl(scriptWorldRef));
119 }
120 
WKBundleRemoveAllUserContent(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef)121 void WKBundleRemoveAllUserContent(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef)
122 {
123     toImpl(bundleRef)->removeAllUserContent(toImpl(pageGroupRef));
124 }
125 
WKBundleOverrideXSSAuditorEnabledForTestRunner(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,bool enabled)126 void WKBundleOverrideXSSAuditorEnabledForTestRunner(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, bool enabled)
127 {
128     toImpl(bundleRef)->overrideXSSAuditorEnabledForTestRunner(toImpl(pageGroupRef), enabled);
129 }
130 
WKBundleOverrideAllowUniversalAccessFromFileURLsForTestRunner(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,bool enabled)131 void WKBundleOverrideAllowUniversalAccessFromFileURLsForTestRunner(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, bool enabled)
132 {
133     toImpl(bundleRef)->overrideAllowUniversalAccessFromFileURLsForTestRunner(toImpl(pageGroupRef), enabled);
134 }
135 
WKBundleSetAllowFileAccessFromFileURLs(WKBundleRef bundleRef,WKBundlePageGroupRef pageGroupRef,bool enabled)136 void WKBundleSetAllowFileAccessFromFileURLs(WKBundleRef bundleRef, WKBundlePageGroupRef pageGroupRef, bool enabled)
137 {
138     toImpl(bundleRef)->setAllowFileAccessFromFileURLs(toImpl(pageGroupRef), enabled);
139 }
140 
WKBundleReportException(JSContextRef context,JSValueRef exception)141 void WKBundleReportException(JSContextRef context, JSValueRef exception)
142 {
143     InjectedBundle::reportException(context, exception);
144 }
145 
WKBundleClearAllDatabases(WKBundleRef bundleRef)146 void WKBundleClearAllDatabases(WKBundleRef bundleRef)
147 {
148     toImpl(bundleRef)->clearAllDatabases();
149 }
150 
WKBundleSetDatabaseQuota(WKBundleRef bundleRef,uint64_t quota)151 void WKBundleSetDatabaseQuota(WKBundleRef bundleRef, uint64_t quota)
152 {
153     toImpl(bundleRef)->setDatabaseQuota(quota);
154 }
155 
WKBundleNumberOfPages(WKBundleRef bundleRef,WKBundleFrameRef frameRef,double pageWidthInPixels,double pageHeightInPixels)156 int WKBundleNumberOfPages(WKBundleRef bundleRef, WKBundleFrameRef frameRef, double pageWidthInPixels, double pageHeightInPixels)
157 {
158     return toImpl(bundleRef)->numberOfPages(toImpl(frameRef), pageWidthInPixels, pageHeightInPixels);
159 }
160 
WKBundlePageNumberForElementById(WKBundleRef bundleRef,WKBundleFrameRef frameRef,WKStringRef idRef,double pageWidthInPixels,double pageHeightInPixels)161 int WKBundlePageNumberForElementById(WKBundleRef bundleRef, WKBundleFrameRef frameRef, WKStringRef idRef, double pageWidthInPixels, double pageHeightInPixels)
162 {
163     return toImpl(bundleRef)->pageNumberForElementById(toImpl(frameRef), toImpl(idRef)->string(), pageWidthInPixels, pageHeightInPixels);
164 }
165 
WKBundlePageSizeAndMarginsInPixels(WKBundleRef bundleRef,WKBundleFrameRef frameRef,int pageIndex,int width,int height,int marginTop,int marginRight,int marginBottom,int marginLeft)166 WKStringRef WKBundlePageSizeAndMarginsInPixels(WKBundleRef bundleRef, WKBundleFrameRef frameRef, int pageIndex, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft)
167 {
168     return toCopiedAPI(toImpl(bundleRef)->pageSizeAndMarginsInPixels(toImpl(frameRef), pageIndex, width, height, marginTop, marginRight, marginBottom, marginLeft));
169 }
170 
WKBundleIsPageBoxVisible(WKBundleRef bundleRef,WKBundleFrameRef frameRef,int pageIndex)171 WK_EXPORT bool WKBundleIsPageBoxVisible(WKBundleRef bundleRef, WKBundleFrameRef frameRef, int pageIndex)
172 {
173     return toImpl(bundleRef)->isPageBoxVisible(toImpl(frameRef), pageIndex);
174 }
175