• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
3  *
4  * All rights reserved.
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 COMPUTER, INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #include "config.h"
29 #include "FrameLoaderClientWx.h"
30 
31 #include <JavaScriptCore/JavaScript.h>
32 #include <JavaScriptCore/APICast.h>
33 
34 #include "DocumentLoader.h"
35 #include "FormState.h"
36 #include "Frame.h"
37 #include "FrameLoaderTypes.h"
38 #include "FrameView.h"
39 #include "FrameTree.h"
40 #include "PluginView.h"
41 #include "HTMLFormElement.h"
42 #include "HTMLFrameOwnerElement.h"
43 #include "NotImplemented.h"
44 #include "Page.h"
45 #include "PlatformString.h"
46 #include "PluginView.h"
47 #include "ProgressTracker.h"
48 #include "RenderPart.h"
49 #include "ResourceError.h"
50 #include "ResourceResponse.h"
51 #include "ScriptController.h"
52 #include "ScriptString.h"
53 #include <wtf/PassRefPtr.h>
54 #include <wtf/RefPtr.h>
55 
56 #include <stdio.h>
57 
58 #include "WebFrame.h"
59 #include "WebFramePrivate.h"
60 #include "WebView.h"
61 #include "WebViewPrivate.h"
62 
63 namespace WebCore {
64 
wxNavTypeFromWebNavType(NavigationType type)65 inline int wxNavTypeFromWebNavType(NavigationType type){
66     if (type == NavigationTypeLinkClicked)
67         return wxWEBVIEW_NAV_LINK_CLICKED;
68 
69     if (type == NavigationTypeFormSubmitted)
70         return wxWEBVIEW_NAV_FORM_SUBMITTED;
71 
72     if (type == NavigationTypeBackForward)
73         return wxWEBVIEW_NAV_BACK_NEXT;
74 
75     if (type == NavigationTypeReload)
76         return wxWEBVIEW_NAV_RELOAD;
77 
78     if (type == NavigationTypeFormResubmitted)
79         return wxWEBVIEW_NAV_FORM_RESUBMITTED;
80 
81     return wxWEBVIEW_NAV_OTHER;
82 }
83 
FrameLoaderClientWx()84 FrameLoaderClientWx::FrameLoaderClientWx()
85     : m_frame(0)
86     , m_pluginView(0)
87     , m_hasSentResponseToPlugin(false)
88     , m_webFrame(0)
89 {
90 }
91 
92 
~FrameLoaderClientWx()93 FrameLoaderClientWx::~FrameLoaderClientWx()
94 {
95 }
96 
setFrame(wxWebFrame * frame)97 void FrameLoaderClientWx::setFrame(wxWebFrame *frame)
98 {
99     m_webFrame = frame;
100     m_frame = m_webFrame->m_impl->frame;
101 }
102 
setWebView(wxWebView * webview)103 void FrameLoaderClientWx::setWebView(wxWebView *webview)
104 {
105     m_webView = webview;
106 }
107 
hasWebView() const108 bool FrameLoaderClientWx::hasWebView() const
109 {
110     return m_webView != NULL;
111 }
112 
hasBackForwardList() const113 bool FrameLoaderClientWx::hasBackForwardList() const
114 {
115     notImplemented();
116     return true;
117 }
118 
119 
resetBackForwardList()120 void FrameLoaderClientWx::resetBackForwardList()
121 {
122     notImplemented();
123 }
124 
125 
provisionalItemIsTarget() const126 bool FrameLoaderClientWx::provisionalItemIsTarget() const
127 {
128     notImplemented();
129     return false;
130 }
131 
makeRepresentation(DocumentLoader *)132 void FrameLoaderClientWx::makeRepresentation(DocumentLoader*)
133 {
134     notImplemented();
135 }
136 
137 
forceLayout()138 void FrameLoaderClientWx::forceLayout()
139 {
140     notImplemented();
141 }
142 
143 
forceLayoutForNonHTML()144 void FrameLoaderClientWx::forceLayoutForNonHTML()
145 {
146     notImplemented();
147 }
148 
149 
updateHistoryForCommit()150 void FrameLoaderClientWx::updateHistoryForCommit()
151 {
152     notImplemented();
153 }
154 
155 
updateHistoryForBackForwardNavigation()156 void FrameLoaderClientWx::updateHistoryForBackForwardNavigation()
157 {
158     notImplemented();
159 }
160 
161 
updateHistoryForReload()162 void FrameLoaderClientWx::updateHistoryForReload()
163 {
164     notImplemented();
165 }
166 
167 
updateHistoryForStandardLoad()168 void FrameLoaderClientWx::updateHistoryForStandardLoad()
169 {
170     notImplemented();
171 }
172 
173 
updateHistoryForInternalLoad()174 void FrameLoaderClientWx::updateHistoryForInternalLoad()
175 {
176     notImplemented();
177 }
178 
179 
updateHistoryAfterClientRedirect()180 void FrameLoaderClientWx::updateHistoryAfterClientRedirect()
181 {
182     notImplemented();
183 }
184 
185 
setCopiesOnScroll()186 void FrameLoaderClientWx::setCopiesOnScroll()
187 {
188     // apparently mac specific
189     notImplemented();
190 }
191 
192 
tokenForLoadErrorReset()193 LoadErrorResetToken* FrameLoaderClientWx::tokenForLoadErrorReset()
194 {
195     notImplemented();
196     return 0;
197 }
198 
199 
resetAfterLoadError(LoadErrorResetToken *)200 void FrameLoaderClientWx::resetAfterLoadError(LoadErrorResetToken*)
201 {
202     notImplemented();
203 }
204 
205 
doNotResetAfterLoadError(LoadErrorResetToken *)206 void FrameLoaderClientWx::doNotResetAfterLoadError(LoadErrorResetToken*)
207 {
208     notImplemented();
209 }
210 
211 
willCloseDocument()212 void FrameLoaderClientWx::willCloseDocument()
213 {
214     notImplemented();
215 }
216 
217 
detachedFromParent2()218 void FrameLoaderClientWx::detachedFromParent2()
219 {
220     notImplemented();
221 }
222 
223 
detachedFromParent3()224 void FrameLoaderClientWx::detachedFromParent3()
225 {
226     notImplemented();
227 }
228 
dispatchDidHandleOnloadEvents()229 void FrameLoaderClientWx::dispatchDidHandleOnloadEvents()
230 {
231     if (m_webView) {
232         wxWebViewLoadEvent wkEvent(m_webView);
233         wkEvent.SetState(wxWEBVIEW_LOAD_ONLOAD_HANDLED);
234         wkEvent.SetURL(m_frame->loader()->documentLoader()->request().url().string());
235         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
236     }
237 }
238 
239 
dispatchDidReceiveServerRedirectForProvisionalLoad()240 void FrameLoaderClientWx::dispatchDidReceiveServerRedirectForProvisionalLoad()
241 {
242     notImplemented();
243 }
244 
245 
dispatchDidCancelClientRedirect()246 void FrameLoaderClientWx::dispatchDidCancelClientRedirect()
247 {
248     notImplemented();
249 }
250 
251 
dispatchWillPerformClientRedirect(const KURL &,double interval,double fireDate)252 void FrameLoaderClientWx::dispatchWillPerformClientRedirect(const KURL&,
253                                                             double interval,
254                                                             double fireDate)
255 {
256     notImplemented();
257 }
258 
259 
dispatchDidChangeLocationWithinPage()260 void FrameLoaderClientWx::dispatchDidChangeLocationWithinPage()
261 {
262     notImplemented();
263 }
264 
dispatchDidPushStateWithinPage()265 void FrameLoaderClientWx::dispatchDidPushStateWithinPage()
266 {
267     notImplemented();
268 }
269 
dispatchDidReplaceStateWithinPage()270 void FrameLoaderClientWx::dispatchDidReplaceStateWithinPage()
271 {
272     notImplemented();
273 }
274 
dispatchDidPopStateWithinPage()275 void FrameLoaderClientWx::dispatchDidPopStateWithinPage()
276 {
277     notImplemented();
278 }
279 
dispatchWillClose()280 void FrameLoaderClientWx::dispatchWillClose()
281 {
282     notImplemented();
283 }
284 
285 
dispatchDidStartProvisionalLoad()286 void FrameLoaderClientWx::dispatchDidStartProvisionalLoad()
287 {
288     if (m_webView) {
289         wxWebViewLoadEvent wkEvent(m_webView);
290         wkEvent.SetState(wxWEBVIEW_LOAD_NEGOTIATING);
291         wkEvent.SetURL(m_frame->loader()->provisionalDocumentLoader()->request().url().string());
292         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
293     }
294 }
295 
296 
dispatchDidReceiveTitle(const String & title)297 void FrameLoaderClientWx::dispatchDidReceiveTitle(const String& title)
298 {
299     if (m_webView) {
300         m_webView->SetPageTitle(title);
301         wxWebViewReceivedTitleEvent wkEvent(m_webView);
302         wkEvent.SetTitle(title);
303         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
304     }
305 }
306 
307 
dispatchDidCommitLoad()308 void FrameLoaderClientWx::dispatchDidCommitLoad()
309 {
310     if (m_webView) {
311         wxWebViewLoadEvent wkEvent(m_webView);
312         wkEvent.SetState(wxWEBVIEW_LOAD_TRANSFERRING);
313         wkEvent.SetURL(m_frame->loader()->documentLoader()->request().url().string());
314         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
315     }
316 }
317 
dispatchDidFinishDocumentLoad()318 void FrameLoaderClientWx::dispatchDidFinishDocumentLoad()
319 {
320     if (m_webView) {
321         wxWebViewLoadEvent wkEvent(m_webView);
322         wkEvent.SetState(wxWEBVIEW_LOAD_DOC_COMPLETED);
323         wkEvent.SetURL(m_frame->loader()->url().string());
324         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
325     }
326 }
327 
dispatchDidFinishLoad()328 void FrameLoaderClientWx::dispatchDidFinishLoad()
329 {
330     notImplemented();
331 }
332 
333 
dispatchDidFirstLayout()334 void FrameLoaderClientWx::dispatchDidFirstLayout()
335 {
336     notImplemented();
337 }
338 
dispatchDidFirstVisuallyNonEmptyLayout()339 void FrameLoaderClientWx::dispatchDidFirstVisuallyNonEmptyLayout()
340 {
341     notImplemented();
342 }
343 
dispatchShow()344 void FrameLoaderClientWx::dispatchShow()
345 {
346     notImplemented();
347 }
348 
349 
cancelPolicyCheck()350 void FrameLoaderClientWx::cancelPolicyCheck()
351 {
352     notImplemented();
353 }
354 
355 
dispatchWillSubmitForm(FramePolicyFunction function,PassRefPtr<FormState>)356 void FrameLoaderClientWx::dispatchWillSubmitForm(FramePolicyFunction function,
357                                                  PassRefPtr<FormState>)
358 {
359     // FIXME: Send an event to allow for alerts and cancellation
360     if (!m_webFrame)
361         return;
362     (m_frame->loader()->policyChecker()->*function)(PolicyUse);
363 }
364 
365 
dispatchDidLoadMainResource(DocumentLoader *)366 void FrameLoaderClientWx::dispatchDidLoadMainResource(DocumentLoader*)
367 {
368     notImplemented();
369 }
370 
371 
revertToProvisionalState(DocumentLoader *)372 void FrameLoaderClientWx::revertToProvisionalState(DocumentLoader*)
373 {
374     notImplemented();
375 }
376 
postProgressStartedNotification()377 void FrameLoaderClientWx::postProgressStartedNotification()
378 {
379     notImplemented();
380 }
381 
postProgressEstimateChangedNotification()382 void FrameLoaderClientWx::postProgressEstimateChangedNotification()
383 {
384     notImplemented();
385 }
386 
postProgressFinishedNotification()387 void FrameLoaderClientWx::postProgressFinishedNotification()
388 {
389     if (m_webView) {
390         wxWebViewLoadEvent wkEvent(m_webView);
391         wkEvent.SetState(wxWEBVIEW_LOAD_DL_COMPLETED);
392         wkEvent.SetURL(m_frame->loader()->url().string());
393         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
394     }
395 }
396 
progressStarted()397 void FrameLoaderClientWx::progressStarted()
398 {
399     notImplemented();
400 }
401 
402 
progressCompleted()403 void FrameLoaderClientWx::progressCompleted()
404 {
405     notImplemented();
406 }
407 
408 
setMainFrameDocumentReady(bool b)409 void FrameLoaderClientWx::setMainFrameDocumentReady(bool b)
410 {
411     notImplemented();
412     // this is only interesting once we provide an external API for the DOM
413 }
414 
415 
willChangeTitle(DocumentLoader *)416 void FrameLoaderClientWx::willChangeTitle(DocumentLoader*)
417 {
418     notImplemented();
419 }
420 
421 
didChangeTitle(DocumentLoader * l)422 void FrameLoaderClientWx::didChangeTitle(DocumentLoader *l)
423 {
424     setTitle(l->title(), l->url());
425 }
426 
427 
finishedLoading(DocumentLoader *)428 void FrameLoaderClientWx::finishedLoading(DocumentLoader*)
429 {
430     if (m_pluginView) {
431         m_pluginView->didFinishLoading();
432         m_pluginView = 0;
433         m_hasSentResponseToPlugin = false;
434     }
435 }
436 
437 
canShowMIMEType(const String & MIMEType) const438 bool FrameLoaderClientWx::canShowMIMEType(const String& MIMEType) const
439 {
440     notImplemented();
441     return true;
442 }
443 
444 
representationExistsForURLScheme(const String & URLScheme) const445 bool FrameLoaderClientWx::representationExistsForURLScheme(const String& URLScheme) const
446 {
447     notImplemented();
448     return false;
449 }
450 
451 
generatedMIMETypeForURLScheme(const String & URLScheme) const452 String FrameLoaderClientWx::generatedMIMETypeForURLScheme(const String& URLScheme) const
453 {
454     notImplemented();
455     return String();
456 }
457 
458 
frameLoadCompleted()459 void FrameLoaderClientWx::frameLoadCompleted()
460 {
461     notImplemented();
462 }
463 
saveViewStateToItem(HistoryItem *)464 void FrameLoaderClientWx::saveViewStateToItem(HistoryItem*)
465 {
466     notImplemented();
467 }
468 
restoreViewState()469 void FrameLoaderClientWx::restoreViewState()
470 {
471     notImplemented();
472 }
473 
restoreScrollPositionAndViewState()474 void FrameLoaderClientWx::restoreScrollPositionAndViewState()
475 {
476     notImplemented();
477 }
478 
479 
provisionalLoadStarted()480 void FrameLoaderClientWx::provisionalLoadStarted()
481 {
482     notImplemented();
483 }
484 
485 
shouldTreatURLAsSameAsCurrent(const KURL &) const486 bool FrameLoaderClientWx::shouldTreatURLAsSameAsCurrent(const KURL&) const
487 {
488     notImplemented();
489     return false;
490 }
491 
492 
addHistoryItemForFragmentScroll()493 void FrameLoaderClientWx::addHistoryItemForFragmentScroll()
494 {
495     notImplemented();
496 }
497 
498 
didFinishLoad()499 void FrameLoaderClientWx::didFinishLoad()
500 {
501     notImplemented();
502 }
503 
504 
prepareForDataSourceReplacement()505 void FrameLoaderClientWx::prepareForDataSourceReplacement()
506 {
507     notImplemented();
508 }
509 
510 
setTitle(const String & title,const KURL &)511 void FrameLoaderClientWx::setTitle(const String& title, const KURL&)
512 {
513     notImplemented();
514 }
515 
516 
userAgent(const KURL &)517 String FrameLoaderClientWx::userAgent(const KURL&)
518 {
519     // FIXME: Use the new APIs introduced by the GTK port to fill in these values.
520     return String("Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3");
521 }
522 
dispatchDidReceiveIcon()523 void FrameLoaderClientWx::dispatchDidReceiveIcon()
524 {
525     notImplemented();
526 }
527 
frameLoaderDestroyed()528 void FrameLoaderClientWx::frameLoaderDestroyed()
529 {
530     if (m_webFrame)
531         delete m_webFrame;
532     m_webFrame = 0;
533     m_frame = 0;
534     delete this;
535 }
536 
canHandleRequest(const WebCore::ResourceRequest &) const537 bool FrameLoaderClientWx::canHandleRequest(const WebCore::ResourceRequest&) const
538 {
539     notImplemented();
540     return true;
541 }
542 
partClearedInBegin()543 void FrameLoaderClientWx::partClearedInBegin()
544 {
545     notImplemented();
546 }
547 
updateGlobalHistory()548 void FrameLoaderClientWx::updateGlobalHistory()
549 {
550     notImplemented();
551 }
552 
updateGlobalHistoryRedirectLinks()553 void FrameLoaderClientWx::updateGlobalHistoryRedirectLinks()
554 {
555     notImplemented();
556 }
557 
shouldGoToHistoryItem(WebCore::HistoryItem *) const558 bool FrameLoaderClientWx::shouldGoToHistoryItem(WebCore::HistoryItem*) const
559 {
560     notImplemented();
561     return true;
562 }
563 
dispatchDidAddBackForwardItem(WebCore::HistoryItem *) const564 void FrameLoaderClientWx::dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const
565 {
566 }
567 
dispatchDidRemoveBackForwardItem(WebCore::HistoryItem *) const568 void FrameLoaderClientWx::dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const
569 {
570 }
571 
dispatchDidChangeBackForwardIndex() const572 void FrameLoaderClientWx::dispatchDidChangeBackForwardIndex() const
573 {
574 }
575 
didDisplayInsecureContent()576 void FrameLoaderClientWx::didDisplayInsecureContent()
577 {
578     notImplemented();
579 }
580 
didRunInsecureContent(WebCore::SecurityOrigin *)581 void FrameLoaderClientWx::didRunInsecureContent(WebCore::SecurityOrigin*)
582 {
583     notImplemented();
584 }
585 
saveScrollPositionAndViewStateToItem(WebCore::HistoryItem *)586 void FrameLoaderClientWx::saveScrollPositionAndViewStateToItem(WebCore::HistoryItem*)
587 {
588     notImplemented();
589 }
590 
canCachePage() const591 bool FrameLoaderClientWx::canCachePage() const
592 {
593     return false;
594 }
595 
setMainDocumentError(WebCore::DocumentLoader *,const WebCore::ResourceError &)596 void FrameLoaderClientWx::setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&)
597 {
598     notImplemented();
599 }
600 
committedLoad(WebCore::DocumentLoader * loader,const char * data,int length)601 void FrameLoaderClientWx::committedLoad(WebCore::DocumentLoader* loader, const char* data, int length)
602 {
603     if (!m_webFrame)
604         return;
605     if (!m_pluginView) {
606         FrameLoader* fl = loader->frameLoader();
607         fl->setEncoding(m_response.textEncodingName(), false);
608         fl->addData(data, length);
609     }
610 
611     // We re-check here as the plugin can have been created
612     if (m_pluginView) {
613         if (!m_hasSentResponseToPlugin) {
614             m_pluginView->didReceiveResponse(loader->response());
615             // didReceiveResponse sets up a new stream to the plug-in. on a full-page plug-in, a failure in
616             // setting up this stream can cause the main document load to be cancelled, setting m_pluginView
617             // to null
618             if (!m_pluginView)
619                 return;
620             m_hasSentResponseToPlugin = true;
621         }
622         m_pluginView->didReceiveData(data, length);
623     }
624 }
625 
cancelledError(const WebCore::ResourceRequest & request)626 WebCore::ResourceError FrameLoaderClientWx::cancelledError(const WebCore::ResourceRequest& request)
627 {
628     notImplemented();
629     return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String());
630 }
631 
blockedError(const ResourceRequest & request)632 WebCore::ResourceError FrameLoaderClientWx::blockedError(const ResourceRequest& request)
633 {
634     notImplemented();
635     return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String());
636 }
637 
cannotShowURLError(const WebCore::ResourceRequest & request)638 WebCore::ResourceError FrameLoaderClientWx::cannotShowURLError(const WebCore::ResourceRequest& request)
639 {
640     return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String());
641 }
642 
interruptForPolicyChangeError(const WebCore::ResourceRequest & request)643 WebCore::ResourceError FrameLoaderClientWx::interruptForPolicyChangeError(const WebCore::ResourceRequest& request)
644 {
645     notImplemented();
646     return ResourceError(String(), WebKitErrorFrameLoadInterruptedByPolicyChange, request.url().string(), String());
647 }
648 
cannotShowMIMETypeError(const WebCore::ResourceResponse & response)649 WebCore::ResourceError FrameLoaderClientWx::cannotShowMIMETypeError(const WebCore::ResourceResponse& response)
650 {
651     notImplemented();
652     return ResourceError(String(), WebKitErrorCannotShowMIMEType, response.url().string(), String());
653 }
654 
fileDoesNotExistError(const WebCore::ResourceResponse & response)655 WebCore::ResourceError FrameLoaderClientWx::fileDoesNotExistError(const WebCore::ResourceResponse& response)
656 {
657     notImplemented();
658     return ResourceError(String(), WebKitErrorCannotShowURL, response.url().string(), String());
659 }
660 
shouldFallBack(const WebCore::ResourceError & error)661 bool FrameLoaderClientWx::shouldFallBack(const WebCore::ResourceError& error)
662 {
663     notImplemented();
664     return false;
665 }
666 
createDocumentLoader(const ResourceRequest & request,const SubstituteData & substituteData)667 WTF::PassRefPtr<DocumentLoader> FrameLoaderClientWx::createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData)
668 {
669     return DocumentLoader::create(request, substituteData);
670 }
671 
download(ResourceHandle *,const ResourceRequest &,const ResourceRequest &,const ResourceResponse &)672 void FrameLoaderClientWx::download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&)
673 {
674     notImplemented();
675 }
676 
assignIdentifierToInitialRequest(unsigned long identifier,DocumentLoader *,const ResourceRequest &)677 void FrameLoaderClientWx::assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&)
678 {
679     notImplemented();
680 }
681 
dispatchWillSendRequest(DocumentLoader *,unsigned long,ResourceRequest & request,const ResourceResponse & response)682 void FrameLoaderClientWx::dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest& request, const ResourceResponse& response)
683 {
684     notImplemented();
685 }
686 
shouldUseCredentialStorage(DocumentLoader *,unsigned long)687 bool FrameLoaderClientWx::shouldUseCredentialStorage(DocumentLoader*, unsigned long)
688 {
689     notImplemented();
690     return false;
691 }
692 
dispatchDidReceiveAuthenticationChallenge(DocumentLoader *,unsigned long,const AuthenticationChallenge &)693 void FrameLoaderClientWx::dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&)
694 {
695     notImplemented();
696 }
697 
dispatchDidCancelAuthenticationChallenge(DocumentLoader *,unsigned long,const AuthenticationChallenge &)698 void FrameLoaderClientWx::dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&)
699 {
700     notImplemented();
701 }
702 
dispatchDidReceiveResponse(DocumentLoader * loader,unsigned long id,const ResourceResponse & response)703 void FrameLoaderClientWx::dispatchDidReceiveResponse(DocumentLoader* loader, unsigned long id, const ResourceResponse& response)
704 {
705     notImplemented();
706     m_response = response;
707     m_firstData = true;
708 }
709 
dispatchDidReceiveContentLength(DocumentLoader * loader,unsigned long id,int length)710 void FrameLoaderClientWx::dispatchDidReceiveContentLength(DocumentLoader* loader, unsigned long id, int length)
711 {
712     notImplemented();
713 }
714 
dispatchDidFinishLoading(DocumentLoader *,unsigned long)715 void FrameLoaderClientWx::dispatchDidFinishLoading(DocumentLoader*, unsigned long)
716 {
717     notImplemented();
718 }
719 
dispatchDidFailLoading(DocumentLoader *,unsigned long,const ResourceError &)720 void FrameLoaderClientWx::dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&)
721 {
722     if (m_webView) {
723         wxWebViewLoadEvent wkEvent(m_webView);
724         wkEvent.SetState(wxWEBVIEW_LOAD_FAILED);
725         wkEvent.SetURL(m_frame->loader()->documentLoader()->request().url().string());
726         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
727     }
728 }
729 
dispatchDidLoadResourceFromMemoryCache(DocumentLoader *,const ResourceRequest &,const ResourceResponse &,int)730 bool FrameLoaderClientWx::dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int)
731 {
732     notImplemented();
733     return false;
734 }
735 
dispatchDidLoadResourceByXMLHttpRequest(unsigned long,const ScriptString &)736 void FrameLoaderClientWx::dispatchDidLoadResourceByXMLHttpRequest(unsigned long, const ScriptString&)
737 {
738   notImplemented();
739 }
740 
dispatchDidFailProvisionalLoad(const ResourceError &)741 void FrameLoaderClientWx::dispatchDidFailProvisionalLoad(const ResourceError&)
742 {
743     notImplemented();
744 }
745 
dispatchDidFailLoad(const ResourceError &)746 void FrameLoaderClientWx::dispatchDidFailLoad(const ResourceError&)
747 {
748     notImplemented();
749 }
750 
dispatchCreatePage()751 Frame* FrameLoaderClientWx::dispatchCreatePage()
752 {
753     notImplemented();
754     return false;
755 }
756 
dispatchDecidePolicyForMIMEType(FramePolicyFunction function,const String & mimetype,const ResourceRequest & request)757 void FrameLoaderClientWx::dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const String& mimetype, const ResourceRequest& request)
758 {
759     if (!m_webFrame)
760         return;
761 
762     notImplemented();
763     (m_frame->loader()->policyChecker()->*function)(PolicyUse);
764 }
765 
dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function,const NavigationAction &,const ResourceRequest & request,PassRefPtr<FormState>,const String & targetName)766 void FrameLoaderClientWx::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const NavigationAction&, const ResourceRequest& request, PassRefPtr<FormState>, const String& targetName)
767 {
768     if (!m_webFrame)
769         return;
770 
771     if (m_webView) {
772         wxWebViewNewWindowEvent wkEvent(m_webView);
773         wkEvent.SetURL(request.url().string());
774         wkEvent.SetTargetName(targetName);
775         if (m_webView->GetEventHandler()->ProcessEvent(wkEvent)) {
776             // if the app handles and doesn't skip the event,
777             // from WebKit's perspective treat it as blocked / ignored
778             (m_frame->loader()->policyChecker()->*function)(PolicyIgnore);
779             return;
780         }
781     }
782 
783     (m_frame->loader()->policyChecker()->*function)(PolicyUse);
784 }
785 
dispatchDecidePolicyForNavigationAction(FramePolicyFunction function,const NavigationAction & action,const ResourceRequest & request,PassRefPtr<FormState>)786 void FrameLoaderClientWx::dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const NavigationAction& action, const ResourceRequest& request, PassRefPtr<FormState>)
787 {
788     if (!m_webFrame)
789         return;
790 
791     if (m_webView) {
792         wxWebViewBeforeLoadEvent wkEvent(m_webView);
793         wkEvent.SetNavigationType(wxNavTypeFromWebNavType(action.type()));
794         wkEvent.SetURL(request.url().string());
795 
796         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
797         if (wkEvent.IsCancelled())
798             (m_frame->loader()->policyChecker()->*function)(PolicyIgnore);
799         else
800             (m_frame->loader()->policyChecker()->*function)(PolicyUse);
801 
802     }
803 }
804 
dispatchUnableToImplementPolicy(const ResourceError &)805 void FrameLoaderClientWx::dispatchUnableToImplementPolicy(const ResourceError&)
806 {
807     notImplemented();
808 }
809 
startDownload(const ResourceRequest &)810 void FrameLoaderClientWx::startDownload(const ResourceRequest&)
811 {
812     notImplemented();
813 }
814 
createFrame(const KURL & url,const String & name,HTMLFrameOwnerElement * ownerElement,const String & referrer,bool allowsScrolling,int marginWidth,int marginHeight)815 PassRefPtr<Frame> FrameLoaderClientWx::createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
816                                    const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight)
817 {
818     WebViewFrameData* data = new WebViewFrameData();
819     data->name = name;
820     data->ownerElement = ownerElement;
821     data->url = url;
822     data->referrer = referrer;
823     data->allowsScrolling = allowsScrolling;
824     data->marginWidth = marginWidth;
825     data->marginHeight = marginHeight;
826 
827     wxWebFrame* newFrame = new wxWebFrame(m_webView, m_webFrame, data);
828 
829     RefPtr<Frame> childFrame = adoptRef(newFrame->m_impl->frame);
830 
831     // The creation of the frame may have run arbitrary JavaScript that removed it from the page already.
832     if (!childFrame->page())
833         return 0;
834 
835     childFrame->loader()->loadURLIntoChildFrame(url, referrer, childFrame.get());
836 
837     // The frame's onload handler may have removed it from the document.
838     if (!childFrame->tree()->parent())
839         return 0;
840 
841     return childFrame.release();
842 }
843 
objectContentType(const KURL & url,const String & mimeType)844 ObjectContentType FrameLoaderClientWx::objectContentType(const KURL& url, const String& mimeType)
845 {
846     notImplemented();
847     return ObjectContentType();
848 }
849 
createPlugin(const IntSize & size,HTMLPlugInElement * element,const KURL & url,const Vector<String> & paramNames,const Vector<String> & paramValues,const String & mimeType,bool loadManually)850 PassRefPtr<Widget> FrameLoaderClientWx::createPlugin(const IntSize& size, HTMLPlugInElement* element, const KURL& url, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually)
851 {
852 #if __WXMSW__ || __WXMAC__
853     RefPtr<PluginView> pv = PluginView::create(m_frame, size, element, url, paramNames, paramValues, mimeType, loadManually);
854     if (pv->status() == PluginStatusLoadedSuccessfully)
855         return pv;
856 #endif
857     return 0;
858 }
859 
redirectDataToPlugin(Widget * pluginWidget)860 void FrameLoaderClientWx::redirectDataToPlugin(Widget* pluginWidget)
861 {
862     ASSERT(!m_pluginView);
863     m_pluginView = static_cast<PluginView*>(pluginWidget);
864     m_hasSentResponseToPlugin = false;
865 }
866 
pluginWillHandleLoadError(const ResourceResponse & response)867 ResourceError FrameLoaderClientWx::pluginWillHandleLoadError(const ResourceResponse& response)
868 {
869     notImplemented();
870     return ResourceError(String(), WebKitErrorCannotLoadPlugIn, response.url().string(), String());
871 }
872 
createJavaAppletWidget(const IntSize &,HTMLAppletElement *,const KURL & baseURL,const Vector<String> & paramNames,const Vector<String> & paramValues)873 PassRefPtr<Widget> FrameLoaderClientWx::createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL,
874                                                     const Vector<String>& paramNames, const Vector<String>& paramValues)
875 {
876     notImplemented();
877     return 0;
878 }
879 
overrideMediaType() const880 String FrameLoaderClientWx::overrideMediaType() const
881 {
882     notImplemented();
883     return String();
884 }
885 
dispatchDidClearWindowObjectInWorld(DOMWrapperWorld * world)886 void FrameLoaderClientWx::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld* world)
887 {
888     if (world != mainThreadNormalWorld())
889         return;
890 
891     if (m_webView) {
892         wxWebViewWindowObjectClearedEvent wkEvent(m_webView);
893         Frame* coreFrame = m_webView->GetMainFrame()->GetFrame();
894         JSGlobalContextRef context = toGlobalRef(coreFrame->script()->globalObject(mainThreadNormalWorld())->globalExec());
895         JSObjectRef windowObject = toRef(coreFrame->script()->globalObject(mainThreadNormalWorld()));
896         wkEvent.SetJSContext(context);
897         wkEvent.SetWindowObject(windowObject);
898         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
899     }
900 }
901 
documentElementAvailable()902 void FrameLoaderClientWx::documentElementAvailable()
903 {
904 }
905 
didPerformFirstNavigation() const906 void FrameLoaderClientWx::didPerformFirstNavigation() const
907 {
908     notImplemented();
909 }
910 
registerForIconNotification(bool listen)911 void FrameLoaderClientWx::registerForIconNotification(bool listen)
912 {
913     notImplemented();
914 }
915 
savePlatformDataToCachedFrame(CachedFrame *)916 void FrameLoaderClientWx::savePlatformDataToCachedFrame(CachedFrame*)
917 {
918     notImplemented();
919 }
920 
transitionToCommittedFromCachedFrame(CachedFrame *)921 void FrameLoaderClientWx::transitionToCommittedFromCachedFrame(CachedFrame*)
922 {
923     notImplemented();
924 }
925 
transitionToCommittedForNewPage()926 void FrameLoaderClientWx::transitionToCommittedForNewPage()
927 {
928     ASSERT(m_webFrame);
929     ASSERT(m_frame);
930     ASSERT(m_webView);
931 
932     IntSize size = IntRect(m_webView->GetRect()).size();
933     // FIXME: This value should be gotten from m_webView->IsTransparent();
934     // but transitionToCommittedForNewPage() can be called while m_webView is
935     // still being initialized.
936     bool transparent = false;
937     Color backgroundColor = transparent ? WebCore::Color::transparent : WebCore::Color::white;
938 
939     if (m_frame)
940         m_frame->createView(size, backgroundColor, transparent, IntSize(), false);
941 }
942 
shouldUsePluginDocument(const String & mimeType) const943 bool FrameLoaderClientWx::shouldUsePluginDocument(const String &mimeType) const
944 {
945     // NOTE: Plugin Documents are used for viewing PDFs, etc. inline, and should
946     // not be used for pages with plugins in them.
947     return false;
948 }
949 
950 }
951