From c0487af2b87d9c2f4e2883c17f44a643bcf8db17 Mon Sep 17 00:00:00 2001 From: Seongjun Yim Date: Tue, 10 Sep 2013 19:19:34 +0900 Subject: [PATCH] improve the logic to make a header Change-Id: I305f8fc1e0abbbf299a2d831157854d763e9bb80 Signed-off-by: Seongjun Yim --- src/controls/FWebCtrl_WebImpl.cpp | 48 ++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/controls/FWebCtrl_WebImpl.cpp b/src/controls/FWebCtrl_WebImpl.cpp index 11560bf..2b78f55 100755 --- a/src/controls/FWebCtrl_WebImpl.cpp +++ b/src/controls/FWebCtrl_WebImpl.cpp @@ -150,23 +150,6 @@ static const int DEFAULT_LIST_ITEM_COUNT = 4; Eina_Bool -AddHttpHeaderData(const Eina_Hash* pHash, const void* pKey, void* pValue, void* pUserData) -{ - result r = E_SUCCESS; - - String key(reinterpret_cast< const char* >(pKey)); - String value(reinterpret_cast< char* >(pValue)); - - SysLog(NID_WEB_CTRL, "The current value of key is %ls, value is %ls", key.GetPointer(), value.GetPointer()); - - r = reinterpret_cast< HttpHeader* >(pUserData)->AddField(key, value); - SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r)); - - return EINA_TRUE; -} - - -Eina_Bool AddHttpAttributeData(const Eina_Hash* pHash, const void* pKey, void* pValue, void* pUserData) { result r = E_SUCCESS; @@ -1124,11 +1107,26 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo) ILoadingListener* pLoadingListener = pImpl->GetLoadingListener(); if (pLoadingListener) { - 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())); + Eina_Iterator* iterator = eina_hash_iterator_tuple_new(ewk_policy_decision_response_headers_get(pPolicy)); + if (iterator) + { + Eina_Hash_Tuple *tuple = null; + + EINA_ITERATOR_FOREACH(iterator, tuple) + { + String key(reinterpret_cast< const char* >(tuple->key)); + String value(reinterpret_cast< char* >(tuple->data)); + + SysSecureLog(NID_WEB_CTRL, "The current value of key is %ls, value is %ls", key.GetPointer(), value.GetPointer()); + + r = httpHeader.AddField(key, value); + SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + } + + eina_iterator_free(iterator); + } pImpl->SetPolicyDecision(pLoadingListener->OnWebDataReceived(mime, httpHeader)); } @@ -1146,9 +1144,10 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo) String redirectUrl(pImpl->GetRedirectUri(url, currentUrl, mime)); if (redirectUrl != L"") { - pImpl->LoadUrl(redirectUrl); ewk_policy_decision_ignore(pPolicy); + pImpl->LoadUrl(redirectUrl); + return; } @@ -1164,6 +1163,13 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo) r = _AppControlImpl::FindAndStart(operationId, &url, &mime, null, null, null); SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS || r == E_OBJ_NOT_FOUND, r, "[%s] Propagating.", GetErrorMessage(r)); + if (r == E_OBJ_NOT_FOUND) + { + String operationId(L"http://tizen.org/appcontrol/operation/download"); + + r = _AppControlImpl::FindAndStart(operationId, &url, null, null, null, null); + SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); + } return; } -- 2.7.4