Modified: trunk/Source/WebKit/blackberry/ChangeLog (133521 => 133522)
--- trunk/Source/WebKit/blackberry/ChangeLog 2012-11-05 21:51:24 UTC (rev 133521)
+++ trunk/Source/WebKit/blackberry/ChangeLog 2012-11-05 21:59:44 UTC (rev 133522)
@@ -1,3 +1,21 @@
+2012-11-05 Lianghui Chen <[email protected]>
+
+ [BlackBerry] Do not display error page for failed downloads
+ https://bugs.webkit.org/show_bug.cgi?id=101246
+
+ Internal PR: 236318
+ Internal reviewed by Joe Mason, Leo Yang.
+ Reviewed by Rob Buis.
+
+ Right now when a main load, including all downloads, failed, it will
+ display an error page. This is not very user friendly, especially for
+ WebWorks application, which want to use its own user interface to info
+ user about the failure.
+ So we just stop displaying error page for downloads.
+
+ * WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
+ (WebCore::FrameLoaderClientBlackBerry::dispatchDidFailProvisionalLoad):
+
2012-11-05 Simon Fraser <[email protected]>
Fix layer borders to cleaning appear and disappear on switching
Modified: trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp (133521 => 133522)
--- trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp 2012-11-05 21:51:24 UTC (rev 133521)
+++ trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp 2012-11-05 21:59:44 UTC (rev 133522)
@@ -709,33 +709,38 @@
if (!isMainFrame())
return;
- String errorPage = m_webPagePrivate->m_client->getErrorPage(error.errorCode(), error.localizedDescription(), error.failingURL());
-
// Make sure we're still in the provisionalLoad state - getErrorPage runs a
// nested event loop while it's waiting for client resources to load so
// there's a small window for the user to hit stop.
- if (m_frame->loader()->provisionalDocumentLoader()) {
- SubstituteData errorData(utf8Buffer(errorPage), "text/html", "utf-8", KURL(KURL(), error.failingURL()));
+ if (!m_frame->loader()->provisionalDocumentLoader())
+ return;
- ResourceRequest originalRequest = m_frame->loader()->provisionalDocumentLoader()->originalRequest();
+ ResourceRequest originalRequest = m_frame->loader()->provisionalDocumentLoader()->originalRequest();
- // Loading using SubstituteData will replace the original request with our
- // error data. This must be done within dispatchDidFailProvisionalLoad,
- // and do NOT call stopAllLoaders first, because the loader checks the
- // provisionalDocumentLoader to decide the load type; if called any other
- // way, the error page is added to the end of the history instead of
- // replacing the failed load.
- //
- // If this comes from a back/forward navigation, we need to save the current viewstate
- // to original historyitem, and prevent the restore of view state to the error page.
- if (isBackForwardLoadType(m_frame->loader()->loadType())) {
- m_frame->loader()->history()->saveScrollPositionAndViewStateToItem(m_frame->loader()->history()->currentItem());
- ASSERT(m_frame->loader()->history()->provisionalItem());
- m_frame->loader()->history()->provisionalItem()->viewState().shouldSaveViewState = false;
- }
- m_loadingErrorPage = true;
- m_frame->loader()->load(originalRequest, errorData, false);
+ // Do not show error page for a failed download.
+ if (originalRequest.forceDownload())
+ return;
+
+ String errorPage = m_webPagePrivate->m_client->getErrorPage(error.errorCode(), error.localizedDescription(), error.failingURL());
+ SubstituteData errorData(utf8Buffer(errorPage), "text/html", "utf-8", KURL(KURL(), error.failingURL()));
+
+ // Loading using SubstituteData will replace the original request with our
+ // error data. This must be done within dispatchDidFailProvisionalLoad,
+ // and do NOT call stopAllLoaders first, because the loader checks the
+ // provisionalDocumentLoader to decide the load type; if called any other
+ // way, the error page is added to the end of the history instead of
+ // replacing the failed load.
+ //
+ // If this comes from a back/forward navigation, we need to save the current viewstate
+ // to original historyitem, and prevent the restore of view state to the error page.
+ if (isBackForwardLoadType(m_frame->loader()->loadType())) {
+ m_frame->loader()->history()->saveScrollPositionAndViewStateToItem(m_frame->loader()->history()->currentItem());
+ ASSERT(m_frame->loader()->history()->provisionalItem());
+ m_frame->loader()->history()->provisionalItem()->viewState().shouldSaveViewState = false;
}
+
+ m_loadingErrorPage = true;
+ m_frame->loader()->load(originalRequest, errorData, false);
}
void FrameLoaderClientBlackBerry::dispatchWillSubmitForm(FramePolicyFunction function, PassRefPtr<FormState>)