From 05e77f7d69f7149c591e701c7a93c56a73d2fbaf Mon Sep 17 00:00:00 2001 From: Pawel Andruszkiewicz Date: Wed, 29 Apr 2015 09:58:32 +0200 Subject: [PATCH] [WebSetting] Implementation changed to use sendRuntimeAsyncMessage(). Change-Id: I39b96c68c374c07192f45087cc51f32fad1f340b --- src/websetting/websetting.cc | 105 --------------------- src/websetting/websetting.gyp | 4 - src/websetting/websetting.h | 29 ------ src/websetting/websetting_api.js | 22 ++--- src/websetting/websetting_extension.cc | 24 +---- src/websetting/websetting_extension.h | 7 -- src/websetting/websetting_instance.cc | 124 ------------------------- src/websetting/websetting_instance.h | 34 ------- 8 files changed, 9 insertions(+), 340 deletions(-) delete mode 100644 src/websetting/websetting.cc delete mode 100644 src/websetting/websetting.h delete mode 100644 src/websetting/websetting_instance.cc delete mode 100644 src/websetting/websetting_instance.h diff --git a/src/websetting/websetting.cc b/src/websetting/websetting.cc deleted file mode 100644 index 71cfd334..00000000 --- a/src/websetting/websetting.cc +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) 2014 Samsung Electronics Co., Ltd. All Rights Reserved -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "websetting/websetting.h" - -#include -#include -#include - -#include "common/logger.h" -#include "common/platform_result.h" - -using common::ErrorCode; -using common::PlatformResult; - -namespace { - -const char kRuntimeServiceName[] = "org.crosswalkproject.Runtime1"; -const char kRuntimeRunningManagerPath[] = "/running1"; -const char kRuntimeRunningAppInterface[] = - "org.crosswalkproject.Running.Application1"; - -// The runtime process exports object for each running app on the session bus. -GDBusProxy* CreateRunningAppProxy(const std::string& app_id) { - LoggerD("Entered"); - - GError* error = nullptr; - GDBusConnection* connection = - g_bus_get_sync(G_BUS_TYPE_SESSION, nullptr, &error); - if (!connection) { - LoggerE("Couldn't get the session bus connection: %s", error->message); - g_error_free(error); - return nullptr; - } - - std::string path = std::string(kRuntimeRunningManagerPath) + "/" + app_id; - // Every application id contains '.' character and since object path - // is created from application id it also contains '.' character. - // The d-bus proxy doesn't accept '.' character in object path - // And that is why the substantiation is needed here. - std::replace(path.begin(), path.end(), '.', '_'); - GDBusProxy* proxy = g_dbus_proxy_new_sync( - connection, G_DBUS_PROXY_FLAGS_NONE, nullptr, kRuntimeServiceName, - path.c_str(), kRuntimeRunningAppInterface, nullptr, &error); - if (!proxy) { - LoggerE("Couldn't create proxy for %s: %s", kRuntimeRunningAppInterface, - error->message); - g_error_free(error); - return nullptr; - } - - return proxy; -} - -} // namespace - -WebSetting::WebSetting(const std::string& app_id) - : app_id_(app_id), running_app_proxy_(nullptr) {} - -WebSetting::~WebSetting() { - if (running_app_proxy_) g_object_unref(running_app_proxy_); -} - -common::PlatformResult WebSetting::RemoveAllCookies() { - LoggerD("Entered"); - if (!running_app_proxy_) { - if (!(running_app_proxy_ = CreateRunningAppProxy(app_id_))) { - LoggerE("Failed to create proxy"); - return PlatformResult(ErrorCode::UNKNOWN_ERR, "Unable to remove cookies."); - } - } - GError* error = nullptr; - GVariant* result = - g_dbus_proxy_call_sync(running_app_proxy_, "RemoveAllCookies", nullptr, - G_DBUS_CALL_FLAGS_NONE, -1, nullptr, &error); - if (!result) { - LoggerE("Failed to call 'RemoveuserAgentAllCookies': %s", error->message); - g_error_free(error); - return PlatformResult(ErrorCode::UNKNOWN_ERR, "Unable to remove cookies."); - } - return PlatformResult(ErrorCode::NO_ERROR); -} - -common::PlatformResult WebSetting::SetUserAgentString( - const std::string& user_agent) { - LoggerD("Entered"); - if (!running_app_proxy_) { - if (!(running_app_proxy_ = CreateRunningAppProxy(app_id_))) { - LoggerE("Failed to create proxy"); - return PlatformResult(ErrorCode::UNKNOWN_ERR, "Unable to set user agent."); - } - } - GError* error = nullptr; - GVariant* result = - g_dbus_proxy_call_sync(running_app_proxy_, "SetUserAgentString", - g_variant_new("(s)", user_agent.c_str()), - G_DBUS_CALL_FLAGS_NONE, -1, nullptr, &error); - if (!result) { - LoggerE("Fail to call 'SetUserAgentString': %s", error->message); - g_error_free(error); - return PlatformResult(ErrorCode::UNKNOWN_ERR, "Unable to set user agent."); - } - return PlatformResult(ErrorCode::NO_ERROR); -} diff --git a/src/websetting/websetting.gyp b/src/websetting/websetting.gyp index 5b35fcc5..f65be42d 100644 --- a/src/websetting/websetting.gyp +++ b/src/websetting/websetting.gyp @@ -10,13 +10,9 @@ '../common/common.gyp:tizen_common', ], 'sources': [ - 'websetting.cc', - 'websetting.h', 'websetting_api.js', 'websetting_extension.cc', 'websetting_extension.h', - 'websetting_instance.cc', - 'websetting_instance.h', ], 'includes': [ '../common/pkg-config.gypi', diff --git a/src/websetting/websetting.h b/src/websetting/websetting.h deleted file mode 100644 index 73b0b1e5..00000000 --- a/src/websetting/websetting.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2014 Samsung Electronics Co., Ltd. All Rights Reserved -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBSETTING_WEBSETTING_H_ -#define WEBSETTING_WEBSETTING_H_ - -#include -#include -#include - -#include "common/platform_result.h" - -class WebSetting { - public: - explicit WebSetting(const std::string& app_id); - ~WebSetting(); - - std::string app_id() const { return app_id_; } - - common::PlatformResult RemoveAllCookies(); - common::PlatformResult SetUserAgentString(const std::string& user_agent); - - private: - std::string app_id_; - GDBusProxy* running_app_proxy_; -}; - -#endif // websetting_websetting_H_ diff --git a/src/websetting/websetting_api.js b/src/websetting/websetting_api.js index ebaf5667..d82102a8 100644 --- a/src/websetting/websetting_api.js +++ b/src/websetting/websetting_api.js @@ -3,14 +3,12 @@ // found in the LICENSE file. var validator_ = xwalk.utils.validator; -var type_ = xwalk.utils.type; var native_ = new xwalk.utils.NativeManager(extension); -var converter_ = xwalk.utils.converter; exports.setUserAgentString = function() { var args = validator_.validateArgs(arguments, [ { - name: 'uri', + name: 'userAgent', type: validator_.Types.STRING, optional: false, nullable: false @@ -31,16 +29,13 @@ exports.setUserAgentString = function() { var callback = function(result) { if (native_.isFailure(result)) { - native_.callIfPossible(args.errorCallback, - native_.getErrorObject(result)); + native_.callIfPossible(args.errorCallback, native_.getErrorObject(result)); } else { - var exifInfo = native_.getResultObject(result); - args.successCallback(exifInfo); + args.successCallback(); } }; - native_.call('WebSettingManager_setUserAgentString', {'userAgent': args.userAgent}, - callback); + native_.sendRuntimeAsyncMessage('tizen://changeUA', args.userAgent, callback); }; exports.removeAllCookies = function() { @@ -61,14 +56,11 @@ exports.removeAllCookies = function() { var callback = function(result) { if (native_.isFailure(result)) { - native_.callIfPossible(args.errorCallback, - native_.getErrorObject(result)); + native_.callIfPossible(args.errorCallback, native_.getErrorObject(result)); } else { - var exifInfo = native_.getResultObject(result); - args.successCallback(exifInfo); + args.successCallback(); } }; - native_.call('WebSettingManager_removeAllCookies', {}, - callback); + native_.sendRuntimeAsyncMessage('tizen://deleteAllCookies', '', callback); }; diff --git a/src/websetting/websetting_extension.cc b/src/websetting/websetting_extension.cc index 4f2ee0a4..ca16fe5c 100644 --- a/src/websetting/websetting_extension.cc +++ b/src/websetting/websetting_extension.cc @@ -4,33 +4,13 @@ #include "websetting/websetting_extension.h" -#include - -#include "websetting/websetting.h" -#include "websetting/websetting_instance.h" - -#include "common/logger.h" - extern const char kSource_websetting_api[]; common::Extension* CreateExtension() { - WebSettingExtension* e = new WebSettingExtension(); - - if (e->current_app()->app_id().empty()) { - LoggerE("Got invalid application ID."); - delete e; - return nullptr; - } - - return e; + return new WebSettingExtension(); } WebSettingExtension::WebSettingExtension() { - std::string app_id = GetRuntimeVariable("app_id", 64); - - LoggerD("app_id: %s", app_id.c_str()); - - current_app_.reset(new WebSetting(app_id)); SetExtensionName("tizen.websetting"); SetJavaScriptAPI(kSource_websetting_api); } @@ -38,5 +18,5 @@ WebSettingExtension::WebSettingExtension() { WebSettingExtension::~WebSettingExtension() {} common::Instance* WebSettingExtension::CreateInstance() { - return new extension::websetting::WebSettingInstance(this); + return new common::ParsedInstance(); } diff --git a/src/websetting/websetting_extension.h b/src/websetting/websetting_extension.h index 96c28e64..ab5628d1 100644 --- a/src/websetting/websetting_extension.h +++ b/src/websetting/websetting_extension.h @@ -5,22 +5,15 @@ #ifndef WEBSETTING_WEBSETTING_EXTENSION_H_ #define WEBSETTING_WEBSETTING_EXTENSION_H_ -#include -#include #include "common/extension.h" -#include "websetting/websetting.h" class WebSettingExtension : public common::Extension { public: WebSettingExtension(); virtual ~WebSettingExtension(); - WebSetting* current_app() { return current_app_.get(); } - private: virtual common::Instance* CreateInstance(); - - std::unique_ptr current_app_; }; #endif // WEBSETTING_WEBSETTING_EXTENSION_H_ diff --git a/src/websetting/websetting_instance.cc b/src/websetting/websetting_instance.cc deleted file mode 100644 index 753d7081..00000000 --- a/src/websetting/websetting_instance.cc +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2015 Samsung Electronics Co, Ltd. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "websetting/websetting_instance.h" - -#include -#include - -#include "common/logger.h" -#include "common/picojson.h" -#include "common/task-queue.h" -#include "common/scope_exit.h" - -namespace { -const char kWrtServiceName[] = "wrt-service"; -} // namespace - -namespace extension { -namespace websetting { - -using namespace common; - -typedef picojson::value JsonValue; -typedef picojson::object JsonObject; -typedef picojson::array JsonArray; -typedef std::string JsonString; - -WebSettingInstance::WebSettingInstance(WebSettingExtension* extension) - : extension_(extension) { - using std::placeholders::_1; - using std::placeholders::_2; - - #define REGISTER_ASYNC(c, x) \ - RegisterSyncHandler(c, std::bind(&WebSettingInstance::x, this, _1, _2)); - - REGISTER_ASYNC("WebSettingManager_setUserAgentString", - WebSettingManagerSetUserAgentString); - REGISTER_ASYNC("WebSettingManager_removeAllCookies", - WebSettingManagerRemoveAllCookies); - - #undef REGISTER_ASYNC -} - -WebSettingInstance::~WebSettingInstance() {} - -void WebSettingInstance::WebSettingManagerSetUserAgentString( - const picojson::value& args, picojson::object& out) { - LoggerD("Entered"); - - const double callback_id = args.get("callbackId").get(); - auto get = [=](const std::shared_ptr& response) -> void { - const char* runtime_name = - common::GetCurrentExtension()->GetRuntimeVariable("runtime_name", 64).c_str(); - LoggerD("runtime_name: %s", runtime_name); - if (strcmp(runtime_name, kWrtServiceName) == 0) { - ReportError( - PlatformResult(ErrorCode::NOT_SUPPORTED_ERR, "Not Implemented"), - &response->get()); - return; - } - - std::string userAgent = args.get("userAgentStr").to_str(); - const auto& result = extension_->current_app()->SetUserAgentString(userAgent); - - if (result) { - ReportSuccess(response->get()); - } else { - ReportError(result, &response->get()); - } - }; - - auto get_response = - [callback_id, this](const std::shared_ptr& response) -> void { - picojson::object& obj = response->get(); - obj.insert(std::make_pair("callbackId", picojson::value(callback_id))); - LoggerD("callback is %s", response->serialize().c_str()); - PostMessage(response->serialize().c_str()); - }; - - common::TaskQueue::GetInstance().Queue( - get, get_response, - std::shared_ptr(new JsonValue(JsonObject()))); -} - -void WebSettingInstance::WebSettingManagerRemoveAllCookies( - const picojson::value& args, picojson::object& out) { - LoggerD("Entered"); - - const double callback_id = args.get("callbackId").get(); - auto get = [=](const std::shared_ptr& response) -> void { - const char* runtime_name = - common::GetCurrentExtension()->GetRuntimeVariable("runtime_name", 64).c_str(); - LoggerD("runtime_name: %s", runtime_name); - if (strcmp(runtime_name, kWrtServiceName) == 0) { - ReportError( - PlatformResult(ErrorCode::NOT_SUPPORTED_ERR, "Not Implemented"), - &response->get()); - return; - } - - const auto& result = extension_->current_app()->RemoveAllCookies(); - if (result) { - ReportSuccess(response->get()); - } else { - ReportError(result, &response->get()); - } - }; - - auto get_response = - [callback_id, this](const std::shared_ptr& response) -> void { - picojson::object& obj = response->get(); - obj.insert(std::make_pair("callbackId", picojson::value(callback_id))); - LoggerD("callback is %s", response->serialize().c_str()); - PostMessage(response->serialize().c_str()); - }; - - common::TaskQueue::GetInstance().Queue( - get, get_response, - std::shared_ptr(new JsonValue(JsonObject()))); -} - -} // namespace websetting -} // namespace extension diff --git a/src/websetting/websetting_instance.h b/src/websetting/websetting_instance.h deleted file mode 100644 index 86f39f99..00000000 --- a/src/websetting/websetting_instance.h +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015 Samsung Electronics Co, Ltd. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBSETTING_WEBSETTING_INSTANCE_H_ -#define WEBSETTING_WEBSETTING_INSTANCE_H_ - -#include "common/extension.h" -#include "common/picojson.h" -#include "tizen/tizen.h" - -#include "websetting/websetting_extension.h" - -namespace extension { -namespace websetting { - -class WebSettingInstance : public common::ParsedInstance { - public: - explicit WebSettingInstance(WebSettingExtension* extension); - virtual ~WebSettingInstance(); - - private: - void WebSettingManagerSetUserAgentString(const picojson::value& args, - picojson::object& out); - void WebSettingManagerRemoveAllCookies(const picojson::value& args, - picojson::object& out); - - WebSettingExtension* extension_; -}; - -} // namespace websetting -} // namespace extension - -#endif // WEBSETTING_WEBSETTING_INSTANCE_H_ -- 2.34.1