Remove manifest file dependencies due to the security issue.
authorbs0111.cho <bs0111.cho@samsung.com>
Mon, 3 Jun 2013 05:33:33 +0000 (14:33 +0900)
committerbs0111.cho <bs0111.cho@samsung.com>
Wed, 5 Jun 2013 05:20:06 +0000 (14:20 +0900)
Change-Id: I7b45456816b748e0b8bb2ce541dc1a39d2f482e6
Signed-off-by: bs0111.cho <bs0111.cho@samsung.com>
src/FUiIme_InputMethodManagerImpl.cpp [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index f1f900f..aa7eab9
@@ -28,7 +28,8 @@
 \r
 #include <isf_control.h>\r
 \r
-#include <FAppPkgPackageInfo.h>\r
+#include <FAppPkgPackageAppInfo.h>\r
+#include <FAppPkgPackageManager.h>\r
 #include <FBaseColArrayList.h>\r
 #include <FBaseColTypes.h>\r
 #include <FBaseString.h>\r
@@ -48,9 +49,6 @@ using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;\r
 using namespace Tizen::Locales;\r
 \r
-static const AppId _PRELOADED_IME_APPID = "PRIVTIME01.ise-default";\r
-static const char* _PRELOADED_IME_UUID = "12aa3425-f88d-45f4-a509-cee8dfe904e3";\r
-\r
 namespace Tizen { namespace Ui { namespace Ime {\r
 \r
 _InputMethodManagerImpl::_InputMethodManagerImpl(void)\r
@@ -321,12 +319,13 @@ _InputMethodManagerImpl::GetInputMethodInfoListN(void) const
 {\r
        result r = E_SUCCESS;\r
 \r
-       int ospImeCount = 0;\r
-\r
        InputMethodInfo* pInputMethodInfo = null;\r
        _InputMethodInfoImpl* pInputMethodInfoImpl = null;\r
+       IList* pLanguageList = null;\r
 \r
-       std::unique_ptr<IList> pLanguageList(null);\r
+       const AppId* pAppId = null;\r
+       const PackageManager* pPackageManager = null;\r
+       PackageAppInfo* pPackageAppInfo = null;\r
 \r
        std::unique_ptr<ArrayList> pInputMethodInfoList(new(std::nothrow) ArrayList(SingleObjectDeleter));\r
        SysTryReturn(NID_UI_IME, pInputMethodInfoList, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");\r
@@ -334,12 +333,10 @@ _InputMethodManagerImpl::GetInputMethodInfoListN(void) const
        r = pInputMethodInfoList->Construct();\r
        SysTryReturn(NID_UI_IME, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
-       char* pAppRootPath = null;\r
-\r
-       // get preloaded IME info\r
+       // add the input method info\r
        char** dpList = null;\r
-       int preloadedImeCount = isf_control_get_ise_list(&dpList);\r
-       SysTryReturn(NID_UI_IME, (dpList != null) && (preloadedImeCount > 0), null, E_SYSTEM, "[E_SYSTEM] A failure occurs from the underlying system.");\r
+       int iseCount = isf_control_get_ise_list(&dpList);\r
+       SysTryReturn(NID_UI_IME, (dpList != null) && (iseCount > 0), null, E_SYSTEM, "[E_SYSTEM] A failure occurs from the underlying system.");\r
 \r
        int ret = -1;\r
        char* pName = null;\r
@@ -347,85 +344,87 @@ _InputMethodManagerImpl::GetInputMethodInfoListN(void) const
        ISE_TYPE_T type;\r
        int option = 0;\r
 \r
-       int preloadedImeIndex = -1;\r
-\r
-       for (int i = 0; i < preloadedImeCount; i++)\r
+       for (int i = 0; i < iseCount; i++)\r
        {\r
-               if (!strcmp(dpList[i], _PRELOADED_IME_UUID))\r
-               {\r
-                       ret = isf_control_get_ise_info(dpList[i], &pName, &pLanguage, &type, &option);\r
-                       SysTryCatch(NID_UI_IME, ret == 0, , E_SYSTEM, "[E_SYSTEM] A failure occurs from the underlying system.");\r
-\r
-                       preloadedImeCount = 1;\r
-                       preloadedImeIndex = i;\r
-                       break;\r
-               }\r
-       }\r
+               ret = isf_control_get_ise_info(dpList[i], &pName, &pLanguage, &type, &option);\r
+               SysTryCatch(NID_UI_IME, ret == 0, , E_SYSTEM, "[E_SYSTEM] A failure occurs from the underlying system.");\r
 \r
-       // get osp IME info\r
-       r = RequestInputMethodAppIdList();\r
-       SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+               if (type == SOFTWARE_KEYBOARD_ISE)\r
+               {\r
+                       pInputMethodInfo = new(std::nothrow) InputMethodInfo();\r
+                       SysTryCatch(NID_UI_IME, pInputMethodInfo, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");\r
 \r
-       // add preloaded IME info\r
-       pInputMethodInfo = new(std::nothrow) InputMethodInfo();\r
-       SysTryCatch(NID_UI_IME, pInputMethodInfo, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");\r
+                       pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*pInputMethodInfo);\r
+                       r = GetLastResult();\r
+                       SysTryCatch(NID_UI_IME, pInputMethodInfoImpl, , r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
-       pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*pInputMethodInfo);\r
-       r = GetLastResult();\r
-       SysTryCatch(NID_UI_IME, pInputMethodInfoImpl, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+                       pInputMethodInfoImpl->SetUuid(dpList[i]);\r
+                       pInputMethodInfoImpl->SetName(String(pName));\r
+                       pInputMethodInfoImpl->SetType(_ScimDataConverter::ConvertType(type));\r
 \r
-       pInputMethodInfoImpl->SetAppId(_PRELOADED_IME_APPID);\r
-       pInputMethodInfoImpl->SetUuid(dpList[preloadedImeIndex]);\r
-       pInputMethodInfoImpl->SetName(String(pName));\r
-       pInputMethodInfoImpl->SetType(_ScimDataConverter::ConvertType(type));\r
-       pLanguageList.reset(GetInputMethodLanguageListN(pLanguage));\r
-       r = GetLastResult();\r
-       SysTryCatch(NID_UI_IME, pLanguageList, , r, "[%s] Propagating.", GetErrorMessage(r));\r
-       r = pInputMethodInfoImpl->SetLanguageList(*(pLanguageList.get()));\r
-       SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
-\r
-       SysSecureLog(NID_UI_IME, "The UUID of the preloaded IME application is %s.", dpList[preloadedImeIndex]);\r
+                       pLanguageList = GetInputMethodLanguageListN(pLanguage);\r
+                       r = GetLastResult();\r
+                       SysTryCatch(NID_UI_IME, pLanguageList, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+                       r = pInputMethodInfoImpl->SetLanguageList(*pLanguageList);\r
+                       SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+                       delete pLanguageList;\r
+                       pLanguageList = null;\r
+\r
+                       r = pInputMethodInfoList->Add(pInputMethodInfo);\r
+                       SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+                       pInputMethodInfo = null;\r
+               }\r
 \r
-       r = pInputMethodInfoList->Add(pInputMethodInfo);\r
-       SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
-       pInputMethodInfo = null;\r
+               free(pName);\r
+               free(pLanguage);\r
+       }\r
 \r
        free(dpList);\r
-       free(pName);\r
-       free(pLanguage);\r
 \r
-       // add osp IME info\r
-       ospImeCount = __pInputMethodAppIdList->GetCount();\r
+       // add the appid of the input method\r
+       r = RequestInputMethodAppIdList();\r
+       SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
-       for (int i = 0; i < ospImeCount; i++)\r
+       for (int i = 0; i < __pInputMethodAppIdList->GetCount(); i++)\r
        {\r
-               AppId* pAppId = static_cast<AppId*>(__pInputMethodAppIdList->GetAt(i));\r
+               pAppId = static_cast<const AppId*>(__pInputMethodAppIdList->GetAt(i));\r
                r = GetLastResult();\r
                SysTryCatch(NID_UI_IME, pAppId, , r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
-               const wchar_t _RESERVED_APP_ID[] = L"PRIVT";\r
-               const int _RESERVED_APP_ID_LENGTH = 5;\r
-               if (!wcsncmp(pAppId->GetPointer(), _RESERVED_APP_ID, _RESERVED_APP_ID_LENGTH))\r
-               {\r
-                       continue;\r
-               }\r
-\r
-               String appRootPath;\r
-               r = _AppManagerImpl::GetAppRootPath(*pAppId, appRootPath);\r
-               SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
-\r
-               pAppRootPath = _StringConverter::CopyToCharArrayN(appRootPath.GetPointer());\r
+               pPackageManager = PackageManager::GetInstance();\r
                r = GetLastResult();\r
-               SysTryCatch(NID_UI_IME, pAppRootPath, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+               SysTryCatch(NID_UI_IME, pPackageManager, , r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
-               pInputMethodInfo = GetInputMethodInfoN(pAppRootPath);\r
+               pPackageAppInfo = pPackageManager->GetPackageAppInfoN(*pAppId);\r
                r = GetLastResult();\r
-               SysTryCatch(NID_UI_IME, pInputMethodInfo, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+               SysTryCatch(NID_UI_IME, pPackageAppInfo, , r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
-               r = pInputMethodInfoList->Add(pInputMethodInfo);\r
-               SysTryCatch(NID_UI_IME, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+               for (int j = 0; j < pInputMethodInfoList->GetCount(); j++)\r
+               {\r
+                       pInputMethodInfo = static_cast<InputMethodInfo*>(pInputMethodInfoList->GetAt(j));\r
+                       r = GetLastResult();\r
+                       SysTryCatch(NID_UI_IME, pInputMethodInfo, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
+                       SysLog(NID_UI_IME, "The registered input method names are %S, %S.",\r
+                               pInputMethodInfo->GetName().GetPointer(),\r
+                               pPackageAppInfo->GetAppDisplayName().GetPointer());\r
+                       if (pInputMethodInfo->GetName() == pPackageAppInfo->GetAppDisplayName())\r
+                       {\r
+                               pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*pInputMethodInfo);\r
+                               r = GetLastResult();\r
+                               SysTryCatch(NID_UI_IME, pInputMethodInfoImpl, , r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
+                               pInputMethodInfoImpl->SetAppId(*pAppId);\r
+                               SysSecureLog(NID_UI_IME, "The AppId, UUID, and the name of the input method is %S, %s, %S respectively.",\r
+                                       pInputMethodInfoImpl->GetAppId().GetPointer(),\r
+                                       pInputMethodInfoImpl->GetUuid(),\r
+                                       pInputMethodInfoImpl->GetName().GetPointer());\r
 \r
-               delete[] pAppRootPath;\r
+                               break;\r
+                       }\r
+               }\r
+\r
+               delete pPackageAppInfo;\r
        }\r
 \r
        return pInputMethodInfoList.release();\r
@@ -436,7 +435,8 @@ CATCH:
        free(pLanguage);\r
 \r
        delete pInputMethodInfo;\r
-       delete[] pAppRootPath;\r
+       delete pLanguageList;\r
+       delete pPackageAppInfo;\r
 \r
        return null;\r
 }\r
@@ -446,44 +446,37 @@ _InputMethodManagerImpl::SetInputMethod(const AppId& id)
 {\r
        result r = E_SUCCESS;\r
 \r
-       std::unique_ptr<char[]> pLog(_StringConverter::CopyToCharArrayN(id.GetPointer()));\r
-       SysSecureLog(NID_UI_IME, "The application ID is %s.", pLog.get());\r
+       PackageManager* pPackageManager = PackageManager::GetInstance();\r
+       r = GetLastResult();\r
+       SysTryReturnResult(NID_UI_IME, pPackageManager, r, "Propagating.");\r
+\r
+       std::unique_ptr<PackageAppInfo> pPackageAppInfo(pPackageManager->GetPackageAppInfoN(id));\r
+       r = GetLastResult();\r
+       SysTryReturnResult(NID_UI_IME, pPackageAppInfo, r, "Propagating.");\r
+\r
+       std::unique_ptr<IList> pInputMethodInfoList(GetInputMethodInfoListN());\r
+       r = GetLastResult();\r
+       SysTryReturnResult(NID_UI_IME, pInputMethodInfoList, r, "Propagating.");\r
 \r
-       if (id == _PRELOADED_IME_APPID)\r
+       for (int i = 0; i < pInputMethodInfoList->GetCount(); i++)\r
        {\r
-               char** dpList = null;\r
-               int preloadedImeCount = isf_control_get_ise_list(&dpList);\r
-               SysTryReturnResult(NID_UI_IME, (dpList != null) && (preloadedImeCount > 0), E_SYSTEM, "A failure occurs from the underlying system.");\r
+               InputMethodInfo* pInputMethodInfo = static_cast<InputMethodInfo*>(pInputMethodInfoList->GetAt(i));\r
+               r = GetLastResult();\r
+               SysTryReturnResult(NID_UI_IME, pInputMethodInfo, r, "Propagating.");\r
 \r
-               for (int i = 0; i < preloadedImeCount; i++)\r
+               if (pInputMethodInfo->GetName() == pPackageAppInfo->GetAppDisplayName())\r
                {\r
-                       if (!strcmp(dpList[i], _PRELOADED_IME_UUID))\r
-                       {\r
-                               isf_control_set_active_ise_by_uuid(dpList[i]);\r
-                               break;\r
-                       }\r
-               }\r
+                       _InputMethodInfoImpl* pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*pInputMethodInfo);\r
+                       r = GetLastResult();\r
+                       SysTryReturnResult(NID_UI_IME, pInputMethodInfoImpl, r, "Propagating.");\r
 \r
-               free(dpList);\r
+                       isf_control_set_active_ise_by_uuid(pInputMethodInfoImpl->GetUuid());\r
+                       SysSecureLog(NID_UI_IME, "The UUID of the input method to be set is %s.", pInputMethodInfoImpl->GetUuid());\r
 \r
-               return r;\r
+                       break;\r
+               }\r
        }\r
 \r
-       String appRootPath;\r
-       r = _AppManagerImpl::GetAppRootPath(id, appRootPath);\r
-       SysTryReturnResult(NID_UI_IME, r == E_SUCCESS, r, "Propagating.");\r
-\r
-       std::unique_ptr<char[]> pAppRootPath(_StringConverter::CopyToCharArrayN(appRootPath.GetPointer()));\r
-       r = GetLastResult();\r
-       SysTryReturnResult(NID_UI_IME, pAppRootPath, r, "Propagating.");\r
-\r
-       std::unique_ptr<InputMethodInfo> pInputMethodInfo(GetInputMethodInfoN(pAppRootPath.get()));\r
-       r = GetLastResult();\r
-       SysTryReturnResult(NID_UI_IME, pInputMethodInfo, r, "Propagating.");\r
-\r
-       _InputMethodInfoImpl* pInputMethodInfoImpl = _InputMethodInfoImpl::GetInstance(*(pInputMethodInfo.get()));\r
-       isf_control_set_active_ise_by_uuid(pInputMethodInfoImpl->GetUuid());\r
-\r
        return r;\r
 }\r
 \r