• 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 "InjectedBundlePageLoaderClient.h"
28 
29 #include "InjectedBundleScriptWorld.h"
30 #include "WKAPICast.h"
31 #include "WKBundleAPICast.h"
32 #include "WebError.h"
33 #include <wtf/text/WTFString.h>
34 
35 using namespace WebCore;
36 
37 namespace WebKit {
38 
didStartProvisionalLoadForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)39 void InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
40 {
41     if (!m_client.didStartProvisionalLoadForFrame)
42         return;
43 
44     WKTypeRef userDataToPass = 0;
45     m_client.didStartProvisionalLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
46     userData = adoptRef(toImpl(userDataToPass));
47 }
48 
didReceiveServerRedirectForProvisionalLoadForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)49 void InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
50 {
51     if (!m_client.didReceiveServerRedirectForProvisionalLoadForFrame)
52         return;
53 
54     WKTypeRef userDataToPass = 0;
55     m_client.didReceiveServerRedirectForProvisionalLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
56     userData = adoptRef(toImpl(userDataToPass));
57 }
58 
didFailProvisionalLoadWithErrorForFrame(WebPage * page,WebFrame * frame,const ResourceError & error,RefPtr<APIObject> & userData)59 void InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPage* page, WebFrame* frame, const ResourceError& error, RefPtr<APIObject>& userData)
60 {
61     if (!m_client.didFailProvisionalLoadWithErrorForFrame)
62         return;
63 
64     WKTypeRef userDataToPass = 0;
65     m_client.didFailProvisionalLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), &userDataToPass, m_client.clientInfo);
66     userData = adoptRef(toImpl(userDataToPass));
67 }
68 
didCommitLoadForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)69 void InjectedBundlePageLoaderClient::didCommitLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
70 {
71     if (!m_client.didCommitLoadForFrame)
72         return;
73 
74     WKTypeRef userDataToPass = 0;
75     m_client.didCommitLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
76     userData = adoptRef(toImpl(userDataToPass));
77 }
78 
didFinishDocumentLoadForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)79 void InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
80 {
81     if (!m_client.didFinishDocumentLoadForFrame)
82         return;
83 
84     WKTypeRef userDataToPass = 0;
85     m_client.didFinishDocumentLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
86     userData = adoptRef(toImpl(userDataToPass));
87 }
88 
didFinishLoadForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)89 void InjectedBundlePageLoaderClient::didFinishLoadForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
90 {
91     if (!m_client.didFinishLoadForFrame)
92         return;
93 
94     WKTypeRef userDataToPass = 0;
95     m_client.didFinishLoadForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
96     userData = adoptRef(toImpl(userDataToPass));
97 }
98 
didFailLoadWithErrorForFrame(WebPage * page,WebFrame * frame,const ResourceError & error,RefPtr<APIObject> & userData)99 void InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame(WebPage* page, WebFrame* frame, const ResourceError& error, RefPtr<APIObject>& userData)
100 {
101     if (!m_client.didFailLoadWithErrorForFrame)
102         return;
103 
104     WKTypeRef userDataToPass = 0;
105     m_client.didFailLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), &userDataToPass, m_client.clientInfo);
106     userData = adoptRef(toImpl(userDataToPass));
107 }
108 
didSameDocumentNavigationForFrame(WebPage * page,WebFrame * frame,SameDocumentNavigationType type,RefPtr<APIObject> & userData)109 void InjectedBundlePageLoaderClient::didSameDocumentNavigationForFrame(WebPage* page, WebFrame* frame, SameDocumentNavigationType type, RefPtr<APIObject>& userData)
110 {
111     if (!m_client.didSameDocumentNavigationForFrame)
112         return;
113 
114     WKTypeRef userDataToPass = 0;
115     m_client.didSameDocumentNavigationForFrame(toAPI(page), toAPI(frame), toAPI(type), &userDataToPass, m_client.clientInfo);
116     userData = adoptRef(toImpl(userDataToPass));
117 }
118 
didReceiveTitleForFrame(WebPage * page,const String & title,WebFrame * frame,RefPtr<APIObject> & userData)119 void InjectedBundlePageLoaderClient::didReceiveTitleForFrame(WebPage* page, const String& title, WebFrame* frame, RefPtr<APIObject>& userData)
120 {
121     if (!m_client.didReceiveTitleForFrame)
122         return;
123 
124     WKTypeRef userDataToPass = 0;
125     m_client.didReceiveTitleForFrame(toAPI(page), toAPI(title.impl()), toAPI(frame), &userDataToPass, m_client.clientInfo);
126     userData = adoptRef(toImpl(userDataToPass));
127 }
128 
didFirstLayoutForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)129 void InjectedBundlePageLoaderClient::didFirstLayoutForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
130 {
131     if (!m_client.didFirstLayoutForFrame)
132         return;
133 
134     WKTypeRef userDataToPass = 0;
135     m_client.didFirstLayoutForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
136     userData = adoptRef(toImpl(userDataToPass));
137 }
138 
didFirstVisuallyNonEmptyLayoutForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)139 void InjectedBundlePageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
140 {
141     if (!m_client.didFirstVisuallyNonEmptyLayoutForFrame)
142         return;
143 
144     WKTypeRef userDataToPass = 0;
145     m_client.didFirstVisuallyNonEmptyLayoutForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
146     userData = adoptRef(toImpl(userDataToPass));
147 }
148 
didRemoveFrameFromHierarchy(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)149 void InjectedBundlePageLoaderClient::didRemoveFrameFromHierarchy(WebPage* page , WebFrame* frame, RefPtr<APIObject>& userData)
150 {
151     if (!m_client.didRemoveFrameFromHierarchy)
152         return;
153 
154     WKTypeRef userDataToPass = 0;
155     m_client.didRemoveFrameFromHierarchy(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
156     userData = adoptRef(toImpl(userDataToPass));
157 }
158 
didDisplayInsecureContentForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)159 void InjectedBundlePageLoaderClient::didDisplayInsecureContentForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
160 {
161     if (!m_client.didDisplayInsecureContentForFrame)
162         return;
163 
164     WKTypeRef userDataToPass = 0;
165     m_client.didDisplayInsecureContentForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
166     userData = adoptRef(toImpl(userDataToPass));
167 }
168 
didRunInsecureContentForFrame(WebPage * page,WebFrame * frame,RefPtr<APIObject> & userData)169 void InjectedBundlePageLoaderClient::didRunInsecureContentForFrame(WebPage* page, WebFrame* frame, RefPtr<APIObject>& userData)
170 {
171     if (!m_client.didRunInsecureContentForFrame)
172         return;
173 
174     WKTypeRef userDataToPass = 0;
175     m_client.didRunInsecureContentForFrame(toAPI(page), toAPI(frame), &userDataToPass, m_client.clientInfo);
176     userData = adoptRef(toImpl(userDataToPass));
177 }
178 
didClearWindowObjectForFrame(WebPage * page,WebFrame * frame,DOMWrapperWorld * world)179 void InjectedBundlePageLoaderClient::didClearWindowObjectForFrame(WebPage* page, WebFrame* frame, DOMWrapperWorld* world)
180 {
181     if (!m_client.didClearWindowObjectForFrame)
182         return;
183 
184     m_client.didClearWindowObjectForFrame(toAPI(page), toAPI(frame), toAPI(InjectedBundleScriptWorld::getOrCreate(world).get()), m_client.clientInfo);
185 }
186 
didCancelClientRedirectForFrame(WebPage * page,WebFrame * frame)187 void InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame(WebPage* page, WebFrame* frame)
188 {
189     if (!m_client.didCancelClientRedirectForFrame)
190         return;
191 
192     m_client.didCancelClientRedirectForFrame(toAPI(page), toAPI(frame), m_client.clientInfo);
193 }
194 
willPerformClientRedirectForFrame(WebPage * page,WebFrame * frame,const String & url,double delay,double date)195 void InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame(WebPage* page, WebFrame* frame, const String& url, double delay, double date)
196 {
197     if (!m_client.willPerformClientRedirectForFrame)
198         return;
199 
200     m_client.willPerformClientRedirectForFrame(toAPI(page), toAPI(frame), toURLRef(url.impl()), delay, date, m_client.clientInfo);
201 }
202 
didHandleOnloadEventsForFrame(WebPage * page,WebFrame * frame)203 void InjectedBundlePageLoaderClient::didHandleOnloadEventsForFrame(WebPage* page, WebFrame* frame)
204 {
205     if (!m_client.didHandleOnloadEventsForFrame)
206         return;
207 
208     m_client.didHandleOnloadEventsForFrame(toAPI(page), toAPI(frame), m_client.clientInfo);
209 }
210 
211 } // namespace WebKit
212