bool ResourceErrorBase::compare(const ResourceError& a, const ResourceError& b) { if (a.isNull() && b.isNull()) return true; if (a.isNull() || b.isNull()) return false; if (a.domain() != b.domain()) return false; if (a.errorCode() != b.errorCode()) return false; if (a.failingURL() != b.failingURL()) return false; if (a.localizedDescription() != b.localizedDescription()) return false; if (a.isCancellation() != b.isCancellation()) return false; return platformCompare(a, b); }
void FrameLoaderClientBlackBerry::dispatchDidFailProvisionalLoad(const ResourceError& error) { if (isMainFrame()) { m_loadError = error; m_webPagePrivate->setLoadState(WebPagePrivate::Failed); if (error.domain() == ResourceError::platformErrorDomain && (error.errorCode() == BlackBerry::Platform::FilterStream::StatusErrorAlreadyHandled)) { // Error has already been displayed by client. return; } if (error.domain().isEmpty() && !error.errorCode() && error.failingURL().isEmpty() && error.localizedDescription().isEmpty()) { // Don't try to display empty errors returned from the unimplemented error functions in FrameLoaderClientBlackBerry - there's nothing to display anyway. return; } } if (m_webPagePrivate->m_dumpRenderTree) m_webPagePrivate->m_dumpRenderTree->didFailProvisionalLoadForFrame(m_frame); if (!isMainFrame()) return; String errorPage = m_webPagePrivate->m_client->getErrorPage(error.errorCode() , error.localizedDescription().isEmpty() ? "" : error.localizedDescription().utf8().data() , error.failingURL().isEmpty() ? "" : error.failingURL().utf8().data()); // 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())); 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); } }
void FrameLoaderClient::dispatchDidFailLoad(const ResourceError& error) { if (m_loadingErrorPage) return; notifyStatus(m_frame, WEBKIT_LOAD_FAILED); WebKitWebView* webView = getViewFromFrame(m_frame); GError* webError = g_error_new_literal(g_quark_from_string(error.domain().utf8().data()), error.errorCode(), error.localizedDescription().utf8().data()); gboolean isHandled = false; g_signal_emit_by_name(webView, "load-error", m_frame, error.failingURL().utf8().data(), webError, &isHandled); if (isHandled) { g_error_free(webError); return; } if (!shouldFallBack(error)) { g_error_free(webError); return; } m_loadingErrorPage = true; String content; gchar* fileContent = 0; gchar* errorURI = g_filename_to_uri(DATA_DIR"/webkit-1.0/resources/error.html", NULL, NULL); GFile* errorFile = g_file_new_for_uri(errorURI); g_free(errorURI); if (!errorFile) content = makeString("<html><body>", webError->message, "</body></html>"); else { gboolean loaded = g_file_load_contents(errorFile, 0, &fileContent, 0, 0, 0); if (!loaded) content = makeString("<html><body>", webError->message, "</body></html>"); else content = String::format(fileContent, error.failingURL().utf8().data(), webError->message); } webkit_web_frame_load_alternate_string(m_frame, content.utf8().data(), 0, error.failingURL().utf8().data()); g_free(fileContent); if (errorFile) g_object_unref(errorFile); g_error_free(webError); }
void FrameLoaderClient::dispatchDidFailLoad(const ResourceError& error) { WebKitWebView* webView = getViewFromFrame(m_frame); GError* webError = g_error_new_literal(g_quark_from_string(error.domain().utf8().data()), error.errorCode(), error.localizedDescription().utf8().data()); gboolean isHandled = false; g_signal_emit_by_name(webView, "load-error", m_frame, error.failingURL().utf8().data(), webError, &isHandled); if (isHandled) { g_error_free(webError); return; } if (!shouldFallBack(error)) { g_error_free(webError); // FIXME: load-done is deprecated. Please remove when signal's been removed. g_signal_emit_by_name(m_frame, "load-done", false); return; } String content; gchar* fileContent = 0; gchar* errorURI = g_filename_to_uri(DATA_DIR"/webkit-1.0/resources/error.html", NULL, NULL); GFile* errorFile = g_file_new_for_uri(errorURI); g_free(errorURI); if (!errorFile) content = String::format("<html><body>%s</body></html>", webError->message); else { gboolean loaded = g_file_load_contents(errorFile, 0, &fileContent, 0, 0, 0); if (!loaded) content = String::format("<html><body>%s</body></html>", webError->message); else content = String::format(fileContent, error.failingURL().utf8().data(), webError->message); } webkit_web_frame_load_alternate_string(m_frame, content.utf8().data(), 0, error.failingURL().utf8().data()); g_free(fileContent); if (errorFile) g_object_unref(errorFile); g_error_free(webError); // FIXME: load-done is deprecated. Please remove when signal's been removed. g_signal_emit_by_name(m_frame, "load-done", false); }
void FrameLoaderClientEfl::dispatchDidFailLoad(const ResourceError& err) { ewk_frame_load_error(m_frame, err.domain().utf8().data(), err.errorCode(), err.isCancellation(), err.localizedDescription().utf8().data(), err.failingURL().utf8().data()); ewk_frame_load_finished(m_frame, err.domain().utf8().data(), err.errorCode(), err.isCancellation(), err.localizedDescription().utf8().data(), err.failingURL().utf8().data()); }
void FrameLoaderClientEfl::dispatchDidFailProvisionalLoad(const ResourceError& err) { Ewk_Frame_Load_Error error; CString errorDomain = err.domain().utf8(); CString errorDescription = err.localizedDescription().utf8(); CString failingUrl = err.failingURL().utf8(); DBG("ewkFrame=%p, error=%s (%d, cancellation=%hhu) \"%s\", url=%s", m_frame, errorDomain.data(), err.errorCode(), err.isCancellation(), errorDescription.data(), failingUrl.data()); error.code = err.errorCode(); error.is_cancellation = err.isCancellation(); error.domain = errorDomain.data(); error.description = errorDescription.data(); error.failing_url = failingUrl.data(); error.resource_identifier = 0; error.frame = m_frame; ewk_frame_load_provisional_failed(m_frame, &error); if (isLoadingMainFrame()) ewk_view_load_provisional_failed(m_view, &error); dispatchDidFailLoad(err); }
void FetchManager::Loader::didFailAccessControlCheck(const ResourceError& error) { if (error.isCancellation() || error.isTimeout() || error.domain() != errorDomainBlinkInternal) failed(String()); else failed("Fetch API cannot load " + error.failingURL() + ". " + error.localizedDescription()); }
void EventSource::didFailAccessControlCheck(const ResourceError& error) { String message = makeString("EventSource cannot load ", error.failingURL(), ". ", error.localizedDescription()); scriptExecutionContext()->addConsoleMessage(JSMessageSource, ErrorMessageLevel, message); abortConnectionAttempt(); }
void EventSource::didFailAccessControlCheck(const ResourceError& error) { DCHECK(m_loader); String message = "EventSource cannot load " + error.failingURL() + ". " + error.localizedDescription(); getExecutionContext()->addConsoleMessage( ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, message)); abortConnectionAttempt(); }
void ArgumentCoder<ResourceError>::encode(ArgumentEncoder* encoder, const ResourceError& resourceError) { encoder->encode(resourceError.domain()); encoder->encode(resourceError.errorCode()); encoder->encode(resourceError.failingURL()); encoder->encode(resourceError.localizedDescription()); #if USE(CFNETWORK) encoder->encode(PlatformCertificateInfo(resourceError.certificate())); #endif }
void ArgumentCoder<ResourceError>::encode(ArgumentEncoder* encoder, const ResourceError& resourceError) { bool errorIsNull = resourceError.isNull(); encoder->encode(errorIsNull); if (errorIsNull) return; encoder->encode(resourceError.domain()); encoder->encode(resourceError.errorCode()); encoder->encode(resourceError.failingURL()); encoder->encode(resourceError.localizedDescription()); }
void FrameLoaderClientAndroid::setMainDocumentError(DocumentLoader* docLoader, const ResourceError& error) { ASSERT(m_frame); if (m_manualLoader) { m_manualLoader->didFail(error); m_manualLoader = NULL; m_hasSentResponseToPlugin = false; } else { if (!error.isNull() && error.errorCode() >= InternalErrorLast) m_webFrame->reportError(error.errorCode(), error.localizedDescription(), error.failingURL()); } }
void FrameConsole::didFailLoading(unsigned long requestIdentifier, const ResourceError& error) { if (error.isCancellation()) // Report failures only. return; StringBuilder message; message.append("Failed to load resource"); if (!error.localizedDescription().isEmpty()) { message.append(": "); message.append(error.localizedDescription()); } addMessageToStorage(ConsoleMessage::createForRequest( NetworkMessageSource, ErrorMessageLevel, message.toString(), error.failingURL(), requestIdentifier)); }
bool ResourceError::compare(const ResourceError& a, const ResourceError& b) { if (a.isNull() && b.isNull()) return true; if (a.isNull() || b.isNull()) return false; if (a.domain() != b.domain()) return false; if (a.errorCode() != b.errorCode()) return false; if (a.failingURL() != b.failingURL()) return false; if (a.localizedDescription() != b.localizedDescription()) return false; if (a.isCancellation() != b.isCancellation()) return false; if (a.isAccessCheck() != b.isAccessCheck()) return false; if (a.isTimeout() != b.isTimeout()) return false; if (a.staleCopyInCache() != b.staleCopyInCache()) return false; if (a.wasIgnoredByHandler() != b.wasIgnoredByHandler()) return false; return true; }
void ArgumentCoder<ResourceError>::encodePlatformData(ArgumentEncoder& encoder, const ResourceError& resourceError) { bool errorIsNull = resourceError.isNull(); encoder << errorIsNull; if (errorIsNull) return; encoder << resourceError.domain(); encoder << resourceError.errorCode(); encoder << resourceError.failingURL().string(); encoder << resourceError.localizedDescription(); encoder << resourceError.isCancellation(); encoder << resourceError.isTimeout(); encoder << CertificateInfo(resourceError); }
void ArgumentCoder<ResourceError>::encode(ArgumentEncoder& encoder, const ResourceError& resourceError) { if (kShouldSerializeWebCoreData) { bool errorIsNull = resourceError.isNull(); encoder << errorIsNull; if (errorIsNull) return; encoder << resourceError.domain(); encoder << resourceError.errorCode(); encoder << resourceError.failingURL(); encoder << resourceError.localizedDescription(); encoder << resourceError.isCancellation(); encoder << resourceError.isTimeout(); } encodePlatformData(encoder, resourceError); }
void EventSource::didFail(const ResourceError& error) { ASSERT(m_state != CLOSED); if (error.isAccessControl()) { String message = makeString("EventSource cannot load ", error.failingURL().string(), ". ", error.localizedDescription()); scriptExecutionContext()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, message); abortConnectionAttempt(); return; } ASSERT(m_requestInFlight); if (error.isCancellation()) m_state = CLOSED; // FIXME: Why don't we need to clear data members here as in didFinishLoading? networkRequestEnded(); }
void FrameLoaderClientEfl::dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError& err) { Ewk_Frame_Load_Error error; CString errorDomain = err.domain().utf8(); CString errorDescription = err.localizedDescription().utf8(); CString failingUrl = err.failingURL().utf8(); DBG("ewkFrame=%p, resource=%ld, error=%s (%d, cancellation=%hhu) \"%s\", url=%s", m_frame, identifier, errorDomain.data(), err.errorCode(), err.isCancellation(), errorDescription.data(), failingUrl.data()); error.code = err.errorCode(); error.is_cancellation = err.isCancellation(); error.domain = errorDomain.data(); error.description = errorDescription.data(); error.failing_url = failingUrl.data(); error.resource_identifier = identifier; error.frame = m_frame; ewk_frame_load_resource_failed(m_frame, &error); evas_object_smart_callback_call(m_view, "load,resource,failed", &error); }
void FrameLoaderClientAndroid::dispatchDidFailProvisionalLoad(const ResourceError& error) { ASSERT(m_frame); // Ignore ErrorInterrupted since it is due to a policy interruption. This // is caused by a decision to download the main resource rather than // display it. if (error.errorCode() == InternalErrorInterrupted || error.errorCode() == InternalErrorCancelled) { // If we decided to download the main resource or if the user cancelled // it, make sure we report that the load is done. didFinishLoad(); return; } AssetManager* am = globalAssetManager(); // Check to see if the error code was not generated internally WebCore::PlatformBridge::rawResId id = WebCore::PlatformBridge::NoDomain; if ((error.errorCode() == ErrorFile || error.errorCode() == ErrorFileNotFound) && (!error.localizedDescription().isEmpty())) { id = WebCore::PlatformBridge::LoadError; } String filename = m_webFrame->getRawResourceFilename(id); if (filename.isEmpty()) return; // Grab the error page from the asset manager Asset* a = am->openNonAsset( filename.utf8().data(), Asset::ACCESS_BUFFER); if (!a) return; // Take the failing url and encode html entities so javascript urls are not // executed. CString failingUrl = error.failingURL().utf8(); WTF::Vector<char> url; int len = failingUrl.length(); const char* data = failingUrl.data(); for (int i = 0; i < len; i++) { char c = data[i]; if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) url.append(c); else { char buf[16]; int res = sprintf(buf, "&#%d;", c); buf[res] = 0; url.append(buf, res); } } // Replace all occurances of %s with the failing url. String s = UTF8Encoding().decode((const char*)a->getBuffer(false), a->getLength()); // samsung shkim // \frameworks\base\core\res\res\raw-XX\nodomain.html or loaderror.html // These error pages does not have <viewport> tag, it is loaded as low zoom scale if( s.contains( "viewport" ) == false ) s = s.replace( "<head>", "<head> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"/>" ); s = s.replace("%s", String(url.data(), url.size())); // Replace all occurances of %e with the error text s = s.replace("%e", error.localizedDescription()); // Create the request and the substitute data and tell the FrameLoader to // load with the replacement data. // use KURL(const char*) as KURL(const String& url) can trigger ASSERT for // invalidate URL string. loadDataIntoFrame(m_frame, KURL(ParsedURLString, data), error.failingURL(), s); // Delete the asset. delete a; }
ResourceError downloadNetworkError(const ResourceError& networkError) { return ResourceError(errorDomainDownload, DownloadErrorNetwork, networkError.failingURL(), networkError.localizedDescription()); }
void InspectorConsoleAgent::didFailLoading(unsigned long requestIdentifier, DocumentLoader*, const ResourceError& error) { if (error.isCancellation()) // Report failures only. return; StringBuilder message; message.appendLiteral("Failed to load resource"); if (!error.localizedDescription().isEmpty()) { message.appendLiteral(": "); message.append(error.localizedDescription()); } addMessageToConsole(NetworkMessageSource, LogMessageType, ErrorMessageLevel, message.toString(), error.failingURL(), 0, 0, 0, requestIdentifier); }
void FrameConsole::didFailLoading(unsigned long requestIdentifier, const ResourceError& error) { if (error.isCancellation()) // Report failures only. return; ConsoleMessageStorage* storage = messageStorage(); if (!storage) return; StringBuilder message; message.appendLiteral("Failed to load resource"); if (!error.localizedDescription().isEmpty()) { message.appendLiteral(": "); message.append(error.localizedDescription()); } RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(NetworkMessageSource, ErrorMessageLevel, message.toString(), error.failingURL()); consoleMessage->setRequestIdentifier(requestIdentifier); storage->reportMessage(m_frame->document(), consoleMessage.release()); }
void WebConsoleAgent::didFailLoading(unsigned long requestIdentifier, const ResourceError& error) { if (!m_injectedScriptManager.inspectorEnvironment().developerExtrasEnabled()) return; // Report failures only. if (error.isCancellation()) return; StringBuilder message; message.appendLiteral("Failed to load resource"); if (!error.localizedDescription().isEmpty()) { message.appendLiteral(": "); message.append(error.localizedDescription()); } addMessageToConsole(std::make_unique<ConsoleMessage>(MessageSource::Network, MessageType::Log, MessageLevel::Error, message.toString(), error.failingURL(), 0, 0, nullptr, requestIdentifier)); }
void InspectorConsoleAgent::didFailLoading(unsigned long identifier, const ResourceError& error) { if (!developerExtrasEnabled()) return; if (error.isCancellation()) // Report failures only. return; String message = "Failed to load resource"; if (!error.localizedDescription().isEmpty()) message += ": " + error.localizedDescription(); String requestId = IdentifiersFactory::requestId(identifier); addConsoleMessage(adoptPtr(new ConsoleMessage(NetworkMessageSource, LogMessageType, ErrorMessageLevel, message, error.failingURL(), requestId))); }
void didFail(ResourceHandle*, const ResourceError& error) { downloadFailed(platformDownloadNetworkError(error.errorCode(), error.failingURL(), error.localizedDescription())); }
/*this function shows an error message in a popup*/ void FrameLoaderClientWebUI::dispatchDidFailProvisionalLoad(const ResourceError& error) { if (!(error.isNull())) { char errorCode[2]; sprintf(errorCode, "%i", error.errorCode()); String description = error.localizedDescription().deprecatedString().ascii(); description = description.replace("'","\\'"); executeJS(m_frame, "errorLoad('" + String(error.domain().deprecatedString().ascii()) + "','" + String(errorCode) + "','" + String(error.failingURL().deprecatedString().ascii()) + "','" + description + "')"); } m_loadFailed = true; }
void InspectorConsoleAgent::didFailLoading(unsigned long identifier, const ResourceError& error) { if (!m_inspectorAgent->enabled()) return; if (error.isCancellation()) // Report failures only. return; String message = "Failed to load resource"; if (!error.localizedDescription().isEmpty()) message += ": " + error.localizedDescription(); addConsoleMessage(adoptPtr(new ConsoleMessage(OtherMessageSource, NetworkErrorMessageType, ErrorMessageLevel, message, error.failingURL(), identifier))); }