wrt-plugins-tizen_0.4.23
[framework/web/wrt-plugins-tizen.git] / src / Application / plugin_initializer.cpp
1 //
2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 #include <Commons/plugin_initializer_def.h>
19 #include <Commons/WrtAccess/WrtAccess.h>
20 #include <sys/types.h>
21 #include <unistd.h>
22 #include <TimeTracer.h>
23
24 #include "JSApplicationManager.h"
25 #include "JSApplicationControl.h"
26 #include "ApplicationAsyncCallbackManager.h"
27 #include "ApplicationListenerManager.h"
28 #include <Logger.h>
29
30 using namespace WrtDeviceApis;
31 using namespace WrtDeviceApis::Commons;
32
33 namespace DeviceAPI {
34 namespace Application {
35
36 class_definition_options_t ApplicationOptions =
37 {
38     JS_INTERFACE,
39     CREATE_INSTANCE,
40     NONE_NOTICE,
41     USE_OVERLAYED, //ignored
42     NULL,
43     NULL,
44     NULL
45 };
46
47 void on_widget_start_callback(int widgetId) {
48         LoggerD("[Tizen1_0\\Application] on_widget_start_callback ("<<widgetId<<")");
49     Try {
50                 TIME_TRACER_INIT();
51         WrtAccessSingleton::Instance().initialize(widgetId);
52     } Catch(WrtDeviceApis::Commons::Exception) {
53         LoggerE("WrtAccess initialization failed");
54     }   
55 }
56
57 void on_widget_stop_callback(int widgetId) {
58         LoggerD("[Tizen1_0\\Application] on_widget_stop_callback ("<<widgetId<<")");
59     Try {
60                 char buf[30];
61                 sprintf(buf,"Application.%d",getpid());
62                 TIME_TRACER_EXPORT_REPORT_TO(TIME_TRACER_EXPORT_FILE,buf);
63                 TIME_TRACER_RELEASE();
64        WrtAccessSingleton::Instance().deinitialize(widgetId);
65     } Catch(WrtDeviceApis::Commons::Exception) {
66         LoggerE("WrtAccess deinitialization failed");
67     }   
68 }
69
70 void on_frame_load_callback(const void * context)
71 {
72     LoggerD("[Tizen\\application] on_frame_load_callback (" << context << ")");
73 }
74
75 void on_frame_unload_callback(const void * context)
76 {
77     LoggerD("[Tizen\\application] on_frame_unload_callback (" << context << ")");
78
79     DeviceAPI::Application::ApplicationAsyncCallbackManagerSingleton::Instance().unregisterContext(static_cast<JSContextRef>(context));
80     DeviceAPI::Application::ApplicationListenerManagerSingleton::Instance().unregisterContext(static_cast<JSContextRef>(context));
81 }
82
83 PLUGIN_ON_WIDGET_START(on_widget_start_callback)
84 PLUGIN_ON_WIDGET_STOP(on_widget_stop_callback)
85 PLUGIN_ON_FRAME_LOAD(on_frame_load_callback)
86 PLUGIN_ON_FRAME_UNLOAD(on_frame_unload_callback)
87
88 PLUGIN_CLASS_MAP_BEGIN
89         PLUGIN_CLASS_MAP_ADD_CLASS(
90                 WRT_JS_EXTENSION_OBJECT_TIZEN,
91                 "application",
92                 (js_class_template_getter)DeviceAPI::Application::JSApplicationManager::getClassRef,
93                 NULL)
94
95         PLUGIN_CLASS_MAP_ADD_INTERFACE(
96                 WRT_JS_EXTENSION_OBJECT_TIZEN,
97                 TIZEN_INTERFACE_APPLICATION_CONTROL,
98                 (js_class_template_getter)DeviceAPI::Application::JSApplicationControl::getClassRef,
99                 reinterpret_cast<js_class_constructor_cb_t>(JSApplicationControl::constructor),
100                 &ApplicationOptions)
101
102         PLUGIN_CLASS_MAP_ADD_INTERFACE(
103                 WRT_JS_EXTENSION_OBJECT_TIZEN,
104                 TIZEN_INTERFACE_APPLICATION_CONTROL_DATA,
105                 (js_class_template_getter)DeviceAPI::Application::JSApplicationControlData::getClassRef,
106                 reinterpret_cast<js_class_constructor_cb_t>(JSApplicationControlData::constructor),
107                 &ApplicationOptions)
108
109 PLUGIN_CLASS_MAP_END
110
111 } //Application
112 } //DeviceAPI
113