+++ /dev/null
-// 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 <sys/types.h>
-#include <unistd.h>
-#include <utility>
-
-#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);
-}
'../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',
+++ /dev/null
-// 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 <gio/gio.h>
-#include <memory>
-#include <string>
-
-#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_
// 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
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() {
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);
};
#include "websetting/websetting_extension.h"
-#include <string>
-
-#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);
}
WebSettingExtension::~WebSettingExtension() {}
common::Instance* WebSettingExtension::CreateInstance() {
- return new extension::websetting::WebSettingInstance(this);
+ return new common::ParsedInstance();
}
#ifndef WEBSETTING_WEBSETTING_EXTENSION_H_
#define WEBSETTING_WEBSETTING_EXTENSION_H_
-#include <memory>
-#include <string>
#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<WebSetting> current_app_;
};
#endif // WEBSETTING_WEBSETTING_EXTENSION_H_
+++ /dev/null
-// 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 <string>
-#include <memory>
-
-#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<double>();
- auto get = [=](const std::shared_ptr<JsonValue>& 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<picojson::object>());
- return;
- }
-
- std::string userAgent = args.get("userAgentStr").to_str();
- const auto& result = extension_->current_app()->SetUserAgentString(userAgent);
-
- if (result) {
- ReportSuccess(response->get<picojson::object>());
- } else {
- ReportError(result, &response->get<picojson::object>());
- }
- };
-
- auto get_response =
- [callback_id, this](const std::shared_ptr<JsonValue>& response) -> void {
- picojson::object& obj = response->get<picojson::object>();
- 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<JsonValue>(
- get, get_response,
- std::shared_ptr<JsonValue>(new JsonValue(JsonObject())));
-}
-
-void WebSettingInstance::WebSettingManagerRemoveAllCookies(
- const picojson::value& args, picojson::object& out) {
- LoggerD("Entered");
-
- const double callback_id = args.get("callbackId").get<double>();
- auto get = [=](const std::shared_ptr<JsonValue>& 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<picojson::object>());
- return;
- }
-
- const auto& result = extension_->current_app()->RemoveAllCookies();
- if (result) {
- ReportSuccess(response->get<picojson::object>());
- } else {
- ReportError(result, &response->get<picojson::object>());
- }
- };
-
- auto get_response =
- [callback_id, this](const std::shared_ptr<JsonValue>& response) -> void {
- picojson::object& obj = response->get<picojson::object>();
- 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<JsonValue>(
- get, get_response,
- std::shared_ptr<JsonValue>(new JsonValue(JsonObject())));
-}
-
-} // namespace websetting
-} // namespace extension
+++ /dev/null
-// 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_