summaryrefslogtreecommitdiffstats
path: root/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp')
-rw-r--r--WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp28
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&)