bool DocumentLoader::shouldContinueForResponse() const { if (m_substituteData.isValid()) return true; int statusCode = m_response.httpStatusCode(); if (statusCode == 204 || statusCode == 205) { // The server does not want us to replace the page contents. return false; } if (contentDispositionType(m_response.httpHeaderField("Content-Disposition")) == ContentDispositionAttachment) { // The server wants us to download instead of replacing the page contents. // Downloading is handled by the embedder, but we still get the initial // response so that we can ignore it and clean up properly. return false; } if (!canShowMIMEType(m_response.mimeType(), m_frame->page())) return false; // Prevent remote web archives from loading because they can claim to be from any domain and thus avoid cross-domain security checks. if (equalIgnoringCase("multipart/related", m_response.mimeType()) && !SchemeRegistry::shouldTreatURLSchemeAsLocal(m_request.url().protocol())) return false; return true; }
void FrameLoaderClientBlackBerry::dispatchDecidePolicyForResponse(FramePolicyFunction function, const ResourceResponse& response, const ResourceRequest& request) { // FIXME: What should we do for HTTP status code 204 and 205 and "application/zip"? PolicyAction policy = PolicyIgnore; if (contentDispositionType(response.httpHeaderField("Content-Disposition")) == ContentDispositionAttachment || request.forceDownload()) policy = PolicyDownload; else if (canShowMIMEType(response.mimeType())) policy = PolicyUse; else if ((ResourceRequest::TargetIsMainFrame == request.targetType()) && m_webPagePrivate->m_client->downloadAllowed(request.url().string().utf8().data())) policy = PolicyDownload; (m_frame->loader()->policyChecker()->*function)(policy); }