diff options
Diffstat (limited to 'WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp')
-rw-r--r-- | WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp | 93 |
1 files changed, 61 insertions, 32 deletions
diff --git a/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp b/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp index 3cfd86e..9603bd5 100644 --- a/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp +++ b/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp @@ -28,7 +28,11 @@ #include "config.h" #include "FrameLoaderClientWx.h" +#include <JavaScriptCore/JavaScript.h> +#include <JavaScriptCore/APICast.h> + #include "DocumentLoader.h" +#include "FormState.h" #include "Frame.h" #include "FrameLoaderTypes.h" #include "FrameView.h" @@ -42,9 +46,12 @@ #include "RenderPart.h" #include "ResourceError.h" #include "ResourceResponse.h" +#include "ScriptController.h" +#include "ScriptString.h" #include <stdio.h> +#include "WebFrame.h" #include "WebView.h" #include "WebViewPrivate.h" @@ -96,8 +103,7 @@ void FrameLoaderClientWx::detachFrameLoader() bool FrameLoaderClientWx::hasWebView() const { - notImplemented(); - return true; + return m_webView != NULL; } bool FrameLoaderClientWx::hasBackForwardList() const @@ -476,8 +482,7 @@ void FrameLoaderClientWx::didFinishLoad() void FrameLoaderClientWx::prepareForDataSourceReplacement() { - if (m_frame && m_frame->loader()) - m_frame->loader()->detachChildren(); + notImplemented(); } @@ -555,40 +560,39 @@ void FrameLoaderClientWx::committedLoad(WebCore::DocumentLoader* loader, const c fl->addData(data, length); } -WebCore::ResourceError FrameLoaderClientWx::cancelledError(const WebCore::ResourceRequest&) +WebCore::ResourceError FrameLoaderClientWx::cancelledError(const WebCore::ResourceRequest& request) { notImplemented(); - return ResourceError(); + return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String()); } -WebCore::ResourceError FrameLoaderClientWx::blockedError(const ResourceRequest&) +WebCore::ResourceError FrameLoaderClientWx::blockedError(const ResourceRequest& request) { notImplemented(); - return ResourceError(); + return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String()); } -WebCore::ResourceError FrameLoaderClientWx::cannotShowURLError(const WebCore::ResourceRequest&) +WebCore::ResourceError FrameLoaderClientWx::cannotShowURLError(const WebCore::ResourceRequest& request) { - notImplemented(); - return ResourceError(); + return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String()); } -WebCore::ResourceError FrameLoaderClientWx::interruptForPolicyChangeError(const WebCore::ResourceRequest&) +WebCore::ResourceError FrameLoaderClientWx::interruptForPolicyChangeError(const WebCore::ResourceRequest& request) { notImplemented(); - return ResourceError(); + return ResourceError(String(), WebKitErrorFrameLoadInterruptedByPolicyChange, request.url().string(), String()); } -WebCore::ResourceError FrameLoaderClientWx::cannotShowMIMETypeError(const WebCore::ResourceResponse&) +WebCore::ResourceError FrameLoaderClientWx::cannotShowMIMETypeError(const WebCore::ResourceResponse& response) { notImplemented(); - return ResourceError(); + return ResourceError(String(), WebKitErrorCannotShowMIMEType, response.url().string(), String()); } -WebCore::ResourceError FrameLoaderClientWx::fileDoesNotExistError(const WebCore::ResourceResponse&) +WebCore::ResourceError FrameLoaderClientWx::fileDoesNotExistError(const WebCore::ResourceResponse& response) { notImplemented(); - return ResourceError(); + return ResourceError(String(), WebKitErrorCannotShowURL, response.url().string(), String()); } bool FrameLoaderClientWx::shouldFallBack(const WebCore::ResourceError& error) @@ -652,7 +656,12 @@ void FrameLoaderClientWx::dispatchDidFinishLoading(DocumentLoader*, unsigned lon void FrameLoaderClientWx::dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) { - notImplemented(); + if (m_webView) { + wxWebViewLoadEvent wkEvent(m_webView); + wkEvent.SetState(wxWEBVIEW_LOAD_FAILED); + wkEvent.SetURL(m_frame->loader()->documentLoader()->request().url().string()); + m_webView->GetEventHandler()->ProcessEvent(wkEvent); + } } bool FrameLoaderClientWx::dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) @@ -661,6 +670,11 @@ bool FrameLoaderClientWx::dispatchDidLoadResourceFromMemoryCache(DocumentLoader* return false; } +void FrameLoaderClientWx::dispatchDidLoadResourceByXMLHttpRequest(unsigned long, const ScriptString&) +{ + notImplemented(); +} + void FrameLoaderClientWx::dispatchDidFailProvisionalLoad(const ResourceError&) { notImplemented(); @@ -686,12 +700,23 @@ void FrameLoaderClientWx::dispatchDecidePolicyForMIMEType(FramePolicyFunction fu (m_frame->loader()->*function)(PolicyUse); } -void FrameLoaderClientWx::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) +void FrameLoaderClientWx::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const NavigationAction&, const ResourceRequest& request, PassRefPtr<FormState>, const String& targetName) { if (!m_frame) return; - notImplemented(); + if (m_webView) { + wxWebViewNewWindowEvent wkEvent(m_webView); + wkEvent.SetURL(request.url().string()); + wkEvent.SetTargetName(targetName); + if (m_webView->GetEventHandler()->ProcessEvent(wkEvent)) { + // if the app handles and doesn't skip the event, + // from WebKit's perspective treat it as blocked / ignored + (m_frame->loader()->*function)(PolicyIgnore); + return; + } + } + (m_frame->loader()->*function)(PolicyUse); } @@ -785,7 +810,7 @@ ObjectContentType FrameLoaderClientWx::objectContentType(const KURL& url, const return ObjectContentType(); } -Widget* FrameLoaderClientWx::createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) +PassRefPtr<Widget> FrameLoaderClientWx::createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) { notImplemented(); return 0; @@ -797,13 +822,13 @@ void FrameLoaderClientWx::redirectDataToPlugin(Widget* pluginWidget) return; } -ResourceError FrameLoaderClientWx::pluginWillHandleLoadError(const ResourceResponse&) +ResourceError FrameLoaderClientWx::pluginWillHandleLoadError(const ResourceResponse& response) { notImplemented(); - return ResourceError(); + return ResourceError(String(), WebKitErrorCannotLoadPlugIn, response.url().string(), String()); } -Widget* FrameLoaderClientWx::createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, +PassRefPtr<Widget> FrameLoaderClientWx::createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) { notImplemented(); @@ -818,7 +843,15 @@ String FrameLoaderClientWx::overrideMediaType() const void FrameLoaderClientWx::windowObjectCleared() { - notImplemented(); + if (m_webView) { + wxWebViewWindowObjectClearedEvent wkEvent(m_webView); + Frame* coreFrame = m_webView->GetMainFrame()->GetFrame(); + JSGlobalContextRef context = toGlobalRef(coreFrame->script()->globalObject()->globalExec()); + JSObjectRef windowObject = toRef(coreFrame->script()->globalObject()); + wkEvent.SetJSContext(context); + wkEvent.SetWindowObject(windowObject); + m_webView->GetEventHandler()->ProcessEvent(wkEvent); + } } void FrameLoaderClientWx::documentElementAvailable() @@ -857,21 +890,17 @@ void FrameLoaderClientWx::transitionToCommittedForNewPage() m_frame->setView(0); - FrameView* frameView; + RefPtr<FrameView> frameView; if (isMainFrame) - frameView = new FrameView(m_frame, IntRect(m_webView->GetRect()).size()); + frameView = FrameView::create(m_frame, IntRect(m_webView->GetRect()).size()); else - frameView = new FrameView(m_frame); + frameView = FrameView::create(m_frame); ASSERT(frameView); m_frame->setView(frameView); - frameView->deref(); // FrameViews are created with a ref count of 1. Release this ref since we've assigned it to frame. frameView->setPlatformWidget(m_webView); - if (m_frame->ownerRenderer()) - m_frame->ownerRenderer()->setWidget(frameView); - if (HTMLFrameOwnerElement* owner = m_frame->ownerElement()) m_frame->view()->setScrollbarModes(owner->scrollingMode(), owner->scrollingMode()); } |