tizen 2.3.1 release
[framework/web/mobile/wrt-plugins-tizen.git] / src / WebSetting / WebSettingManager.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 <PlatformException.h>
19 #include <Logger.h>
20 #include "WebSettingManager.h"
21 #include <glib.h>
22 #include <Ecore.h>
23 #include <JSUtil.h>
24 #include <JSWebAPIError.h>
25 #include <PlatformException.h>
26 #include <GlobalContextManager.h>
27 #include <plugins-ipc-message/ipc_message_support.h>
28
29 namespace DeviceAPI
30 {
31 namespace WebSetting
32 {
33
34 std::list<Common::MultiCallbackUserData *> WebSettingManager::mUserAgentCallbacks;
35 std::list<Common::MultiCallbackUserData *> WebSettingManager::mDeleteAllCookiesCallbacks;
36
37 WebSettingManager::WebSettingManager()
38 {
39     LoggerD("Constructor of WebSettingManager...");
40 }
41
42 WebSettingManager::~WebSettingManager()
43 {
44     LoggerD("Destructor of WebSettingManager...");
45 }
46
47 WebSettingManager* WebSettingManager::getInstance()
48 {
49     static WebSettingManager instance;
50     return &instance;
51 }
52
53 void WebSettingManager::onAsyncUAStringReplyCallback(unsigned int num, void* user_data, const char* result)
54 {
55     MultiCallbackUserData* multiPointer = static_cast<MultiCallbackUserData *>(user_data);
56     if (multiPointer != NULL)
57     {
58         CHECK_CURRENT_CONTEXT_ALIVE(multiPointer->getContext());
59         
60         unsigned int successStrLength = strlen("success");
61         if ((strncmp(result,"success", successStrLength) == 0) && (strlen(result) == successStrLength))
62         {
63             multiPointer->invokeCallback("onsuccess", NULL);
64         }
65         else
66         {
67             UnknownException error("Unknown");
68             JSObjectRef errorObj = JSWebAPIErrorFactory::makeErrorObject(multiPointer->getContext(), error);
69             multiPointer->invokeCallback("onerror", errorObj);
70         }
71         WebSettingManager::mUserAgentCallbacks.remove(multiPointer);
72         delete multiPointer;;
73     }
74     else
75     {
76         LoggerD("MultiCallbackUserData is NULL.");;
77     }
78 }
79
80 void WebSettingManager::onAsyncReplyRemoveAllCookiesCallback(unsigned int num, void* user_data, const char* result)
81 {
82     MultiCallbackUserData* multiPointer = static_cast<MultiCallbackUserData *>(user_data);
83     if (multiPointer != NULL)
84     {
85         CHECK_CURRENT_CONTEXT_ALIVE(multiPointer->getContext());
86         unsigned int successStrLength = strlen("success");
87         if ((strncmp(result,"success", successStrLength)== 0) && (strlen(result) == successStrLength))
88         {
89             multiPointer->invokeCallback("onsuccess", NULL);
90         }
91         else
92         {
93             UnknownException error("Unknown");
94             JSObjectRef errorObj = JSWebAPIErrorFactory::makeErrorObject(multiPointer->getContext(), error);
95             multiPointer->invokeCallback("onerror", errorObj);
96         }
97         WebSettingManager::mDeleteAllCookiesCallbacks.remove(multiPointer);
98         delete multiPointer;;
99     }
100     else
101     {
102         LoggerD("MultiCallbackUserData is NULL." );;
103     }
104 }
105
106 void WebSettingManager::setUserAgentString(std::string userAgent, MultiCallbackUserData* callbacks)
107 {
108     WebSettingManager::mUserAgentCallbacks.push_back(callbacks);
109     IPCMessageSupport::sendAsyncMessageToUiProcess(IPCMessageSupport::TIZEN_CHANGE_USERAGENT, userAgent.c_str(), WebSettingManager::onAsyncUAStringReplyCallback, callbacks);
110 }
111
112 void WebSettingManager::removeAllCookies(MultiCallbackUserData* callbacks)
113 {
114     WebSettingManager::mDeleteAllCookiesCallbacks.push_back(callbacks);
115     IPCMessageSupport::sendAsyncMessageToUiProcess(IPCMessageSupport::TIZEN_DELETE_ALL_COOKIES, NULL, WebSettingManager::onAsyncReplyRemoveAllCookiesCallback, callbacks);
116 }
117
118 }
119 }