#include <FApp_AppManagerImpl.h>
#include <FBase_StringConverter.h>
#include <FCnt_DownloadManagerImpl.h>
+#include <FCnt_ContentManagerImpl.h>
#include <FGrp_CoordinateSystem.h>
+#include <FGrp_Screen.h>
#include <FIo_DatabaseImpl.h>
#include <FIo_NormalFile.h>
+#include <FSys_SystemResource.h>
#include <FSys_VibratorImpl.h>
#include <FUi_Control.h>
#include <FUi_CoordinateSystemUtils.h>
#include <FUiAnim_EflNode.h>
#include <FUiAnim_VisualElement.h>
#include <FUiCtrl_FooterImpl.h>
-#include <FUiCtrl_Form.h>
+#include <FUiCtrl_FormImpl.h>
#include "FWeb_HistoryItemImpl.h"
#include "FWebCtrl_AppControlListener.h"
#include "FWebCtrl_AuthConfirmPopup.h"
#include "FWebCtrl_AuthenticationChallengeImpl.h"
#include "FWebCtrl_EflWebkit.h"
+#include "FWebCtrl_FormDataWindow.h"
#include "FWebCtrl_GeolocationPermissionManagerImpl.h"
#include "FWebCtrl_HitElementResultImpl.h"
#include "FWebCtrl_InputPickerPopup.h"
#include "FWebCtrl_WebEvent.h"
#include "FWebCtrl_WebEventArg.h"
#include "FWebCtrl_WebImpl.h"
+#include "FWebCtrl_WebManager.h"
#include "FWebCtrl_WebPresenter.h"
#include "FWebCtrl_WebSettingImpl.h"
static const int PORTRAIT_KEYPAD_HEIGHT = 444;
static const int LANDSCAPE_KEYPAD_HEIGHT = 316;
+static const int DEFAULT_LIST_ITEM_COUNT = 4;
Eina_Bool
{
SysLog(NID_WEB_CTRL, "The current value of message is %s", pMessage);
- result r = E_SUCCESS;
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
String msg(pMessage);
- MessageBox messageBox;
- r = messageBox.Construct(L"", msg, MSGBOX_STYLE_OK);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
-
- int modalResult = 0;
-
- messageBox.SetOwner(&pImpl->GetPublic());
-
- r = messageBox.ShowAndWait(modalResult);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+ result r = pImpl->ShowUserConfirmPopupAsync(USER_SCRIPT_ALERT, pView, msg);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+ return EINA_TRUE;
+CATCH:
ewk_view_javascript_alert_reply(pView);
-
return EINA_TRUE;
}
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
String msg(pMessage);
- MessageBox messageBox;
- r = messageBox.Construct(L"", msg, MSGBOX_STYLE_OKCANCEL);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
-
- int modalResult = 0;
-
- messageBox.SetOwner(&pImpl->GetPublic());
-
- r = messageBox.ShowAndWait(modalResult);
+ r = pImpl->ShowUserConfirmPopup(USER_SCRIPT_CONFIRM, pView, msg);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
- if (modalResult == MSGBOX_RESULT_OK)
- {
- ewk_view_javascript_confirm_reply(pView, EINA_TRUE);
- }
- else
- {
- ewk_view_javascript_confirm_reply(pView, EINA_FALSE);
- }
-
return EINA_TRUE;
}
result r = E_SUCCESS;
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+
String msg(pMessage);
String defVal(pDefaultValue);
- std::unique_ptr< _PromptPopup > pPromptPopup(new (std::nothrow) _PromptPopup());
- SysTryCatch(NID_WEB_CTRL, pPromptPopup.get(), , E_OUT_OF_MEMORY, "Memory allocation failed.");
-
- r = pPromptPopup->Construct(msg, defVal, pView);
- SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
- pPromptPopup->SetOwner(&pImpl->GetPublic());
-
- r = pPromptPopup->ShowPopup();
+ r = pImpl->ShowPromptPopup(msg, defVal);
SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
- pPromptPopup.release();
-
return EINA_TRUE;
CATCH:
Ewk_Certificate_Policy_Decision* pPolicy = reinterpret_cast< Ewk_Certificate_Policy_Decision* >(pEventInfo);
SysAssertf(pImpl && pPolicy, "Failed to request");
+ _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
+
switch (pImpl->GetSetting().GetCertificateErrorHandlingMode())
{
case WEB_CERTIFICATE_ERROR_HANDLING_MODE_USER_CONFIRM:
result r = E_SUCCESS;
- r = pImpl->ShowCertificateConfirmPopup(CERTIFICATE_POPUP_MODE_USER_CONFIRM, pPolicy);
+ std::unique_ptr<DbEnumerator> pEnum;
+
+ String certificatePath(Tizen::App::App::GetInstance()->GetAppRootPath() + CUSTOM_DB_DIRECTORY_PATH + USER_CONFIRM_DB_NAME);
+ String table(CERTIFICATE_TABLE_NAME);
+ _DatabaseImpl db;
+
+ String pem(ewk_certificate_policy_decision_certificate_pem_get(pPolicy));
+
+ r = db.Construct(certificatePath, "r", null);
SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
- pImpl->SetCertificateRequested(true);
+ pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select allow From " + table + L" Where pem = '" + pem + L"'"));
+ if (pEnum.get())
+ {
+ r = pEnum->MoveNext();
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+ int allow = 0;
+ r = pEnum->GetIntAt(0, allow);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+ SysLog(NID_WEB_CTRL, "The current value of allow is %d", allow);
+
+ ewk_certificate_policy_decision_allowed_set(pPolicy, static_cast < Eina_Bool >(allow));
+ pImpl->SetCertificateConfirmed(static_cast < bool >(allow));
+ }
+ else
+ {
+ r = pImpl->ShowCertificateConfirmPopup(CERTIFICATE_POPUP_MODE_USER_CONFIRM, pPolicy);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+ ewk_view_resume(pWebCore->GetWebNativeNode());
+ }
+
+ if (pImpl)
+ {
+ pImpl->SetCertificateRequested(true);
+ }
break;
}
case WEB_CERTIFICATE_ERROR_HANDLING_MODE_CANCEL:
-CATCH:
ewk_certificate_policy_decision_allowed_set(pPolicy, EINA_FALSE);
break;
case WEB_CERTIFICATE_ERROR_HANDLING_MODE_CONTINUE :
default:
SysAssert(false);
}
+
+ return;
+
+CATCH:
+ ewk_certificate_policy_decision_allowed_set(pPolicy, EINA_FALSE);
+ pImpl->SetCertificateConfirmed(false);
+ pImpl->SetCertificateRequested(true);
+
+ ewk_view_resume(pWebCore->GetWebNativeNode());
}
}
}
+Eina_Bool
+OnApplicationCachePermissionRequested(Evas_Object* pView, Ewk_Security_Origin* pSecOrigin, void* pUserData)
+{
+ _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+ SysAssertf(pImpl , "Failed to request");
+
+ const char* pHostName = ewk_security_origin_host_get(pSecOrigin);
+ String msg;
+ result r = msg.Format(256, L"Allow %s to use offline application cache?", pHostName);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_APP_CACHE, pView, msg);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ return EINA_TRUE;
+}
+
+
+Eina_Bool
+OnIndexedDatabaseQuotaExceeded(Evas_Object* pView, Ewk_Security_Origin* pSecOrigin, long long currentQuota, void* pUserData)
+{
+ _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+ SysAssertf(pImpl , "Failed to request");
+
+ const char* pHostName = ewk_security_origin_host_get(pSecOrigin);
+ String msg;
+ result r = msg.Format(512, L"%s Used %lld of storage. Allow %s to use upto 2GB of indexed db?", pHostName, currentQuota, pHostName);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_INDEXED_DB_QUOTA_EXCEDED, pView, msg);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ return EINA_TRUE;
+}
+
+
+Eina_Bool
+OnDatabaseQuotaExceeded(Evas_Object* pView, Ewk_Security_Origin* pSecOrigin, const char* database_name, unsigned long long expectedQuota, void* pUserData)
+{
+ _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+ SysAssertf(pImpl , "Failed to request");
+
+ const char* pHostName = ewk_security_origin_host_get(pSecOrigin);
+ String msg;
+ result r = msg.Format(512, L"Allow %s to open %s use upto %lld of web database?", pHostName, database_name, expectedQuota);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_DB_QUOTA_EXCEDED, pView, msg);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ return EINA_TRUE;
+}
+
+
+Eina_Bool OnLocalFileSystemQuotaExceeded(Evas_Object* pView, Ewk_Security_Origin* pSecOrigin, long long currentQuota, void* pUserData)
+{
+ _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+ SysAssertf(pImpl , "Failed to request");
+
+ const char* pHostName = ewk_security_origin_host_get(pSecOrigin);
+ String msg;
+ result r = msg.Format(512, L"%s Used %lld of storgae. Allow %s to use upto 2GB of file system?", pHostName, currentQuota, pHostName);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_LOCAL_FS_QUOTA_EXCEDED, pView, msg);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ return EINA_TRUE;
+}
+
void
OnGeolocationPermissionRequested(void* pUserData, Evas_Object* pView, void* pEventInfo)
{
result r = E_SUCCESS;
_WebImpl* pImpl = reinterpret_cast<_WebImpl*>(pUserData);
+
Ewk_Notification_Permission_Request* pPermissionRequest = reinterpret_cast< Ewk_Notification_Permission_Request* >(pEventInfo);
SysAssertf(pImpl && pPermissionRequest, "Failed to request");
- MessageBox messageBox;
- r = messageBox.Construct(L"Notification request", L"Do you want to allow notifications from this site ?", MSGBOX_STYLE_OKCANCEL);
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
-
- int modalResult = 0;
-
- messageBox.SetOwner(&pImpl->GetPublic());
+ ewk_notification_permission_request_suspend(pPermissionRequest);
- r = messageBox.ShowAndWait(modalResult);
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+ r = pImpl->ShowUserConfirmPopupAsync(USER_CONFIRM_NOTIFICATION, pPermissionRequest);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+ return;
- if (modalResult == MSGBOX_RESULT_OK)
- {
- ewk_notification_permission_request_set(pPermissionRequest, EINA_TRUE);
- }
- else
- {
- ewk_notification_permission_request_set(pPermissionRequest, EINA_FALSE);
- }
+CATCH:
+ ewk_notification_permission_request_set(pPermissionRequest, EINA_FALSE);
}
//ewk_notification_security_origin_get(pNotification)
const char* text = ewk_notification_body_get(pNotification);
- SysLog(NID_WEB_CTRL, "The current value of icon path is %s",ewk_notification_icon_url_get(pNotification));
+ SysSecureLog(NID_WEB_CTRL, "The current value of icon path is %s",ewk_notification_icon_url_get(pNotification));
std::unique_ptr<_WebNotification> pNotificationWindow( new (std::nothrow) _WebNotification());
SysTryReturnVoidResult(NID_WEB_CTRL, pNotificationWindow.get(), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
pNotificationWindow->SetText(String(text));
pNotificationWindow->LaunchNotification();
- pNotificationWindow.release();
+ pImpl->SetWebNotification(pNotificationWindow.release());
ewk_notification_showed(pContext, notificationId);
}
void
+OnFullScreenEntered(void* pUserData, Evas_Object* pView, void* pEventInfo)
+{
+ _WebImpl* pImpl = reinterpret_cast<_WebImpl*>(pUserData);
+ SysAssertf(pImpl, "Failed to request");
+
+ SysLog(NID_WEB_CTRL, "Enter.");
+}
+
+
+void
+OnFullScreenExited(void* pUserData, Evas_Object* pView, void* pEventInfo)
+{
+ _WebImpl* pImpl = reinterpret_cast<_WebImpl*>(pUserData);
+ SysAssertf(pImpl, "Failed to request");
+
+ SysLog(NID_WEB_CTRL, "Exit.");
+}
+
+
+void
OnVibrationRequested(uint64_t duration, void* pUserData)
{
result r = E_SUCCESS;
}
-Eina_Bool
-OnApplicationCachePermissionRequested(Evas_Object* pView, Ewk_Security_Origin* pOrigin, void* pUserData)
-{
- ewk_view_application_cache_permission_reply(pView, EINA_TRUE);
-
- return EINA_TRUE;
-}
-
-
void
OnLoadingRequested(void* pUserData, Evas_Object* pView, void* pEventInfo)
{
SysAssertf(pImpl && pPolicy, "Failed to request");
String url(ewk_policy_decision_url_get(pPolicy));
- SysLog(NID_WEB_CTRL, "The current value of url is %ls", url.GetPointer());
+ SysSecureLog(NID_WEB_CTRL, "The current value of url is %ls", url.GetPointer());
if (url == L"about:blank")
{
result r = E_SUCCESS;
- _WebEventType eventType = WEB_EVENT_REQUEST_UNKNOWN;
-
- if (uriScheme == L"rtsp")
- {
- eventType = WEB_EVENT_REQUEST_RTSP;
- }
- else if (uriScheme == L"mailto")
+ if (uriScheme == L"tel")
{
- eventType = WEB_EVENT_REQUEST_EMAIL;
+ String operationId(L"http://tizen.org/appcontrol/operation/dial");
+ r = _AppControlImpl::FindAndStart(operationId, &url, null, null, null, null);
}
- else if (uriScheme == L"tel")
+ else if (uriScheme == L"mailto" || uriScheme == L"sms" || uriScheme == L"smsto" || uriScheme == L"mms" || uriScheme == L"mmsto" )
{
- eventType = WEB_EVENT_REQUEST_TEL;
+ String operationId(L"http://tizen.org/appcontrol/operation/compose");
+ r = _AppControlImpl::FindAndStart(operationId, &url, null, null, null, null);
}
- else if (uriScheme == L"sms" || uriScheme == L"smsto" )
- {
- eventType = WEB_EVENT_REQUEST_SMS;
- }
- else if (uriScheme == L"mms" || uriScheme == L"mmsto" )
+ else
{
- eventType = WEB_EVENT_REQUEST_MMS;
+ String operationId(L"http://tizen.org/appcontrol/operation/view");
+ String mime(ewk_policy_decision_response_mime_get(pPolicy));
+ r = _AppControlImpl::FindAndStart(operationId, &url, &mime, null, null, null);
}
-
- std::unique_ptr<_WebEventArg> pEventArg(new _WebEventArg(eventType, url));
- SysTryReturnVoidResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
- r = pImpl->GetWebEvent()->FireAsync(*pEventArg.get());
SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- pEventArg.release();
return;
}
result r = E_SUCCESS;
+ _SystemResource* pSysResource = _SystemResource::GetInstance();
+ SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
+
const char* pUrl = ewk_policy_decision_url_get(pPolicy);
int code = ewk_policy_decision_response_status_code_get(pPolicy);
String mime(ewk_policy_decision_response_mime_get(pPolicy));
- SysLog(NID_WEB_CTRL, "url : %s, mime : %ls, code : %d", pUrl, mime.GetPointer(), code);
+ SysSecureLog(NID_WEB_CTRL, "url : %s, mime : %ls, code : %d", pUrl, mime.GetPointer(), code);
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);
else
{
- SysLog(NID_WEB_CTRL, "Launch native app to handle the mime");
-
ewk_policy_decision_ignore(pPolicy);
- AppControl* pAppControl = null;
- _SelectBox selectBox;
- int appCount = 0;
- int selectedIndex = 0;
-
- std::unique_ptr<IList, AllElementsDeleter> pList(_AppManagerImpl::FindAppControlsN(NULL, NULL, &mime, NULL));
+ String operationId(L"http://tizen.org/appcontrol/operation/view");
- if (pList.get())
- {
- appCount = pList->GetCount();
- }
-
- r = selectBox.Construct(false, L"", appCount+1); //+1 for Downloader
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
-
- selectBox.AddListItem(L"Download", _SelectBox::LIST_ITEM_TYPE_NORMAL, false);
- for (int i = 0; i < appCount; i++)
- {
- pAppControl = dynamic_cast< AppControl* >(pList->GetAt(i));
- SysTryReturnVoidResult(NID_WEB_CTRL, pAppControl, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
- String text = pAppControl->GetAppName();
- SysLog(NID_WEB_CTRL, "AppName : %S", text.GetPointer());
-
- selectBox.AddListItem(text, _SelectBox::LIST_ITEM_TYPE_NORMAL, false);
- }
- r = selectBox.ShowAndWait(selectedIndex);
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
-
- if (selectedIndex == 0) //download
- {
- RequestId reqId = 0;
- DownloadRequest request(pUrl);
-
- _DownloadManagerImpl* pManagerImpl = _DownloadManagerImpl::GetInstance();
- SysTryReturnVoidResult(NID_WEB_CTRL, pManagerImpl, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
- r = pManagerImpl->Start(request, reqId);
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- }
- else if (selectedIndex != -1) // -1 for cancel
+ 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 path("path");
- String pathVal(pUrl);
-
- HashMap dataList;
- r = dataList.Construct();
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+ _SelectBox* pSelectBox = new (std::nothrow) _SelectBox;
+ SysTryReturnVoidResult(NID_WEB_CTRL, pSelectBox, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
- r = dataList.Add(path, pathVal);
+ r = pSelectBox->Construct(false, L"Select application", 1, null, url);
SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- pAppControl = dynamic_cast< AppControl* >(pList->GetAt(selectedIndex));
- SysTryReturnVoidResult(NID_WEB_CTRL, pAppControl, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
- _AppControlImpl* pAcImpl = _AppControlImpl::GetInstance(*pAppControl);
- SysTryReturnVoidResult(NID_WEB_CTRL, pAcImpl, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
- r = pAcImpl->Start(null, null, &dataList, null);
+ pSelectBox->AddListItem(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_DOWNLOAD"), _SelectBox::LIST_ITEM_TYPE_NORMAL, false);
+ r = pSelectBox->ShowPopup();
SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
}
SysLog(NID_WEB_CTRL, "The current value of code is %d, description is %s", code, pDescription);
- pImpl->SetLoadingErrorOccurred(true);
switch (code)
{
case EWK_ERROR_CODE_FRAMELOADINTERRUPTEDBYPOLICYCHANGE:
- //fall through
+ pImpl->SetLoadingErrorOccurred(true);
+ break;
+
case EWK_ERROR_CODE_PLUGINWILLHANDLELOAD:
+ evas_object_smart_callback_call(pView, "load,finished", NULL);
break;
case EWK_ERROR_NETWORK_STATUS_CANCELLED:
+ pImpl->SetLoadingErrorOccurred(true);
evas_object_smart_callback_call(pView, "load,stop", NULL);
break;
default:
+ pImpl->SetLoadingErrorOccurred(true);
if (pImpl->GetLoadingListener())
{
result r = E_SUCCESS;
void
-OnLoadingCommitted(void* pUserData, Evas_Object* pView, void* pEventInfo)
-{
- evas_object_focus_set(pView, EINA_FALSE);
-}
-
-
-void
OnFaviconReceived(void* pUserData, Evas_Object* pView, void* pEventInfo)
{
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
SysAssertf(pUrl && pImpl != null, "Failed to request");
- SysLog(NID_WEB_CTRL, "The current value of url is %s", pUrl);
+ SysSecureLog(NID_WEB_CTRL, "The current value of url is %s", pUrl);
}
OnWebPageBlockSelected(void* pUserData, Evas_Object* pView, void* pEventInfo)
{
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
- Ewk_Text_Style* pStyle = reinterpret_cast< Ewk_Text_Style* >(pEventInfo);
- SysAssertf(pImpl && pStyle, "Failed to request");
+ SysAssertf(pImpl, "Failed to request");
if (pImpl->GetUiEventListener())
{
Eina_Bool
OnSelectUploadFile(Evas_Object* pView, Eina_Bool multipleFile, Eina_List* pAcceptTypes, const char* pCapture, void* pUserData)
{
- String isMultipleSelection(L"single");
- result r = E_SUCCESS;
+ std::unique_ptr<_MediaSelectionListener> pMediaListener(new (std::nothrow) _MediaSelectionListener());
+ SysTryReturn(NID_WEB_CTRL, pMediaListener.get(), EINA_TRUE, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+ pMediaListener->Construct(pView);
+
+ HashMap extraData;
+ result r = extraData.Construct();
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_TRUE, r, "[%s] Propagating.", GetErrorMessage(r));
- HashMap dataList;
+ String isMultipleSelection(L"single");
String mode(L"selectionType");
String type(L"type");
- _AppControlImpl* pMediaAppControlImpl = null;
-
- int itemCount = 0;
- String fileType = L"all";
+ String fileType = L"*/*";
+ String operationId = L"http://tizen.org/appcontrol/operation/pick";
if (multipleFile)
{
isMultipleSelection.Append(L"multiple");
}
- std::unique_ptr<AppControl> pMediaAppControl(_AppManagerImpl::FindAppControlN(L"tizen.filemanager", L"http://tizen.org/appcontrol/operation/pick"));
- SysTryReturn(NID_WEB_CTRL, pMediaAppControl.get(), EINA_TRUE, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
- std::unique_ptr<_MediaSelectionListener> pMediaListener(new (std::nothrow) _MediaSelectionListener());
- SysTryReturn(NID_WEB_CTRL, pMediaListener.get(), EINA_TRUE, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
- pMediaListener->Construct(pView, pMediaAppControl.get());
-
- itemCount = eina_list_count(pAcceptTypes);
-
- if (itemCount == 1)
+ if (eina_list_count(pAcceptTypes) == 1)
{
String item((char*)eina_list_nth(pAcceptTypes, 0));
+ String captureString(pCapture);
+
if (item.StartsWith("image/",0))
{
- fileType = L"image";
+ if (captureString == L"camera")
+ {
+ fileType = L"image/jpg";
+ operationId = L"http://tizen.org/appcontrol/operation/create_content";
+ String typeKey = L"http://tizen.org/appcontrol/data/camera/allow_switch";
+ String typeVal = L"false";
+ extraData.Add(&typeKey, &typeVal);
+ }
+ else
+ {
+ fileType = L"image/*";
+ String selectKey = L"http://tizen.org/appcontrol/data/selection_mode";
+ extraData.Add(&selectKey, &isMultipleSelection);
+ }
}
else if (item.StartsWith("audio/",0))
{
- fileType = L"audio";
+ fileType = L"audio/*";
+ //TO DO: as microphone is not supported yet. suggest to throw an exception
+ //if (captureString == L"microphone")
+ //{
+ //operationId = L"http://tizen.org/appcontrol/operation/create_content";
+ //}
+ //else
+ //{
+ String selectKey = L"http://tizen.org/appcontrol/data/selection_mode";
+ extraData.Add(&selectKey, &isMultipleSelection);
+ //}
}
else if (item.StartsWith("video/",0))
{
- fileType = L"video";
+ if (captureString == L"camcorder")
+ {
+ fileType = L"video/3gpp";
+ operationId = L"http://tizen.org/appcontrol/operation/create_content";
+ String typeKey = L"http://tizen.org/appcontrol/data/camera/allow_switch";
+ String typeVal = L"false";
+ extraData.Add(&typeKey, &typeVal);
+ }
+ else
+ {
+ fileType = L"video/*";
+ String selectKey = L"http://tizen.org/appcontrol/data/selection_mode";
+ extraData.Add(&selectKey, &isMultipleSelection);
+ }
}
}
- r = dataList.Construct();
- SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
- r = dataList.Add(mode, isMultipleSelection);
- SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
- r = dataList.Add(type, fileType);
- SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
- pMediaAppControlImpl = _AppControlImpl::GetInstance(*pMediaAppControl.get());
- r = pMediaAppControlImpl->Start(null, null, &dataList, pMediaListener.get());
+ r = _AppControlImpl::FindAndStart(operationId, null, &fileType, null, &extraData, pMediaListener.get());
SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
pMediaListener.release();
- pMediaAppControl.release();
return EINA_TRUE;
Eina_Rectangle* pEinaRect = reinterpret_cast< Eina_Rectangle* >(pEventInfo);
SysAssertf(pImpl && pEinaRect, "Failed to request");
+ if (pImpl->IsVisible() == false)
+ {
+ evas_object_focus_set(pView, EINA_FALSE);
+ }
+
if (pImpl->GetSetting().GetInputStyle() == INPUT_STYLE_OVERLAY)
{
_ICoordinateSystemTransformer* pXformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
return;
}
- _Form* pFormCore = pImpl->GetParentFormCore(dynamic_cast< _Control* >(&pImpl->GetCore()));
- if (pFormCore)
+ _FormImpl* pFormImpl = pImpl->GetParentFormImpl(dynamic_cast< _ControlImpl* >(pImpl));
+ if (pFormImpl)
{
- if (pFormCore->HasFooter() && pFormCore->IsFooterVisible())
- {
- pImpl->SetFooterVisibleState(true);
- pFormCore->SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
- }
+ pFormImpl->DeflateClientRectHeight(pXformer->TransformVertical(rect.height));
- pFormCore->DeflateClientRectHeight(pXformer->TransformVertical(rect.height));
+ if (pFormImpl->HasFooter())
+ {
+ pFormImpl->GetCore().SetKeypadShowState(true);
+ pFormImpl->Draw();
+ }
}
if (pImpl->GetWebKeypadEventListener())
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
SysAssertf(pImpl, "Failed to request");
- _Form* pFormCore = pImpl->GetParentFormCore(dynamic_cast< _Control* >(&pImpl->GetCore()));
- if (pFormCore)
+ _FormImpl* pFormImpl = pImpl->GetParentFormImpl(dynamic_cast< _ControlImpl* >(pImpl));
+ if (pFormImpl)
{
- if (pFormCore->HasFooter() && pImpl->IsFooterVisible())
+ pFormImpl->DeflateClientRectHeight(0);
+
+ if (pFormImpl->HasFooter())
{
- pImpl->SetFooterVisibleState(false);
- pFormCore->SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+ pFormImpl->GetCore().SetKeypadShowState(false);
+ pFormImpl->Draw();
}
-
- pFormCore->DeflateClientRectHeight(0);
}
if (pImpl->GetWebKeypadEventListener())
void
-OnWindowObjectFocusGained(void *pUserData, Evas_Object *pWin, void *pEvent_info)
+OnWindowObjectFocusGained(void* pUserData, Evas_Object* pWin, void* pEvent_info)
{
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
SysAssertf(pImpl, "Failed to request");
- if (pImpl->IsKeypadOpened() == true)
+ if (pImpl->IsKeypadOpened() == true && pImpl->IsVisible() == true && pImpl->IsFocused() == true)
{
_Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
SysAssertf(pWebCore, "Failed to get Web core object");
evas_object_focus_set(pWebCore->GetWebNativeNode(), EINA_TRUE);
- pImpl->SetKeypadOpened(false);
+ pImpl->SetKeypadVisibleState(true);
}
}
void
-OnWebNativeNodeFocusGained(void *pUserData, Evas *pCanvas, Evas_Object* pView, void* pEventInfo)
+OnWebNativeNodeFocusGained(void* pUserData, Evas* pCanvas, Evas_Object* pView, void* pEventInfo)
{
_WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
SysAssertf(pImpl, "Failed to request");
if (pImpl->IsKeypadOpened() == true)
{
- pImpl->SetKeypadOpened(false);
+ pImpl->SetKeypadOpened(false);
}
}
Eina_Bool
-OnColorPickerProviderRequested(Ewk_View_Smart_Data *pSmartData, int red, int green, int blue, int alpha)
+OnColorPickerProviderRequested(Ewk_View_Smart_Data* pSmartData, int red, int green, int blue, int alpha)
{
SysAssertf(pSmartData, "invalid smartdata");
_WebImpl* pWebImpl = reinterpret_cast<_WebImpl*>(evas_object_data_get(pSmartData->self, WEB_CTRL));
Eina_Bool
-OnColorPickerProviderDismissed(Ewk_View_Smart_Data *pSmartData)
+OnColorPickerProviderDismissed(Ewk_View_Smart_Data* pSmartData)
{
SysAssertf(pSmartData, "invalid smartdata");
Eina_Bool
-OnDatePickerProviderRequested(Ewk_View_Smart_Data *pSmartData, Ewk_Input_Type inputType, const char* inputValue)
+OnDatePickerProviderRequested(Ewk_View_Smart_Data* pSmartData, Ewk_Input_Type inputType, const char* inputValue)
{
SysAssertf(pSmartData, "Failed to request");
_WebImpl* pWebImpl = reinterpret_cast<_WebImpl*>(evas_object_data_get(pSmartData->self, WEB_CTRL));
Eina_Bool
-OnSelectBoxRequested(Ewk_View_Smart_Data *pSmartData, Eina_Rectangle rect, Ewk_Text_Direction textDirection, double pageScaleFactor, Eina_List* pItems, int selectedIndex)
+OnSelectBoxRequested(Ewk_View_Smart_Data* pSmartData, Eina_Rectangle rect, Ewk_Text_Direction textDirection, double pageScaleFactor, Eina_List* pItems, int selectedIndex)
{
SysAssertf(pSmartData, "Failed to request");
Eina_Bool
-OnSelectBoxClosed(Ewk_View_Smart_Data *pSmartData)
+OnMultiSelectBoxRequested(Ewk_View_Smart_Data* pSmartData, Eina_Rectangle rect, Ewk_Text_Direction text_direction, double page_scale_factor, Eina_List* pItems)
+{
+ SysAssertf(pSmartData, "Failed to request");
+
+ _WebImpl* pWebImpl = reinterpret_cast<_WebImpl*>(evas_object_data_get(pSmartData->self, WEB_CTRL));
+ SysAssertf(pWebImpl, "Failed to get Impl");
+
+ result r = pWebImpl->ShowSelectBoxPopup(true, L"", pItems, pSmartData->self, 0);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ return EINA_TRUE;
+}
+
+
+Eina_Bool
+OnSelectBoxClosed(Ewk_View_Smart_Data* pSmartData)
{
SysAssertf(pSmartData, "invalid smartdata");
}
-void
-OnCookiesPolicyGot(Ewk_Cookie_Accept_Policy policy, Ewk_Web_Error *pError, void *pUserData)
+Eina_Bool
+OnFormDataCandidateShow(Ewk_View_Smart_Data *pSmartData, int x, int y, int w, int h)
{
- _WebPresenter* pPresenter = reinterpret_cast< _WebPresenter* >(pUserData);
- SysAssertf(pPresenter && !pError, "Failed to request");
+ SysAssertf(pSmartData, "Failed to request");
- bool ret = EINA_TRUE;
+ _WebImpl* pWebImpl = reinterpret_cast<_WebImpl*>(evas_object_data_get(pSmartData->self, WEB_CTRL));
+ SysAssertf(pWebImpl, "Failed to get Impl");
- switch (policy)
- {
- case EWK_COOKIE_ACCEPT_POLICY_ALWAYS:
- //fall through
+ Rectangle windowRect(x, y, w, h);
+ result r = pWebImpl->ShowFormDataWindow(windowRect, pSmartData->self);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ return EINA_TRUE;
+}
+
+
+Eina_Bool
+OnFormDataCandidateHide(Ewk_View_Smart_Data *pSmartData)
+{
+ SysAssertf(pSmartData, "Failed to request");
+
+ _WebImpl* pWebImpl = reinterpret_cast<_WebImpl*>(evas_object_data_get(pSmartData->self, WEB_CTRL));
+ SysAssertf(pWebImpl, "Failed to get Impl");
+
+ if (pWebImpl->IsFormDataWindowVisible())
+ {
+ pWebImpl->HideFormDataWindow();
+ }
+
+ return EINA_TRUE;
+}
+
+
+Eina_Bool
+OnFormDataCandidateUpdate(Ewk_View_Smart_Data *pSmartData, Eina_List *pDataList)
+{
+ SysAssertf(pSmartData, "Failed to request");
+
+ _WebImpl* pWebImpl = reinterpret_cast<_WebImpl*>(evas_object_data_get(pSmartData->self, WEB_CTRL));
+ SysAssertf(pWebImpl, "Failed to get Impl");
+
+ pWebImpl->SetFormDataList(pDataList);
+
+ return EINA_TRUE;
+}
+
+
+Eina_Bool
+OnFormDataCandidateIsShowing(Ewk_View_Smart_Data *pSmartData)
+{
+ SysAssertf(pSmartData, "Failed to request");
+
+ _WebImpl* pWebImpl = reinterpret_cast<_WebImpl*>(evas_object_data_get(pSmartData->self, WEB_CTRL));
+ SysAssertf(pWebImpl, "Failed to get Impl");
+
+ if (pWebImpl->IsFormDataWindowVisible())
+ {
+ return EINA_TRUE;
+ }
+ else
+ {
+ return EINA_FALSE;
+ }
+}
+
+
+void
+OnCookiesPolicyGot(Ewk_Cookie_Accept_Policy policy, Ewk_Web_Error *pError, void *pUserData)
+{
+ _WebPresenter* pPresenter = reinterpret_cast< _WebPresenter* >(pUserData);
+ SysAssertf(pPresenter && !pError, "Failed to request");
+
+ bool ret = EINA_TRUE;
+
+ switch (policy)
+ {
+ case EWK_COOKIE_ACCEPT_POLICY_ALWAYS:
+ //fall through
case EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY:
ret = EINA_TRUE;
break;
String result(pResult);
SysLog(NID_WEB_CTRL, "result : %ls", result.GetPointer());
- pPresenter->EndAsyncProcess(result);
+ _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(evas_object_data_get(pView, WEB_CTRL));
+ _WebManager* pWebManager = _WebManager::GetInstance();
+ if (pWebManager->IsValidCallback(reinterpret_cast< int >(pImpl), reinterpret_cast< int >(pPresenter)))
+ {
+ pPresenter->EndAsyncProcess(result);
+ }
}
, __isRedirectRequested(false)
, __isCertificateRequested(false)
, __isCertificateConfirmed(false)
+ , __isFormDataVisible(false)
, __keypadBounds(0, 0, 0, 0)
, __pWebCore(null)
, __pUserLoadingListener(null)
, __pWebEvent(null)
, __pAuthChallenge(null)
, __pAuthPopup(null)
- , __pUserConfirmPopup(null)
+ , __pUserMediaConfirmPopup(null)
+ , __pContentHandlerConfirmPopup(null)
+ , __pProtocolHandlerConfirmPopup(null)
+ , __pGeolocationConfirmPopup(null)
+ , __pNotificationConfirmPopup(null)
+ , __pScriptAlertConfirmPopup(null)
+ , __pScriptConfirmPopup(null)
+ , __pAppCacheConfirmPopup(null)
+ , __pDbQuotaConfirmPopup(null)
+ , __pLocalFsQuotaConfirmPopup(null)
+ , __pIndexedDbQuotaConfirmPopup(null)
+ , __pPromptPopup(null)
, __pCertConfirmPopup(null)
, __pSelectBox(null)
, __pDatePicker(null)
, __pColorPicker(null)
+ , __pFormDataWindow(null)
, __pVibrator(null)
, __policy(WEB_DECISION_CONTINUE)
+ , __defaultUserAgent(L"")
+ , __pFormDataList(null)
+ , __popupClosed(false)
{
__textSearch.__searchAll = false;
__textSearch.__searchForward = true;
_WebImpl::~_WebImpl()
{
- RemoveEventListenerCallback();
+ ClearCertificateDb();
}
+
_WebImpl*
_WebImpl::CreateWebImplN(Web* pControl, const Rectangle& bounds)
{
r = __textSearch.__searchQueue.Construct();
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ r = __webNotificationList.Construct();
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
r = InitJsBridgeList();
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
r = InitWebEvent();
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ _DownloadManagerImpl* pManagerImpl = _DownloadManagerImpl::GetInstance();
+ SysTryReturn(NID_WEB_CTRL, pManagerImpl, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+ pManagerImpl->SetDownloadListener(this);
+
__pWebCore = dynamic_cast< _Web* >(&(GetCore()));
SysTryReturnResult(NID_WEB_CTRL, __pWebCore, E_SYSTEM, "A system error has been occurred. Failed to get web control");
{
result r = E_SUCCESS;
- r = SetSetting(*__pWebCore->GetSetting());
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
- _WebSettingImpl* pWebSettingImpl = _WebSettingImpl::GetInstance(__pWebCore->GetSetting());
+ WebSetting* pWebSetting = __pWebCore->GetSetting();
+ _WebSettingImpl* pWebSettingImpl = _WebSettingImpl::GetInstance(pWebSetting);
SetCookieEnabled(pWebSettingImpl->IsCookieEnabled());
SetPrivateBrowsingEnabled(pWebSettingImpl->IsPrivateBrowsingEnabled());
- SetZoomLevel(pWebSettingImpl->GetZoomLevel());
+
+ __defaultUserAgent = pWebSettingImpl->GetUserAgent();
+
+ r = SetSetting(*pWebSetting);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
SetEventListenerCallback();
{
__pSelectBox.reset();
- int itemCount = eina_list_count(pItems);
- SysTryReturnResult(NID_WEB_CTRL, itemCount > 0, E_SYSTEM, "ItemCount is invalid.");
+ SysTryReturnResult(NID_WEB_CTRL, eina_list_count(pItems) > 0, E_SYSTEM, "ItemCount is invalid.");
result r = E_SUCCESS;
std::unique_ptr<_SelectBox> pSelectBox(new (std::nothrow) _SelectBox());
SysTryReturnResult(NID_WEB_CTRL, pSelectBox.get(), E_OUT_OF_MEMORY, "Memory allocation failed.");
- r = pSelectBox->Construct(isMultiSelect, title, itemCount, pWebView);
+ r = pSelectBox->Construct(isMultiSelect, title, DEFAULT_LIST_ITEM_COUNT, pWebView);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
r = pSelectBox->UpdateList(pItems, selectedIndex, false, false);
__pSelectBox = std::move(pSelectBox);
- __pSelectBox->SetOwner(&GetPublic());
-
return __pSelectBox->ShowPopup();
}
void
_WebImpl::Reload(void) const
{
- ewk_view_reload_bypass_cache(__pWebCore->GetWebNativeNode());
+ ewk_view_reload(__pWebCore->GetWebNativeNode());
}
String*
-_WebImpl::EvaluateJavascriptN(const String& scriptCode) const
+_WebImpl::EvaluateJavascriptN(const String& scriptCode)
{
- if (scriptCode.GetLength())
+ Evas_Object* pView = __pWebCore->GetWebNativeNode();
+ if (!pView)
{
- std::unique_ptr<char[]> pScript(_StringConverter::CopyToCharArrayN(scriptCode));
- SysTryReturn(NID_WEB_CTRL, pScript.get(), null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+ return null;
+ }
+
+ std::unique_ptr<char[]> pScript(_StringConverter::CopyToCharArrayN(scriptCode));
+ SysTryReturn(NID_WEB_CTRL, pScript.get(), null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
- _WebPresenter presenter;
- presenter.InitAsyncProcess();
+ std::unique_ptr<_WebPresenter> pPresenter(new (std::nothrow) _WebPresenter(this));
+ SysTryReturn(NID_WEB_CTRL, pPresenter.get(), null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
- ewk_view_script_execute(__pWebCore->GetWebNativeNode(), pScript.get(), OnScriptExecuted, &presenter);
+ ewk_view_script_execute(pView, pScript.get(), OnScriptExecuted, pPresenter.get());
- Tizen::Base::String* pResult = new (std::nothrow) Tizen::Base::String(L"");
- SysTryReturn(NID_WEB_CTRL, pResult, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
- presenter.WaitAsyncProcess(*pResult);
+ std::unique_ptr<String> pResult(new (std::nothrow) String(L""));
+ SysTryReturn(NID_WEB_CTRL, pResult.get(), null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
- return pResult;
- }
+ pPresenter->WaitAsyncProcess(*pResult.get());
- return null;
+ return pResult.release();
}
const PageNavigationList*
_WebImpl::GetBackForwardListN(void) const
{
+ Evas_Object* pView = __pWebCore->GetWebNativeNode();
+ if (!pView)
+ {
+ return null;
+ }
+
result r = E_SUCCESS;
_PageNavigationListImpl* pNavigationListImpl = null;
String url(L"");
String title(L"");
- Ewk_History* pEwkHistoryList = ewk_view_history_get(__pWebCore->GetWebNativeNode());
+ Ewk_History* pEwkHistoryList = ewk_view_history_get(pView);
SysTryReturn(NID_WEB_CTRL, pEwkHistoryList, null, E_SYSTEM, "[%s] A system error has been occurred. Failed to get full history.", GetErrorMessage(E_SYSTEM));
Ewk_History_Item* pEwkItem = ewk_history_nth_item_get(pEwkHistoryList, 0);
url = ewk_history_item_uri_get(pEwkItem);
title = ewk_history_item_title_get(pEwkItem);
- SysLog(NID_WEB_CTRL, "The current value of url is %s, title is %s", url.GetPointer(), title.GetPointer());
+ SysSecureLog(NID_WEB_CTRL, "The current value of url is %s, title is %s", url.GetPointer(), title.GetPointer());
pHistoryItemImpl->SetHistoryItem(url, title);
bool
_WebImpl::SearchText(const String& text, bool searchForward)
{
+ Evas_Object* pView = __pWebCore->GetWebNativeNode();
+ if (!pView)
+ {
+ return false;
+ }
+
result r = E_SUCCESS;
Ewk_Find_Options condition = static_cast< Ewk_Find_Options >(EWK_FIND_OPTIONS_SHOW_HIGHLIGHT | EWK_FIND_OPTIONS_CASE_INSENSITIVE);
condition = static_cast < Ewk_Find_Options >(condition | EWK_FIND_OPTIONS_BACKWARDS);
}
- _WebPresenter presenter;
- presenter.InitAsyncProcess();
+ std::unique_ptr<_WebPresenter> pPresenter(new (std::nothrow) _WebPresenter(this));
+ SysTryReturn(NID_WEB_CTRL, pPresenter.get(), false, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
- r = SynchronizeSearch(SEARCH_SYNC, __pWebCore->GetWebNativeNode(), condition, text, searchForward, false, &presenter);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ r = SynchronizeSearch(SEARCH_SYNC, pView, condition, text, searchForward, false, pPresenter.get());
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, false, r, "[%s] Propagating.", GetErrorMessage(r));
int result = 0;
- presenter.WaitAsyncProcess(result);
+ pPresenter->WaitAsyncProcess(result);
return static_cast < bool >(result);
}
result
_WebImpl::SearchTextAllAsync(const Tizen::Base::String& text, bool caseSensitive)
{
+ Evas_Object* pView = __pWebCore->GetWebNativeNode();
+ if (!pView)
+ {
+ return E_SUCCESS;
+ }
+
result r = E_SUCCESS;
Ewk_Find_Options condition = EWK_FIND_OPTIONS_SHOW_HIGHLIGHT;
condition = static_cast <Ewk_Find_Options>(condition | EWK_FIND_OPTIONS_CASE_INSENSITIVE);
}
- r = SynchronizeSearch(SEARCH_ALL_ASYNC, __pWebCore->GetWebNativeNode(), condition, text, true, caseSensitive);
+ r = SynchronizeSearch(SEARCH_ALL_ASYNC, pView, condition, text, true, caseSensitive);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
return E_SUCCESS;
result
_WebImpl::SearchNextAsync(bool searchForward)
{
+ Evas_Object* pView = __pWebCore->GetWebNativeNode();
+ if (!pView)
+ {
+ return E_SUCCESS;
+ }
+
SysTryReturnResult(NID_WEB_CTRL, __textSearch.__searchAll && __textSearch.__totalCount > -1, E_INVALID_OPERATION, "The SearchTextAllAsync() method is not called or completed.");
SysTryReturnResult(NID_WEB_CTRL, (searchForward && __textSearch.__currentIndex < __textSearch.__totalCount) || (!searchForward && __textSearch.__currentIndex > 1)
, E_OBJ_NOT_FOUND, "The Next instance is not available.");
Ewk_Find_Options condition = EWK_FIND_OPTIONS_SHOW_HIGHLIGHT;
- if (__textSearch.__caseSensitive)
+ if (!__textSearch.__caseSensitive)
{
condition = static_cast <Ewk_Find_Options>(condition | EWK_FIND_OPTIONS_CASE_INSENSITIVE);
}
condition = static_cast <Ewk_Find_Options>(condition | EWK_FIND_OPTIONS_BACKWARDS);
}
- r = SynchronizeSearch(SEARCH_NEXT_ASYNC, __pWebCore->GetWebNativeNode(), condition, __textSearch.__text, searchForward);
+ r = SynchronizeSearch(SEARCH_NEXT_ASYNC, pView, condition, __textSearch.__text, searchForward);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
return E_SUCCESS;
ewk_settings_loads_images_automatically_set(pSettings, static_cast< Eina_Bool >(setting.IsAutoImageLoadEnabled()));
- std::unique_ptr<char[]> pAgent(_StringConverter::CopyToCharArrayN(setting.GetUserAgent()));
- SysTryReturn(NID_WEB_CTRL, pAgent.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+ if (__defaultUserAgent != setting.GetUserAgent())
+ {
+ std::unique_ptr<char[]> pAgent(_StringConverter::CopyToCharArrayN(setting.GetUserAgent()));
+ SysTryReturn(NID_WEB_CTRL, pAgent.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
- ewk_view_user_agent_set(__pWebCore->GetWebNativeNode(), pAgent.get());
+ ewk_view_user_agent_set(__pWebCore->GetWebNativeNode(), pAgent.get());
+ }
ewk_settings_auto_fitting_set(pSettings, static_cast< Eina_Bool >(setting.IsAutoFittingEnabled()));
const HitElementResult*
_WebImpl::GetElementByPointN(const Point& point) const
{
+ return GetElementByPointN(_CoordinateSystemUtils::ConvertToFloat(point));
+}
+
+
+const HitElementResult*
+_WebImpl::GetElementByPointN(const FloatPoint& point) const
+{
+ Evas_Object* pView = __pWebCore->GetWebNativeNode();
+ if (!pView)
+ {
+ return null;
+ }
+
+ SysTryReturn(NID_WEB_CTRL, Contains(point), null, E_INVALID_ARG, "[%s] The point must be contained in the bounds of a web control.", GetErrorMessage(E_INVALID_ARG));
+
result r = E_SUCCESS;
_HitElementResultImpl* pHitElementResultImpl = null;
std::unique_ptr<Bitmap> pImage;
std::unique_ptr<HashMap, AllElementsDeleter> pAttributeMap;
- Point absPoint(__pWebCore->GetAbsoluteCoordinate(point));
+ Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(point)));
- Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(__pWebCore->GetWebNativeNode(), absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+ Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pView, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
SysTryReturn(NID_WEB_CTRL, pEwkHitTest, null, E_SYSTEM, "[%s] Failed to get hit test.", GetErrorMessage(E_SYSTEM));
Eina_Hash* pAttrHash = ewk_hit_test_attribute_hash_get(pEwkHitTest);
String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
String nodeValue(ewk_hit_test_node_value_get(pEwkHitTest));
- SysLog(NID_WEB_CTRL, "The current value of url is %ls, tag is %ls, value is %ls", url.GetPointer(), tagName.GetPointer(), nodeValue.GetPointer());
+ SysSecureLog(NID_WEB_CTRL, "The current value of url is %ls, tag is %ls, value is %ls", url.GetPointer(), tagName.GetPointer(), nodeValue.GetPointer());
pHitElementResult = std::unique_ptr<HitElementResult>(new (std::nothrow) HitElementResult());
SysTryCatch(NID_WEB_CTRL, pHitElementResult.get(), , E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
}
-const HitElementResult*
-_WebImpl::GetElementByPointN(const FloatPoint& point) const
-{
- const Point integerPoint(_CoordinateSystemUtils::ConvertToInteger(point));
-
- std::unique_ptr<const HitElementResult> pHitElementResult(GetElementByPointN(integerPoint));
- SysTryReturn(NID_WEB_CTRL, pHitElementResult.get(), null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
- return pHitElementResult.release();
-}
-
-
bool
_WebImpl::IsLoading(void) const
{
_WebImpl::ClearCache(void)
{
Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
- SysAssertf(pContext, "Failed to get webkit instance.");
ewk_context_cache_clear(pContext);
}
{
Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
Ewk_Cookie_Manager* pCookieManager = ewk_context_cookie_manager_get(pContext);
- SysAssertf(pCookieManager, "Failed to get webkit instance.");
ewk_cookie_manager_cookies_clear(pCookieManager);
}
_WebImpl::ClearFormData(void)
{
Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
- SysAssertf(pContext, "Failed to get webkit instance.");
ewk_context_form_candidate_data_clear(pContext);
}
_WebImpl::ClearLoginFormData(void)
{
Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
- SysAssertf(pContext, "Failed to get webkit instance.");
ewk_context_form_password_data_clear(pContext);
}
Ewk_Cookie_Manager* pCookieManager = ewk_context_cookie_manager_get(pContext);
SysAssertf(pCookieManager, "Failed to get webkit instance.");
- _WebPresenter presenter;
- presenter.InitAsyncProcess();
+ std::unique_ptr<_WebPresenter> pPresenter(new (std::nothrow) _WebPresenter(this));
+ SysTryReturn(NID_WEB_CTRL, pPresenter.get(), false, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
- ewk_cookie_manager_async_accept_policy_get(pCookieManager, OnCookiesPolicyGot, &presenter);
+ ewk_cookie_manager_async_accept_policy_get(pCookieManager, OnCookiesPolicyGot, pPresenter.get());
bool result = false;
- presenter.WaitAsyncProcess(result);
+ pPresenter->WaitAsyncProcess(result);
return result;
}
SysAssertf(pSmart, "Failed to request");
pSmart->popup_menu_show = OnSelectBoxRequested;
+ pSmart->multiple_popup_menu_show = OnMultiSelectBoxRequested;
pSmart->popup_menu_hide = OnSelectBoxClosed;
pSmart->popup_menu_update = OnSelectBoxUpdateRequested;
pSmart->input_picker_color_request = OnColorPickerProviderRequested;
pSmart->input_picker_color_dismiss = OnColorPickerProviderDismissed;
+ pSmart->formdata_candidate_show = OnFormDataCandidateShow;
+ pSmart->formdata_candidate_hide = OnFormDataCandidateHide;
+ pSmart->formdata_candidate_update_data = OnFormDataCandidateUpdate;
+ pSmart->formdata_candidate_is_showing = OnFormDataCandidateIsShowing;
+
evas_object_data_set(pWebNativeNode, WEB_CTRL, this);
// add loading event callbacks for ILoadingListener
evas_object_smart_callback_add(pWebNativeNode, "load,stop", OnLoadingCanceled, this);
evas_object_smart_callback_add(pWebNativeNode, "load,error", OnLoadingErrorOccurred, this);
evas_object_smart_callback_add(pWebNativeNode, "title,changed", OnPageTitleReceived, this);
- evas_object_smart_callback_add(pWebNativeNode, "load,committed", OnLoadingCommitted, this);
evas_object_smart_callback_add(pWebNativeNode, "requestToNative,json", OnHandleJavaScriptRequest, this);
evas_object_smart_callback_add(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered, this);
evas_object_smart_callback_add(pWebNativeNode, "icon,received", OnFaviconReceived, this);
- evas_object_smart_callback_add(pWebNativeNode, "text,style,state", OnWebPageBlockSelected, this);
+ evas_object_smart_callback_add(pWebNativeNode, "text,selected", OnWebPageBlockSelected, this);
+
+ evas_object_smart_callback_add(pWebNativeNode, "fullscreen,enterfullscreen", OnFullScreenEntered, this);
+ evas_object_smart_callback_add(pWebNativeNode, "fullscreen,exitfullscreen", OnFullScreenExited, this);
ewk_view_open_panel_callback_set(pWebNativeNode, OnSelectUploadFile, const_cast< _WebImpl* >(this));
Ewk_Context* pContext = ewk_view_context_get(pWebNativeNode);
SysAssertf(pContext, "Failed to get webkit instance.");
ewk_context_did_start_download_callback_set(pContext, OnDidStartDownloadCallback, const_cast< _WebImpl* >(this));
ewk_context_vibration_client_callbacks_set(pContext, OnVibrationRequested, OnVibrationCanceled, const_cast< _WebImpl* >(this));
+
ewk_view_application_cache_permission_callback_set(pWebNativeNode, OnApplicationCachePermissionRequested, const_cast< _WebImpl* >(this));
+ ewk_view_exceeded_indexed_database_quota_callback_set(pWebNativeNode, OnIndexedDatabaseQuotaExceeded, const_cast< _WebImpl* >(this));
+ ewk_view_exceeded_database_quota_callback_set(pWebNativeNode, OnDatabaseQuotaExceeded, const_cast< _WebImpl* >(this));
+ ewk_view_exceeded_local_file_system_quota_callback_set(pWebNativeNode, OnLocalFileSystemQuotaExceeded, const_cast< _WebImpl* >(this));
evas_object_event_callback_add(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained, this);
}
evas_object_smart_callback_del(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered);
evas_object_smart_callback_del(pWebNativeNode, "icon,received", OnFaviconReceived);
- evas_object_smart_callback_del(pWebNativeNode, "text,style,state", OnWebPageBlockSelected);
+ evas_object_smart_callback_del(pWebNativeNode, "text,selected", OnWebPageBlockSelected);
+
+ evas_object_smart_callback_del(pWebNativeNode, "fullscreen,enterfullscreen", OnFullScreenEntered);
+ evas_object_smart_callback_del(pWebNativeNode, "fullscreen,exitfullscreen", OnFullScreenExited);
ewk_view_open_panel_callback_set(null, null, null);
Ewk_Context* pContext = ewk_view_context_get(pWebNativeNode);
SysAssertf(pContext, "Failed to get webkit instance.");
ewk_context_vibration_client_callbacks_set(pContext, null, null, null);
+
ewk_view_application_cache_permission_callback_set(pWebNativeNode, null, null);
+ ewk_view_exceeded_indexed_database_quota_callback_set(pWebNativeNode, null, null);
+ ewk_view_exceeded_database_quota_callback_set(pWebNativeNode, null, null);
+ ewk_view_exceeded_local_file_system_quota_callback_set(pWebNativeNode, null, null);
evas_object_event_callback_del(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained);
}
}
-result
-_WebImpl::SetBlockSelectionPosition(const Point& startPoint)
+void
+_WebImpl::ClearCertificateDb(void)
{
- Evas_Object* pWebNativeNode = __pWebCore->GetWebNativeNode();
+ result r = E_SUCCESS;
- Ewk_View_Smart_Data* pSmartData = (Ewk_View_Smart_Data*) evas_object_smart_data_get(pWebNativeNode);
- SysAssertf(pSmartData, "Failed to request");
+ String certificatePath(Tizen::App::App::GetInstance()->GetAppRootPath() + CUSTOM_DB_DIRECTORY_PATH + USER_CONFIRM_DB_NAME);
+ String table(CERTIFICATE_TABLE_NAME);
+ _DatabaseImpl db;
+
+ r = db.Construct(certificatePath, "r+", null);
+ SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- Point absPoint(__pWebCore->GetAbsoluteCoordinate(startPoint));
+ db.BeginTransaction();
- Eina_Bool ret = pSmartData->api->text_selection_down(pSmartData, absPoint.x, absPoint.y);
- if (ret)
- {
- pSmartData->api->text_selection_up(pSmartData, absPoint.x, absPoint.y);
+ r = db.ExecuteSql(L"Delete From " + table, true);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
- Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(__pWebCore->GetWebNativeNode(), absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
- SysTryReturnResult(NID_WEB_CTRL, pEwkHitTest, E_SYSTEM, "Failed to get hit test.");
+ db.CommitTransaction();
- String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
+ return;
- if (tagName.Equals(L"INPUT", false) || tagName.Equals(L"TEXTAREA", false))
- {
- ewk_view_command_execute(pWebNativeNode, "SelectWord", 0);
- }
- }
+CATCH:
+ db.RollbackTransaction();
+}
- SysTryReturnResult(NID_WEB_CTRL, GetTextFromBlock().GetLength() > 0, E_INVALID_ARG, "Failed to set text selection up.");
- return E_SUCCESS;
+result
+_WebImpl::SetBlockSelectionPosition(const Point& startPoint)
+{
+ return SetBlockSelectionPosition(_CoordinateSystemUtils::ConvertToFloat(startPoint));
}
result
_WebImpl::SetBlockSelectionPosition(const FloatPoint& startPoint)
{
- return SetBlockSelectionPosition(_CoordinateSystemUtils::ConvertToInteger(startPoint));
+ Evas_Object* pView = __pWebCore->GetWebNativeNode();
+ Ewk_View_Smart_Data* pSmartData = (Ewk_View_Smart_Data*) evas_object_smart_data_get(pView);
+ if (pSmartData && pSmartData->api)
+ {
+ Point absPoint( _CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(startPoint)));
+
+ Eina_Bool ret = pSmartData->api->text_selection_down(pSmartData, absPoint.x, absPoint.y);
+ if (ret)
+ {
+ pSmartData->api->text_selection_up(pSmartData, absPoint.x, absPoint.y);
+
+ Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pView, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+ SysTryReturnResult(NID_WEB_CTRL, pEwkHitTest, E_SYSTEM, "Failed to get hit test.");
+
+ String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
+
+ if (tagName.Equals(L"INPUT", false) || tagName.Equals(L"TEXTAREA", false))
+ {
+ ewk_view_command_execute(pView, "SelectWord", 0);
+ }
+ else
+ {
+ Eina_Hash* pAttrHash = ewk_hit_test_attribute_hash_get(pEwkHitTest);
+ char* pValue = reinterpret_cast< char* >(eina_hash_find(pAttrHash, "contenteditable"));
+ if(pValue)
+ {
+ ewk_view_command_execute(pView, "SelectWord", 0);
+ }
+ }
+ }
+ }
+
+ SysTryReturnResult(NID_WEB_CTRL, GetTextFromBlock().GetLength() > 0, E_INVALID_ARG, "Failed to set text selection up.");
+
+ evas_object_smart_callback_call(pView, "text,selected", NULL);
+
+ return E_SUCCESS;
}
void
_WebImpl::ReleaseBlock(void)
{
- ewk_view_command_execute(__pWebCore->GetWebNativeNode(), "Unselect", 0);
+ ewk_view_text_selection_range_clear(__pWebCore->GetWebNativeNode());
}
Eina_Rectangle leftHandle;
Eina_Rectangle rightHandle;
+ EINA_RECTANGLE_SET(&leftHandle, 0, 0, 0, 0);
+ EINA_RECTANGLE_SET(&rightHandle, 0, 0, 0, 0);
+
ewk_view_text_selection_range_get(__pWebCore->GetWebNativeNode(), &leftHandle, &rightHandle);
startPoint.x = _CoordinateSystemUtils::ConvertToFloat(leftHandle.x);
result r = E_SUCCESS;
Evas_Object* pView = __pWebCore->GetWebNativeNode();
-
- Evas* pEvas = evas_object_evas_get(pView);
Ewk_Context* pContext = ewk_view_context_get(pView);
- SysAssertf(pEvas && pContext, "Failed to request");
-
const char* pUrl = ewk_view_url_get(pView);
-
- Tizen::Graphics::BufferInfo bufferInfo;
- Tizen::Base::ByteBuffer byteBuffer;
-
- std::unique_ptr<Bitmap> pBitmapImage(new (std::nothrow) Bitmap());
- SysTryReturn(NID_WEB_CTRL, pBitmapImage.get(), null, E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+ Evas* pEvas = evas_object_evas_get(pView);
Evas_Object* pFavicon = ewk_context_icon_database_icon_object_add(pContext, pUrl, pEvas);
if (!pFavicon)
return null;
}
+ Tizen::Graphics::BufferInfo bufferInfo;
+
r = _Utility::GetPixelBufferFromEvasObject(pFavicon, bufferInfo);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
const Dimension dimension(bufferInfo.width, bufferInfo.height);
-
+ Tizen::Base::ByteBuffer byteBuffer;
+
r = byteBuffer.Construct((byte*)bufferInfo.pPixels, 0, dimension.height * dimension.width * 32, dimension.height * dimension.width * 32 );
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
- r = pBitmapImage->Construct(byteBuffer, dimension, BITMAP_PIXEL_FORMAT_ARGB8888);
+ std::unique_ptr<Bitmap> pImage(new (std::nothrow) Bitmap());
+ SysTryReturn(NID_WEB_CTRL, pImage.get(), null, E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+ r = pImage->Construct(byteBuffer, dimension, BITMAP_PIXEL_FORMAT_ARGB8888);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
- return pBitmapImage.release();
+ return pImage.release();
}
}
+result
+_WebImpl::AddHttpHeaderField(const String& name, const String& value)
+{
+ SysTryReturnResult(NID_WEB_CTRL, name.GetLength() > 0, E_INVALID_ARG, "Invalid argument(s) is used. name key is missing.");
+
+ std::unique_ptr<char[]> pName(_StringConverter::CopyToCharArrayN(name));
+ SysTryReturn(NID_WEB_CTRL, pName.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+ std::unique_ptr<char[]> pValue(_StringConverter::CopyToCharArrayN(value));
+
+ ewk_view_custom_header_add(__pWebCore->GetWebNativeNode(), pName.get(), pValue.get());
+
+ return E_SUCCESS;
+}
+
+
+result
+_WebImpl::RemoveHttpHeaderField(const String& name)
+{
+ SysTryReturnResult(NID_WEB_CTRL, name.GetLength() > 0, E_INVALID_ARG, "Invalid argument(s) is used. name key is missing.");
+
+ std::unique_ptr<char[]> pName(_StringConverter::CopyToCharArrayN(name));
+ SysTryReturn(NID_WEB_CTRL, pName.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+ ewk_view_custom_header_remove(__pWebCore->GetWebNativeNode(), pName.get());
+
+ return E_SUCCESS;
+}
+
+
void
_WebImpl::SetLoadingErrorOccurred(bool arg)
{
}
-bool
-_WebImpl::IsCertificateConfirmed(void) const
+void
+_WebImpl::SetCertificateConfirmed(bool arg)
{
- return __isCertificateConfirmed;
+ __isCertificateConfirmed = arg;
}
-result
-_WebImpl::LaunchAppControl(const IEventArg& arg)
+bool
+_WebImpl::IsCertificateConfirmed(void) const
{
- result r = E_SUCCESS;
-
- IEventArg* pArg = const_cast< IEventArg* >(&arg);
- _WebEventArg* pWebEventArg = dynamic_cast< _WebEventArg* >(pArg);
- SysTryReturnResult(NID_WEB_CTRL, pWebEventArg, E_INVALID_ARG, "Type casting failed. argument must be IEventArg type.");
-
- String operationId(L"");
- String uriPattern(pWebEventArg->GetEventMessage());
- SysLog(NID_WEB_CTRL, "The current value of web event type is %d", pWebEventArg->GetEventType());
-
- switch (pWebEventArg->GetEventType())
- {
- case WEB_EVENT_REQUEST_RTSP:
- {
- String ext;
- String mimeType;
- int uriLength = uriPattern.GetLength();
- int index;
-
- operationId = L"http://tizen.org/appcontrol/operation/view";
-
- r = uriPattern.LastIndexOf(L".", uriLength - 1, index);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
- r = uriPattern.SubString(index + 1, ext);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
- r = _AppControlManager::GetMimeFromExt(ext, mimeType);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
- r = _AppControlImpl::FindAndStart(operationId, &uriPattern, &mimeType, null, null, null);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
- return r;
- }
- case WEB_EVENT_REQUEST_TEL:
- {
- operationId = L"http://tizen.org/appcontrol/operation/dial";
- break;
- }
- case WEB_EVENT_REQUEST_EMAIL:
- //fall through
- case WEB_EVENT_REQUEST_SMS:
- //fall through
- case WEB_EVENT_REQUEST_MMS:
- {
- operationId = L"http://tizen.org/appcontrol/operation/compose";
- break;
- }
- case WEB_EVENT_REQUEST_UNKNOWN:
- {
- operationId = L"http://tizen.org/appcontrol/operation/view";
- break;
- }
- default:
- SysAssert(false);
- break;
- }
-
- r = _AppControlImpl::FindAndStart(operationId, &uriPattern, null, null, null, null);
- SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
- return r;
+ return __isCertificateConfirmed;
}
int modalResult = 0;
- __pAuthPopup->SetOwner(&GetPublic());
-
r = __pAuthPopup->ShowAndWait(modalResult);
SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
CATCH:
- __pAuthPopup.reset();
+ if (__pAuthPopup)
+ {
+ __pAuthPopup.reset();
+ }
return r;
}
std::unique_ptr<_CertificateConfirmPopup> pCertConfirmPopup(new (std::nothrow) _CertificateConfirmPopup());
SysTryReturnResult(NID_WEB_CTRL, pCertConfirmPopup.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
- r = pCertConfirmPopup->Construct(userConfirmMode, pPolicy);
+ r = pCertConfirmPopup->Construct(userConfirmMode, pPolicy, this);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
__pCertConfirmPopup = std::move(pCertConfirmPopup);
int modalResult = 0;
- __pCertConfirmPopup->SetOwner(&GetPublic());
-
r = __pCertConfirmPopup->ShowAndWait(modalResult);
SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
- if (userConfirmMode == CERTIFICATE_POPUP_MODE_USER_CONFIRM)
+ if (__pCertConfirmPopup.get() && userConfirmMode == CERTIFICATE_POPUP_MODE_USER_CONFIRM)
{
__isCertificateConfirmed = __pCertConfirmPopup->GetConfirmResult();
}
CATCH:
- __pCertConfirmPopup.reset();
+ if (__pCertConfirmPopup.get())
+ {
+ __pCertConfirmPopup.reset();
+ }
return r;
}
+
result
-_WebImpl::ShowUserConfirmPopup(_UserConfirmMode userConfirmMode, void* pPolicy)
+_WebImpl::ShowPromptPopup(String msg, String defVal)
{
result r = E_SUCCESS;
- std::unique_ptr<_UserConfirmPopup> pUserConfirmPopup(new (std::nothrow) _UserConfirmPopup());
- SysTryReturnResult(NID_WEB_CTRL, pUserConfirmPopup.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+ std::unique_ptr< _PromptPopup > pPromptPopup(new (std::nothrow) _PromptPopup());
+ SysTryReturnResult(NID_WEB_CTRL, pPromptPopup.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
- r = pUserConfirmPopup->Construct(userConfirmMode, pPolicy, true);
+ r = pPromptPopup->Construct(msg, defVal, __pWebCore->GetWebNativeNode(), this);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
- __pUserConfirmPopup = std::move(pUserConfirmPopup);
-
- int modalResult = 0;
+ __pPromptPopup = std::move(pPromptPopup);
- __pUserConfirmPopup->SetOwner(&GetPublic());
-
- r = __pUserConfirmPopup->ShowAndWait(modalResult);
+ r = __pPromptPopup->ShowPopup();
SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
+
+ return E_SUCCESS;
+
CATCH:
- __pUserConfirmPopup.reset();
+ __pPromptPopup.reset();
return r;
+
}
+
result
-_WebImpl::ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPolicy)
+_WebImpl::ShowUserConfirmPopup(_UserConfirmMode userConfirmMode, void* pPolicy, String msg)
{
result r = E_SUCCESS;
std::unique_ptr<_UserConfirmPopup> pUserConfirmPopup(new (std::nothrow) _UserConfirmPopup());
SysTryReturnResult(NID_WEB_CTRL, pUserConfirmPopup.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
- r = pUserConfirmPopup->Construct(userConfirmMode, pPolicy, false);
+ r = pUserConfirmPopup->Construct(userConfirmMode, pPolicy, this, true, msg);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
- __pUserConfirmPopup = std::move(pUserConfirmPopup);
+ int modalResult = 0;
+
+ switch(userConfirmMode)
+ {
+ case USER_CONTENT_HANDLER:
+ {
+ __pContentHandlerConfirmPopup = std::move(pUserConfirmPopup);
- __pUserConfirmPopup->SetOwner(&GetPublic());
+ r = __pContentHandlerConfirmPopup->ShowAndWait(modalResult);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pContentHandlerConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
- r = __pUserConfirmPopup->ShowPopup();
- SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+ __pContentHandlerConfirmPopup.reset();
- __pUserConfirmPopup.release();
+ ewk_view_resume(__pWebCore->GetWebNativeNode());
- return E_SUCCESS;
+ break;
+ }
+ case USER_PROTOCOL_HANDLER:
+ {
+ __pProtocolHandlerConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pProtocolHandlerConfirmPopup->ShowAndWait(modalResult);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pProtocolHandlerConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pProtocolHandlerConfirmPopup.reset();
+
+ ewk_view_resume(__pWebCore->GetWebNativeNode());
+
+ break;
+ }
+ case USER_CONFIRM_APP_CACHE:
+ {
+ __pAppCacheConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pAppCacheConfirmPopup->ShowAndWait(modalResult);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pAppCacheConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pAppCacheConfirmPopup.reset();
+
+ ewk_view_resume(__pWebCore->GetWebNativeNode());
+
+ break;
+ }
+ case USER_CONFIRM_DB_QUOTA_EXCEDED:
+ {
+ __pDbQuotaConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pDbQuotaConfirmPopup->ShowAndWait(modalResult);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pDbQuotaConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pDbQuotaConfirmPopup.reset();
+
+ ewk_view_resume(__pWebCore->GetWebNativeNode());
+
+ break;
+ }
+ case USER_CONFIRM_LOCAL_FS_QUOTA_EXCEDED:
+ {
+ __pLocalFsQuotaConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pLocalFsQuotaConfirmPopup->ShowAndWait(modalResult);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pLocalFsQuotaConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pLocalFsQuotaConfirmPopup.reset();
+
+ ewk_view_resume(__pWebCore->GetWebNativeNode());
+
+ break;
+ }
+ case USER_CONFIRM_INDEXED_DB_QUOTA_EXCEDED:
+ {
+ __pIndexedDbQuotaConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pIndexedDbQuotaConfirmPopup->ShowAndWait(modalResult);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pIndexedDbQuotaConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pIndexedDbQuotaConfirmPopup.reset();
+
+ ewk_view_resume(__pWebCore->GetWebNativeNode());
+ break;
+ }
+ case USER_SCRIPT_CONFIRM:
+ {
+ __pScriptConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pScriptConfirmPopup->ShowAndWait(modalResult);
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pScriptConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pScriptConfirmPopup.reset();
+
+ ewk_view_resume(__pWebCore->GetWebNativeNode());
+
+ break;
+ }
+ default:
+ break;
+ }
CATCH:
- __pUserConfirmPopup.reset();
+ return r;
+}
+
+
+result
+_WebImpl::ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPolicy, String msg)
+{
+ result r = E_SUCCESS;
+
+ std::unique_ptr<_UserConfirmPopup> pUserConfirmPopup(new (std::nothrow) _UserConfirmPopup());
+ SysTryReturnResult(NID_WEB_CTRL, pUserConfirmPopup.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+ r = pUserConfirmPopup->Construct(userConfirmMode, pPolicy, this, false, msg);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ switch(userConfirmMode)
+ {
+ case USER_CONFIRM_USERMEDIA:
+ {
+ __pUserMediaConfirmPopup.reset();
+
+ __pUserMediaConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pUserMediaConfirmPopup->ShowPopup();
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pUserMediaConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pUserMediaConfirmPopup.release();
+ break;
+ }
+ case USER_CONFIRM_GEOLOCATION:
+ {
+ __pGeolocationConfirmPopup.reset();
+ __pGeolocationConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pGeolocationConfirmPopup->ShowPopup();
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pGeolocationConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pGeolocationConfirmPopup.release();
+ break;
+ }
+ case USER_CONFIRM_NOTIFICATION:
+ {
+ __pNotificationConfirmPopup.reset();
+
+ __pNotificationConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pNotificationConfirmPopup->ShowPopup();
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pNotificationConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pNotificationConfirmPopup.release();
+ break;
+ }
+ case USER_SCRIPT_ALERT:
+ {
+ __pScriptAlertConfirmPopup.reset();
+
+ __pScriptAlertConfirmPopup = std::move(pUserConfirmPopup);
+
+ r = __pScriptAlertConfirmPopup->ShowPopup();
+ SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pScriptAlertConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pScriptAlertConfirmPopup.release();
+ break;
+ }
+ default:
+ break;
+ }
+
+ return E_SUCCESS;
+
+CATCH:
return r;
}
-_Form*
-_WebImpl::GetParentFormCore(_Control* pControlCore)
+_FormImpl*
+_WebImpl::GetParentFormImpl(_ControlImpl* pControlImpl)
{
String parentName;
- _Form* pFormCore = null;
+ _FormImpl* pFormImpl = null;
- _Control* pParentControlCore = dynamic_cast< _Control* >(pControlCore->GetParent());
- if (!pParentControlCore)
+ _ControlImpl* pParentControlImpl = dynamic_cast< _ControlImpl* >(pControlImpl->GetParent());
+ if (!pParentControlImpl)
{
return null;
}
- pFormCore = dynamic_cast< _Form* >(pParentControlCore);
- if (pFormCore)
+ pFormImpl = dynamic_cast< _FormImpl* >(pParentControlImpl);
+ if (pFormImpl)
{
- return pFormCore;
+ return pFormImpl;
}
- return GetParentFormCore(pParentControlCore);
+ return GetParentFormImpl(pParentControlImpl);
}
bool
_WebImpl::OnFocusGained(const _ControlImpl& source)
{
- return true;
+ Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
+ SysAssertf(pSettings, "Failed to get webkit instance.");
+ ewk_settings_clear_text_selection_automatically_set(pSettings, true);
+
+ evas_object_focus_set(__pWebCore->GetWebNativeNode(), EINA_TRUE);
+
+ return false;
}
SetKeypadVisibleState(false);
}
+ Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
+ SysAssertf(pSettings, "Failed to get webkit instance.");
+ ewk_settings_clear_text_selection_automatically_set(pSettings, false);
+
evas_object_focus_set(__pWebCore->GetWebNativeNode(), EINA_FALSE);
- return true;
+ return false;
}
{
result r = E_SUCCESS;
+ if (IsVisible() == true)
+ {
+ _WebManager* pWebManager = _WebManager::GetInstance();
+ pWebManager->SetActiveWeb(this);
+ }
+
r = __pWebCore->InitializeWebNativeNode();
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ _ControlManager* pControlManager = _ControlManager::GetInstance();
+ SysTryReturnResult(NID_WEB_CTRL, pControlManager, E_SYSTEM, "Failed to get the ControlManager instance.");
+ OnChangeLayout(pControlManager->GetScreenRotation());
+
r = InitializeSetting();
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
r = _ContainerImpl::OnPreAttachedToMainTree();
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ _WebManager* pWebManager = _WebManager::GetInstance();
+ pWebManager->AddWeb(reinterpret_cast< int >(this));
+
+ return E_SUCCESS;
+}
+
+
+result
+_WebImpl::OnDetachingFromMainTree(void)
+{
+ _WebManager* pWebManager = _WebManager::GetInstance();
+ pWebManager->RemoveWeb(reinterpret_cast< int >(this));
+ pWebManager->RemoveActiveWeb(this);
+
+ _DownloadManagerImpl* pManagerImpl = _DownloadManagerImpl::GetInstance();
+ pManagerImpl->SetDownloadListener(null);
+
+ RemoveEventListenerCallback();
+
return E_SUCCESS;
}
void
+_WebImpl::OnChangeLayout(_ControlRotation rotation)
+{
+ int degree = 0;
+
+ switch (rotation)
+ {
+ case _CONTROL_ROTATION_0:
+ degree = 0;
+ break;
+ case _CONTROL_ROTATION_90:
+ degree = 90;
+ break;
+ case _CONTROL_ROTATION_180:
+ degree = 180;
+ break;
+ case _CONTROL_ROTATION_270:
+ degree = -90;
+ break;
+ default:
+ SysAssert(false);
+ }
+ ewk_view_orientation_send(__pWebCore->GetWebNativeNode(), degree);
+}
+
+
+void
_WebImpl::OnChangeLayout(_ControlOrientation orientation)
{
_ContainerImpl::OnChangeLayout(orientation);
{
__pColorPicker->ChangeLayout(orientation);
}
+
+ HideFormDataWindow();
+
+ std::unique_ptr< IEnumerator > pEnum(__webNotificationList.GetEnumeratorN());
+ _WebNotification* pWebNotification = null;
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pWebNotification = static_cast< _WebNotification* >(pEnum->GetCurrent());
+ pWebNotification->OnChangeLayout();
+ }
}
void
_WebImpl::OnAncestorVisibleStateChanged(const _Control& control)
{
+ _WebManager* pWebManager = _WebManager::GetInstance();
if (IsVisible() == true)
{
+ pWebManager->SetActiveWeb(this);
ewk_view_page_visibility_state_set(__pWebCore->GetWebNativeNode(), EWK_PAGE_VISIBILITY_STATE_VISIBLE, false);
}
else
{
+ pWebManager->RemoveActiveWeb(this);
ewk_view_page_visibility_state_set(__pWebCore->GetWebNativeNode(), EWK_PAGE_VISIBILITY_STATE_HIDDEN, false);
}
}
+void
+_WebImpl::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
+{
+ _ContainerImpl::OnUserEventReceivedN(requestId, pArgs);
+
+ switch (requestId)
+ {
+ case ID_CERTIFICATE_CONFIRM_POPUP_CLOSE:
+ __pCertConfirmPopup.reset();
+ break;
+ case ID_PROMPT_POPUP_CLOSE:
+ __pPromptPopup.reset();
+ break;
+ case ID_USER_CONFIRM_USERMEDIA_CLOSE:
+ __pUserMediaConfirmPopup.reset();
+ break;
+ case ID_USER_CONFIRM_GEOLOCATION_CLOSE:
+ __pGeolocationConfirmPopup.reset();
+ break;
+ case ID_USER_CONFIRM_NOTIFICATION_CLOSE:
+ __pNotificationConfirmPopup.reset();
+ break;
+ case ID_USER_SCRIPT_ALERT_CLOSE:
+ __pScriptAlertConfirmPopup.reset();
+ break;
+ case ID_USER_SCRIPT_CONFIRM_CLOSE:
+ __pScriptConfirmPopup.reset();
+ break;
+ default:
+ break;
+ }
+}
+
+
_WebDataHandler*
_WebImpl::GetDownloadHandler(void) const
{
r = __pColorPicker->ShowPopup();
SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
- color = __pColorPicker->GetColor();
-
- return E_SUCCESS;
+ if (__pColorPicker)
+ {
+ color = __pColorPicker->GetColor();
+ }
CATCH:
- __pColorPicker.reset();
+ if (__pColorPicker)
+ {
+ __pColorPicker.reset();
+ }
return r;
}
r = __pDatePicker->ShowPopup();
SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
- dateStr = __pDatePicker->GetDate();
+ if (__pDatePicker)
+ {
+ dateStr = __pDatePicker->GetDate();
+ }
CATCH:
- __pDatePicker.reset();
+ if (__pDatePicker)
+ {
+ __pDatePicker.reset();
+ }
return r;
}
String uri(ewk_custom_handlers_data_url_get(pHandlerData));
String target(ewk_custom_handlers_data_target_get(pHandlerData));
- SysLog(NID_WEB_CTRL, "BaseUrl : %s, Url : %s, mime : %s", baseUri.GetPointer(), uri.GetPointer(), target.GetPointer());
+ SysSecureLog(NID_WEB_CTRL, "BaseUrl : %s, Url : %s, mime : %s", baseUri.GetPointer(), uri.GetPointer(), target.GetPointer());
result r = db.Construct(handlerPath, "r+", null);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, -1, r, "[%s] Propagating.", GetErrorMessage(r));
String uri(ewk_custom_handlers_data_url_get(pHandlerData));
String target(ewk_custom_handlers_data_target_get(pHandlerData));
- SysLog(NID_WEB_CTRL, "BaseUrl : %s, Url : %s, mime : %s", baseUri.GetPointer(), uri.GetPointer(), target.GetPointer());
+ SysSecureLog(NID_WEB_CTRL, "BaseUrl : %s, Url : %s, mime : %s", baseUri.GetPointer(), uri.GetPointer(), target.GetPointer());
result r = db.Construct(handlerPath, "r+", null);
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
}
+void
+_WebImpl::SetFormDataList(Eina_List* pFormDataList)
+{
+ __pFormDataList = pFormDataList;
+}
+
+
+bool
+_WebImpl::IsFormDataWindowVisible(void) const
+{
+ return __isFormDataVisible;
+}
+
+
+result
+_WebImpl::ShowFormDataWindow(const Rectangle& windowRect, Evas_Object* pWebView)
+{
+ Rectangle rect(_CoordinateSystemUtils::InverseTransform(Rectangle(windowRect.x, windowRect.y + windowRect.height, windowRect.width, windowRect.height)));
+
+ if (__isFormDataVisible)
+ {
+ result r = __pFormDataWindow->UpdateList(__pFormDataList, rect);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ }
+ else
+ {
+ __pFormDataWindow.reset();
+
+ std::unique_ptr<_FormDataWindow> pFormDataWindow( new (std::nothrow) _FormDataWindow());
+ SysTryReturnResult(NID_WEB_CTRL, pFormDataWindow.get(), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+ result r = pFormDataWindow->Construct(rect, this, pWebView);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ r = pFormDataWindow->UpdateList(__pFormDataList, rect);
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ r = pFormDataWindow->LaunchFormDataWindow();
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pFormDataWindow = std::move(pFormDataWindow);
+ __isFormDataVisible = true;
+ }
+
+ return E_SUCCESS;
+}
+
+
+void
+_WebImpl::HideFormDataWindow(bool delWindow)
+{
+ if (delWindow)
+ {
+ __pFormDataWindow.reset();
+ }
+
+ __isFormDataVisible = false;
+}
+
+
+void
+_WebImpl::ClearWebNotification(_WebNotification* pWebNotification)
+{
+ __webNotificationList.Remove(*pWebNotification);
+}
+
+
+void
+_WebImpl::SetWebNotification(_WebNotification* pWebNotification)
+{
+ __webNotificationList.Add(pWebNotification);
+}
+
+
+void
+_WebImpl::OnDownloadCompleted(RequestId reqId, const String &path)
+{
+ _ContentManagerImpl::ScanFile(path);
+}
+
+
}}} // Tizen::Web::Controls