fix content-disposition
authorHyunseok Yang <hs0219.yang@samsung.com>
Thu, 22 Aug 2013 08:18:57 +0000 (17:18 +0900)
committerHyunseok Yang <hs0219.yang@samsung.com>
Thu, 22 Aug 2013 10:00:46 +0000 (19:00 +0900)
Change-Id: If740100aabdbcfa488c193ccdbd57614991c799c
Signed-off-by: Hyunseok Yang <hs0219.yang@samsung.com>
src/controls/FWebCtrl_WebImpl.cpp

index 386ef35..2978d7f 100755 (executable)
@@ -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<IEnumerator> 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<IEnumerator>(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;
                }