Update change log and spec for wrt-plugins-tizen_0.4.51
[framework/web/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
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     SLoggerI("Constructor of WebSettingManager...");
40 }
41
42 WebSettingManager::~WebSettingManager()
43 {
44     SLoggerI("Desstructor of WebSettingManager...");
45 }
46
47 WebSettingManager* WebSettingManager::getInstance()
48 {
49     SLoggerI("Getting instance of WebSettingManager...");
50     static WebSettingManager instance;
51     return &instance;
52 }
53
54 void WebSettingManager::onAsyncUAStringReplyCallback(unsigned int num, void* user_data, const char* result)
55 {
56     MultiCallbackUserData* multiPointer = static_cast<MultiCallbackUserData *>(user_data);
57     if (multiPointer != NULL)
58     {
59         unsigned int successStrLength = strlen("success");
60         if ((strncmp(result,"success", successStrLength) == 0) && (strlen(result) == successStrLength))
61         {
62             multiPointer->invokeCallback("onsuccess", NULL);
63         }
64         else
65         {
66             UnknownException error("Unknown");
67             JSObjectRef errorObj = JSWebAPIErrorFactory::makeErrorObject(multiPointer->getContext(), error);
68             multiPointer->invokeCallback("onerror", errorObj);
69         }
70         WebSettingManager::mUserAgentCallbacks.remove(multiPointer);
71         delete multiPointer;;
72     }
73     else
74     {
75         SLoggerI("[WebSettingManager::onAsyncUAStringReplyCallback] Warning. MultiCallbackUserData is NULL." << __LINE__);;
76     }
77 }
78
79 void WebSettingManager::onAsyncReplyRemoveAllCookiesCallback(unsigned int num, void* user_data, const char* result)
80 {
81     MultiCallbackUserData* multiPointer = static_cast<MultiCallbackUserData *>(user_data);
82     if (multiPointer != NULL)
83     {
84         unsigned int successStrLength = strlen("success");
85         if ((strncmp(result,"success", successStrLength)== 0) && (strlen(result) == successStrLength))
86         {
87             multiPointer->invokeCallback("onsuccess", NULL);
88         }
89         else
90         {
91             UnknownException error("Unknown");
92             JSObjectRef errorObj = JSWebAPIErrorFactory::makeErrorObject(multiPointer->getContext(), error);
93             multiPointer->invokeCallback("onerror", errorObj);
94         }
95         WebSettingManager::mDeleteAllCookiesCallbacks.remove(multiPointer);
96         delete multiPointer;;
97     }
98     else
99     {
100         SLoggerI("[WebSettingManager::onAsyncReplyRemoveAllCookiesCallback] Warning. MultiCallbackUserData is NULL." << __LINE__);;
101     }
102 }
103
104 void WebSettingManager::setUserAgentString(std::string userAgent, MultiCallbackUserData* callbacks)
105 {
106     SLoggerI("WebSetting:setUserAgentString: " << userAgent);
107     WebSettingManager::mUserAgentCallbacks.push_back(callbacks);
108     IPCMessageSupport::sendAsyncMessageToUiProcess(IPCMessageSupport::TIZEN_CHANGE_USERAGENT, userAgent.c_str(), WebSettingManager::onAsyncUAStringReplyCallback, callbacks);
109 }
110
111 void WebSettingManager::removeAllCookies(MultiCallbackUserData* callbacks)
112 {
113     SLoggerI("WebSetting:removeAllCookies: ");
114     WebSettingManager::mDeleteAllCookiesCallbacks.push_back(callbacks);
115     IPCMessageSupport::sendAsyncMessageToUiProcess(IPCMessageSupport::TIZEN_DELETE_ALL_COOKIES, NULL, WebSettingManager::onAsyncReplyRemoveAllCookiesCallback, callbacks);
116 }
117
118 }
119 }