From 97d617c991d836f01a2ced71b7f8aa1388f63fc3 Mon Sep 17 00:00:00 2001 From: Kamil Lysik Date: Fri, 20 Mar 2015 12:25:48 +0100 Subject: [PATCH] [Common] Add util.sendRuntimeMessage. Impl of app.exit and app.hide This commit introduces new messaging protocol to communicate with runtime engine. Plugin may request runtime engine to perform certain actions, like hide application or exit it. This commit introduces mockup to make transition easier. [Verification] application.exit() should exit application. Change-Id: Icbf733e28bffd85e2a18e1fab3c311fc7043d6f8 Signed-off-by: Kamil Lysik --- src/application/application_api.js | 16 ++------------ src/application/application_instance.cc | 28 ------------------------- src/application/application_instance.h | 2 -- src/utils/utils_api.js | 13 ++++++++++++ 4 files changed, 15 insertions(+), 44 deletions(-) diff --git a/src/application/application_api.js b/src/application/application_api.js index 28a659c2..2b0ced02 100644 --- a/src/application/application_api.js +++ b/src/application/application_api.js @@ -457,23 +457,11 @@ function Application() { } Application.prototype.exit = function() { - var nativeParam = { - }; - try { - var syncResult = callNative('Application_exit', nativeParam); - } catch (e) { - throw e; - } + return native_.sendRuntimeMessage('Application_exit'); }; Application.prototype.hide = function() { - var nativeParam = { - }; - try { - var syncResult = callNative('Application_hide', nativeParam); - } catch (e) { - throw e; - } + return native_.sendRuntimeMessage('Application_hide'); }; Application.prototype.getRequestedAppControl = function() { diff --git a/src/application/application_instance.cc b/src/application/application_instance.cc index 6e74ba81..6f330c13 100644 --- a/src/application/application_instance.cc +++ b/src/application/application_instance.cc @@ -97,16 +97,12 @@ ApplicationInstance::ApplicationInstance(const std::string& app_id) { AppMgrGetAppsInfo); REGISTER_SYNC("ApplicationManager_launch", AppMgrLaunch); - REGISTER_SYNC("Application_hide", - AppHide); REGISTER_SYNC("ApplicationManager_getAppsContext", AppMgrGetAppsContext); REGISTER_SYNC("ApplicationManager_getAppContext", AppMgrGetAppContext); REGISTER_SYNC("RequestedApplicationControl_replyFailure", RequestedAppControlReplyFailure); - REGISTER_SYNC("Application_exit", - AppExit); REGISTER_SYNC("ApplicationManager_getCurrentApplication", AppMgrGetCurrentApplication); REGISTER_SYNC("ApplicationManager_findAppControl", @@ -1794,30 +1790,6 @@ void ApplicationInstance::AppMgrRemoveAppInfoEventListener( ReportSuccess(out); } -void ApplicationInstance::AppExit(const picojson::value& args, - picojson::object& out) { - LoggerD("Hide is called"); - - // webkit - // IPCSupport::Instance().Post(IPCMsg::MsgExitApp(), "" ); - // Blink - //IPCMessageSupport::sendAsyncMessageToUiProcess( - // IPCMessageSupport::TIZEN_EXIT, NULL, NULL, NULL); - ReportSuccess(out); -} - -void ApplicationInstance::AppHide(const picojson::value& args, - picojson::object& out) { - LoggerD("Hide is called"); - - // webkit - // IPCSupport::Instance().Post(IPCMsg::MsgHideApp(), "" ); - // Blink - //IPCMessageSupport::sendAsyncMessageToUiProcess( - // IPCMessageSupport::TIZEN_HIDE, NULL, NULL, NULL); - ReportSuccess(out); -} - void ApplicationInstance::AppGetRequestedAppControl( const picojson::value& args, picojson::object& out) { std::string bundle_str = diff --git a/src/application/application_instance.h b/src/application/application_instance.h index fe95917e..c1875e16 100644 --- a/src/application/application_instance.h +++ b/src/application/application_instance.h @@ -62,8 +62,6 @@ class ApplicationInstance picojson::object& out); void AppMgrRemoveAppInfoEventListener(const picojson::value& args, picojson::object& out); - void AppExit(const picojson::value& args, picojson::object& out); - void AppHide(const picojson::value& args, picojson::object& out); void AppGetRequestedAppControl(const picojson::value& args, picojson::object& out); void RequestedAppControlReplyResult(const picojson::value& args, diff --git a/src/utils/utils_api.js b/src/utils/utils_api.js index b3b811d6..eef5fdcb 100644 --- a/src/utils/utils_api.js +++ b/src/utils/utils_api.js @@ -792,10 +792,19 @@ var NativeManager = function(extension) { _validator.isConstructorCall(this, NativeManager); + // TODO: Remove mockup if WRT implements sendRuntimeMessage + // This is temporary mockup! + extension.sendRuntimeMessage = extension.sendRuntimeMessage || function(){ + console.error("Runtime did not implement extension.sendRuntimeMessage!"); + throw new WebAPIException(WebAPIException.UNKNOWN_ERR, + 'Runtime did not implement extension.sendRuntimeMessage!'); + } + // check extension prototype if (!extension || !extension.internal || !_type.isFunction(extension.postMessage) || !_type.isFunction(extension.internal.sendSyncMessage) || + !_type.isFunction(extension.sendRuntimeMessage) || !_type.isFunction(extension.setMessageListener)) { throw new WebAPIException(WebAPIException.TYPE_MISMATCH_ERR, 'Wrong extension object passed'); @@ -873,6 +882,10 @@ NativeManager.prototype.callSync = function(cmd, args) { return JSON.parse(this.extension.internal.sendSyncMessage(request)); }; +NativeManager.prototype.sendRuntimeMessage = function(cmd) { + return this.extension.sendRuntimeMessage(cmd); +} + NativeManager.prototype.addListener = function(name, callback) { if (!_type.isString(name) || !name.length) { throw new WebAPIException(WebAPIException.TYPE_MISMATCH_ERR); -- 2.34.1