void FrameLoaderClientEfl::updateGlobalHistory() { WebCore::Frame* frame = EWKPrivate::coreFrame(m_frame); if (!frame) return; WebCore::DocumentLoader* loader = frame->loader()->documentLoader(); if (!loader) return; const FrameLoader* frameLoader = loader->frameLoader(); const bool isMainFrameRequest = frameLoader && (loader == frameLoader->provisionalDocumentLoader()) && frameLoader->isLoadingMainFrame(); const CString& urlForHistory = loader->urlForHistory().string().utf8(); const CString& title = loader->title().string().utf8(); const CString& firstParty = loader->request().firstPartyForCookies().string().utf8(); const CString& clientRedirectSource = loader->clientRedirectSourceForHistory().utf8(); const CString& originalURL = loader->originalURL().string().utf8(); const CString& httpMethod = loader->request().httpMethod().utf8(); const CString& responseURL = loader->responseURL().string().utf8(); const CString& mimeType = loader->response().mimeType().utf8(); Ewk_Frame_Resource_Request request = { originalURL.data(), firstParty.data(), httpMethod.data(), 0, m_frame, isMainFrameRequest }; Ewk_Frame_Resource_Response response = { responseURL.data(), loader->response().httpStatusCode(), 0, mimeType.data() }; bool hasSubstituteData = loader->substituteData().isValid(); Ewk_View_Navigation_Data data = { urlForHistory.data(), title.data(), &request, &response, hasSubstituteData, clientRedirectSource.data() }; evas_object_smart_callback_call(m_view, "navigate,with,data", &data); }
/** * webkit_web_frame_get_network_response: * @frame: a #WebKitWebFrame * * Returns a #WebKitNetworkResponse object representing the response * that was given to the request for the given frame, or NULL if the * frame was not created by a load. You must unref the object when you * are done with it. * * Return value: (transfer full): a #WebKitNetworkResponse object * * Since: 1.1.18 */ WebKitNetworkResponse* webkit_web_frame_get_network_response(WebKitWebFrame* frame) { Frame* coreFrame = core(frame); if (!coreFrame) return 0; WebCore::DocumentLoader* loader = coreFrame->loader()->activeDocumentLoader(); if (!loader) return 0; return kitNew(loader->response()); }
void FrameLoaderClientAndroid::dispatchDecidePolicyForMIMEType(FramePolicyFunction func, const String& MIMEType, const ResourceRequest& request) { ASSERT(m_frame); ASSERT(func); if (!func) return; if (request.isNull()) { (m_frame->loader()->policyChecker()->*func)(PolicyIgnore); return; } // Default to Use (display internally). PolicyAction action = PolicyUse; // Check if we should Download instead. const ResourceResponse& response = m_frame->loader()->activeDocumentLoader()->response(); const String& content_disposition = response.httpHeaderField("Content-Disposition"); if (!content_disposition.isEmpty()) { // Server wants to override our normal policy. if (TreatAsAttachment(content_disposition)) { // Check to see if we are a sub frame (main frame has no owner element) if (m_frame->ownerElement() != 0) action = PolicyIgnore; else action = PolicyDownload; } } else { // Ask if it can be handled internally. if (!canShowMIMEType(MIMEType)) { // Check to see if we are a sub frame (main frame has no owner element) if (m_frame->ownerElement() != 0) action = PolicyIgnore; else action = PolicyDownload; } //SAMSUNG CHANGE + //when svg is not supported ,make svg downloadable when it is Main frame #if !ENABLE(SVG) if ((MIMEType == "image/svg+xml") && (m_frame->ownerElement() == 0)) { action = PolicyDownload; } #endif //SAMSUNG CHANGE - } // A status code of 204 indicates no content change. Ignore the result. WebCore::DocumentLoader* docLoader = m_frame->loader()->activeDocumentLoader(); if (docLoader->response().httpStatusCode() == 204) action = PolicyIgnore; (m_frame->loader()->policyChecker()->*func)(action); }