From 110cafb09b78eef784aac1fbc621cdbdd20ab330 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 22 Aug 2013 17:18:57 +0900 Subject: [PATCH] fix content-disposition Change-Id: If740100aabdbcfa488c193ccdbd57614991c799c Signed-off-by: Hyunseok Yang --- src/controls/FWebCtrl_WebImpl.cpp | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/controls/FWebCtrl_WebImpl.cpp b/src/controls/FWebCtrl_WebImpl.cpp index 386ef35..2978d7f 100755 --- a/src/controls/FWebCtrl_WebImpl.cpp +++ b/src/controls/FWebCtrl_WebImpl.cpp @@ -1113,16 +1113,32 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo) String mime(ewk_policy_decision_response_mime_get(pPolicy)); SysSecureLog(NID_WEB_CTRL, "url : %s, mime : %ls, code : %d", pUrl, mime.GetPointer(), code); + String* pFieldValue = null; + String compareHeader(L""); + std::unique_ptr pFieldValueEnum; + ILoadingListener* pLoadingListener = pImpl->GetLoadingListener(); String url(ewk_policy_decision_url_get(pPolicy)); - if (pLoadingListener && ewk_frame_is_main_frame(ewk_policy_decision_frame_get(pPolicy))) + const Eina_Hash* pHeader = ewk_policy_decision_response_headers_get(pPolicy); + HttpHeader httpHeader; + + eina_hash_foreach(pHeader, AddHttpHeaderData, &httpHeader); + SysTryCatch(NID_WEB_CTRL, GetLastResult() == E_SUCCESS, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + pFieldValueEnum = std::unique_ptr(httpHeader.GetFieldValuesN(L"Content-Disposition")); + + if( pFieldValueEnum != null) { - const Eina_Hash* pHeader = ewk_policy_decision_response_headers_get(pPolicy); + pFieldValueEnum->MoveNext(); + pFieldValue = dynamic_cast< String* >(pFieldValueEnum->GetCurrent()); + pFieldValue->SubString(0, 10, compareHeader); + } + if (pLoadingListener && ewk_frame_is_main_frame(ewk_policy_decision_frame_get(pPolicy))) + { DecisionPolicy policy; - HttpHeader httpHeader; if (code >= REDIRECTION_HEADER_GROUP && code < REDIRECTION_HEADER_GROUP + 100) { @@ -1130,9 +1146,6 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo) mime = L""; } - eina_hash_foreach(pHeader, AddHttpHeaderData, &httpHeader); - SysTryCatch(NID_WEB_CTRL, GetLastResult() == E_SUCCESS, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); - policy = pLoadingListener->OnWebDataReceived(mime, httpHeader); pImpl->SetPolicyDecision(policy); } @@ -1151,7 +1164,7 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo) return; } - if (pImpl->IsMimeSupported(mime) || mime == L"") + if ( String::Compare(compareHeader, L"attachment") != 0 && (pImpl->IsMimeSupported(mime) || mime == L"")) { break; } -- 2.7.4