void MainResourceLoader::notifyFinished(CachedResource* resource) { ASSERT_UNUSED(resource, m_resource == resource); ASSERT(m_resource); if (!m_resource->errorOccurred() && !m_resource->wasCanceled()) { didFinishLoading(m_resource->loadFinishTime()); return; } // FIXME: we should fix the design to eliminate the need for a platform ifdef here #if !PLATFORM(CHROMIUM) if (m_documentLoader->request().cachePolicy() == ReturnCacheDataDontLoad && !m_resource->wasCanceled()) { frameLoader()->retryAfterFailedCacheOnlyMainResourceLoad(); return; } #endif const ResourceError& error = m_resource->resourceError(); if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForMainError(request(), error)) return; // There is a bug in CFNetwork where callbacks can be dispatched even when loads are deferred. // See <rdar://problem/6304600> for more details. #if !USE(CF) ASSERT(!defersLoading()); #endif receivedError(error); }
void MainResourceLoader::notifyFinished(CachedResource* resource) { ASSERT_UNUSED(resource, m_resource == resource); ASSERT(m_resource); if (!m_resource->errorOccurred() && !m_resource->wasCanceled()) { didFinishLoading(m_resource->loadFinishTime()); return; } if (m_documentLoader->request().cachePolicy() == ReturnCacheDataDontLoad && !m_resource->wasCanceled()) { frameLoader()->retryAfterFailedCacheOnlyMainResourceLoad(); return; } #if USE(CONTENT_FILTERING) if (m_filter) { wkFilterRelease(m_filter); m_filter = 0; } #endif const ResourceError& error = m_resource->resourceError(); if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForMainError(request(), error)) return; // There is a bug in CFNetwork where callbacks can be dispatched even when loads are deferred. // See <rdar://problem/6304600> for more details. #if !USE(CF) ASSERT(!defersLoading()); #endif receivedError(error); }
void MainResourceLoader::cancel(const ResourceError& error) { RefPtr<MainResourceLoader> protect(this); ResourceError resourceError = error.isNull() ? frameLoader()->cancelledError(request()) : error; m_dataLoadTimer.stop(); if (m_waitingForContentPolicy) { frameLoader()->policyChecker()->cancelCheck(); ASSERT(m_waitingForContentPolicy); m_waitingForContentPolicy = false; deref(); // balances ref in responseReceived } if (loader()) loader()->cancel(resourceError); clearResource(); receivedError(resourceError); #if USE(CONTENT_FILTERING) if (m_filter) { wkFilterRelease(m_filter); m_filter = 0; } #endif }
void MainResourceLoader::notifyFinished(CachedResource* resource) { ASSERT_UNUSED(resource, m_resource == resource); if (!m_resource || (!m_resource->errorOccurred() && !m_resource->wasCanceled())) { didFinishLoading(m_resource->loadFinishTime()); return; } #if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 if (m_filter) { wkFilterRelease(m_filter); m_filter = 0; } #endif const ResourceError& error = m_resource->resourceError(); if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForMainError(request(), error)) return; // There is a bug in CFNetwork where callbacks can be dispatched even when loads are deferred. // See <rdar://problem/6304600> for more details. #if !USE(CF) ASSERT(!defersLoading()); #endif receivedError(error); }
void MainResourceLoader::cancel(const ResourceError& error) { RefPtr<MainResourceLoader> protect(this); ResourceError resourceError = error.isNull() ? frameLoader()->cancelledError(request()) : error; m_dataLoadTimer.stop(); if (m_waitingForContentPolicy) { frameLoader()->policyChecker()->cancelCheck(); ASSERT(m_waitingForContentPolicy); m_waitingForContentPolicy = false; deref(); // balances ref in responseReceived } if (loader()) loader()->cancel(resourceError); clearResource(); receivedError(resourceError); #if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 if (m_filter) { wkFilterRelease(m_filter); m_filter = 0; } #endif }
void MainResourceLoader::didFail(const ResourceError& error) { // There is a bug in CFNetwork where callbacks can be dispatched even when loads are deferred. // See <rdar://problem/6304600> for more details. #if !PLATFORM(CF) ASSERT(!defersLoading()); #endif receivedError(error); }
void MainResourceLoader::didFail(const ResourceError& error) { if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForMainError(request(), error)) return; // There is a bug in CFNetwork where callbacks can be dispatched even when loads are deferred. // See <rdar://problem/6304600> for more details. #if !USE(CF) ASSERT(!defersLoading()); #endif receivedError(error); }
void QAndroidOffscreenWebView::onReceivedError(JNIEnv * env, jobject, int errorCode, jobject description, jobject failingUrl) { qDebug() << "QAndroidOffscreenWebView::onReceivedError" << errorCode; try { QJniEnvPtr e(env); emit receivedError(errorCode, e.JStringToQString(static_cast<jstring>(description)), e.JStringToQString(static_cast<jstring>(failingUrl))); } catch(const std::exception & e) { qWarning() << "QAndroidOffscreenWebView::onReceivedError exception: " << e.what(); } }
void MainResourceLoader::didFail(const ResourceError& error) { #if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 if (m_filter) { wkFilterRelease(m_filter); m_filter = 0; } #endif if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForMainError(request(), error)) return; // There is a bug in CFNetwork where callbacks can be dispatched even when loads are deferred. // See <rdar://problem/6304600> for more details. #if !USE(CF) ASSERT(!defersLoading()); #endif receivedError(error); }
void MainResourceLoader::didFail(const ResourceError& error) { #if ENABLE(OFFLINE_WEB_APPLICATIONS) if (!error.isCancellation()) { ASSERT(!m_applicationCache); if (m_frame->settings() && m_frame->settings()->offlineWebApplicationCacheEnabled()) { m_applicationCache = ApplicationCacheGroup::fallbackCacheForMainRequest(request(), documentLoader()); if (scheduleLoadFallbackResourceFromApplicationCache(m_applicationCache.get())) return; } } #endif // There is a bug in CFNetwork where callbacks can be dispatched even when loads are deferred. // See <rdar://problem/6304600> for more details. #if !PLATFORM(CF) ASSERT(!defersLoading()); #endif receivedError(error); }
void MainResourceLoader::continueAfterContentPolicy(PolicyAction contentPolicy, const ResourceResponse& r) { KURL url = request().url(); const String& mimeType = r.mimeType(); switch (contentPolicy) { case PolicyUse: { // Prevent remote web archives from loading because they can claim to be from any domain and thus avoid cross-domain security checks (4120255). bool isRemoteWebArchive = (equalIgnoringCase("application/x-webarchive", mimeType) #if PLATFORM(GTK) || equalIgnoringCase("message/rfc822", mimeType) #endif || equalIgnoringCase("multipart/related", mimeType)) && !m_substituteData.isValid() && !SchemeRegistry::shouldTreatURLSchemeAsLocal(url.protocol()); if (!frameLoader()->client()->canShowMIMEType(mimeType) || isRemoteWebArchive) { frameLoader()->policyChecker()->cannotShowMIMEType(r); // Check reachedTerminalState since the load may have already been canceled inside of _handleUnimplementablePolicyWithErrorCode::. if (!reachedTerminalState()) stopLoadingForPolicyChange(); return; } break; } case PolicyDownload: { // m_handle can be null, e.g. when loading a substitute resource from application cache. if (!m_handle) { receivedError(cannotShowURLError()); return; } InspectorInstrumentation::continueWithPolicyDownload(m_frame.get(), documentLoader(), identifier(), r); // When starting the request, we didn't know that it would result in download and not navigation. Now we know that main document URL didn't change. // Download may use this knowledge for purposes unrelated to cookies, notably for setting file quarantine data. ResourceRequest request = this->request(); frameLoader()->setOriginalURLForDownloadRequest(request); frameLoader()->client()->download(m_handle.get(), request, r); // It might have gone missing if (frameLoader()) receivedError(interruptedForPolicyChangeError()); return; } case PolicyIgnore: InspectorInstrumentation::continueWithPolicyIgnore(m_frame.get(), documentLoader(), identifier(), r); stopLoadingForPolicyChange(); return; default: ASSERT_NOT_REACHED(); } RefPtr<MainResourceLoader> protect(this); if (r.isHTTP()) { int status = r.httpStatusCode(); if (status < 200 || status >= 300) { bool hostedByObject = frameLoader()->isHostedByObjectElement(); frameLoader()->handleFallbackContent(); // object elements are no longer rendered after we fallback, so don't // keep trying to process data from their load if (hostedByObject) cancel(); } } // we may have cancelled this load as part of switching to fallback content if (!reachedTerminalState()) ResourceLoader::didReceiveResponse(r); if (frameLoader() && !frameLoader()->activeDocumentLoader()->isStopping()) { if (m_substituteData.isValid()) { if (m_substituteData.content()->size()) didReceiveData(m_substituteData.content()->data(), m_substituteData.content()->size(), m_substituteData.content()->size(), true); if (frameLoader() && !frameLoader()->activeDocumentLoader()->isStopping()) didFinishLoading(0); } else if (shouldLoadAsEmptyDocument(url) || frameLoader()->client()->representationExistsForURLScheme(url.protocol())) didFinishLoading(0); } }
void MainResourceLoader::continueAfterContentPolicy(PolicyAction contentPolicy, const ResourceResponse& r) { KURL url = request().url(); const String& mimeType = r.mimeType(); switch (contentPolicy) { case PolicyUse: { // Prevent remote web archives from loading because they can claim to be from any domain and thus avoid cross-domain security checks (4120255). bool isRemoteWebArchive = (equalIgnoringCase("application/x-webarchive", mimeType) || equalIgnoringCase("multipart/related", mimeType)) && !m_substituteData.isValid() && !url.isLocalFile(); if (!frameLoader()->client()->canShowMIMEType(mimeType) || isRemoteWebArchive) { frameLoader()->policyChecker()->cannotShowMIMEType(r); // Check reachedTerminalState since the load may have already been cancelled inside of _handleUnimplementablePolicyWithErrorCode::. if (!reachedTerminalState()) stopLoadingForPolicyChange(); return; } break; } case PolicyDownload: // m_handle can be null, e.g. when loading a substitute resource from application cache. if (!m_handle) { receivedError(cannotShowURLError()); return; } frameLoader()->client()->download(m_handle.get(), request(), m_handle.get()->firstRequest(), r); // It might have gone missing if (frameLoader()) receivedError(interruptedForPolicyChangeError()); return; case PolicyIgnore: stopLoadingForPolicyChange(); return; default: ASSERT_NOT_REACHED(); } RefPtr<MainResourceLoader> protect(this); if (r.isHTTP()) { int status = r.httpStatusCode(); if (status < 200 || status >= 300) { bool hostedByObject = frameLoader()->isHostedByObjectElement(); frameLoader()->handleFallbackContent(); // object elements are no longer rendered after we fallback, so don't // keep trying to process data from their load if (hostedByObject) cancel(); } } // we may have cancelled this load as part of switching to fallback content if (!reachedTerminalState()) ResourceLoader::didReceiveResponse(r); if (frameLoader() && !frameLoader()->isStopping()) { if (m_substituteData.isValid()) { if (m_substituteData.content()->size()) didReceiveData(m_substituteData.content()->data(), m_substituteData.content()->size(), m_substituteData.content()->size(), true); if (frameLoader() && !frameLoader()->isStopping()) didFinishLoading(0); } else if (shouldLoadAsEmptyDocument(url) || frameLoader()->client()->representationExistsForURLScheme(url.protocol())) didFinishLoading(0); } }
ParseXML::ParseXML() { QObject::connect(&this->chk, SIGNAL(finished(QString)), this, SLOT(parseXmlString(QString))); QObject::connect(&this->chk, SIGNAL(error(QString)), this, SLOT(receivedError(QString))); }
void MainResourceLoader::didFail(const ResourceError& error) { ASSERT(!defersLoading()); receivedError(error); }