diff options
Diffstat (limited to 'WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp')
-rw-r--r-- | WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp b/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp index 2358fab..438d6a0 100644 --- a/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp +++ b/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp @@ -707,8 +707,11 @@ void FrameLoaderClientEfl::dispatchDidFinishLoading(DocumentLoader*, unsigned lo notImplemented(); } -void FrameLoaderClientEfl::dispatchDidFailLoading(DocumentLoader* loader, unsigned long identifier, const ResourceError&) +void FrameLoaderClientEfl::dispatchDidFailLoading(DocumentLoader* loader, unsigned long identifier, const ResourceError& err) { + if (!shouldFallBack(err)) + return; + if (m_firstData) { FrameLoader* fl = loader->frameLoader(); fl->writer()->setEncoding(m_response.textEncodingName(), false); @@ -735,6 +738,9 @@ void FrameLoaderClientEfl::dispatchDidFailProvisionalLoad(const ResourceError& e void FrameLoaderClientEfl::dispatchDidFailLoad(const ResourceError& err) { + if (!shouldFallBack(err)) + return; + m_loadError = err; ewk_frame_load_error(m_frame, m_loadError.domain().utf8().data(), @@ -782,7 +788,7 @@ ResourceError FrameLoaderClientEfl::cannotShowURLError(const ResourceRequest& re ResourceError FrameLoaderClientEfl::interruptForPolicyChangeError(const ResourceRequest& request) { return ResourceError("Error", WebKitErrorFrameLoadInterruptedByPolicyChange, - request.url().string(), "Frame load interruped by policy change"); + request.url().string(), "Frame load interrupted by policy change"); } ResourceError FrameLoaderClientEfl::cannotShowMIMETypeError(const ResourceResponse& response) @@ -803,10 +809,9 @@ ResourceError FrameLoaderClientEfl::pluginWillHandleLoadError(const ResourceResp return ResourceError("Error", 0, "", ""); } -bool FrameLoaderClientEfl::shouldFallBack(const ResourceError&) +bool FrameLoaderClientEfl::shouldFallBack(const ResourceError& error) { - notImplemented(); - return false; + return !(error.isCancellation() || (error.errorCode() == WebKitErrorFrameLoadInterruptedByPolicyChange)); } bool FrameLoaderClientEfl::canCachePage() const @@ -816,8 +821,17 @@ bool FrameLoaderClientEfl::canCachePage() const Frame* FrameLoaderClientEfl::dispatchCreatePage() { - notImplemented(); - return 0; + if (!m_view) + return 0; + + Evas_Object* newView = ewk_view_window_create(m_view, EINA_FALSE, 0); + Evas_Object* mainFrame; + if (!newView) + mainFrame = m_frame; + else + mainFrame = ewk_view_frame_main_get(newView); + + return ewk_frame_core_get(mainFrame); } void FrameLoaderClientEfl::dispatchUnableToImplementPolicy(const ResourceError&) |