Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / browser / application_tizen.cc
index 5c14fe6..b62f94f 100644 (file)
 #include "xwalk/runtime/common/xwalk_common_messages.h"
 
 #if defined(USE_OZONE)
-#include "base/message_loop/message_pump_ozone.h"
 #include "content/public/browser/render_view_host.h"
 #include "ui/events/event.h"
 #include "ui/events/event_constants.h"
 #include "ui/events/keycodes/keyboard_codes_posix.h"
+#include "ui/events/platform/platform_event_source.h"
 #include "xwalk/application/common/manifest_handlers/tizen_setting_handler.h"
 #endif
 
 #include "xwalk/application/common/application_manifest_constants.h"
+#include "xwalk/application/common/manifest_handlers/csp_handler.h"
 #include "xwalk/application/common/manifest_handlers/navigation_handler.h"
 
 namespace xwalk {
@@ -34,6 +35,34 @@ namespace application {
 
 namespace {
 const char kAsterisk[] = "*";
+
+const char kDirectiveValueSelf[] = "'self'";
+const char kDirectiveValueNone[] = "'none'";
+
+const char kDirectiveNameDefault[] = "default-src";
+const char kDirectiveNameScript[] = "script-src";
+const char kDirectiveNameStyle[] = "style-src";
+const char kDirectiveNameObject[] = "object-src";
+
+CSPInfo* GetDefaultCSPInfo() {
+  static CSPInfo default_csp_info;
+  if (default_csp_info.GetDirectives().empty()) {
+    std::vector<std::string> directive_all;
+    std::vector<std::string> directive_self;
+    std::vector<std::string> directive_none;
+    directive_all.push_back(kAsterisk);
+    directive_self.push_back(kDirectiveValueSelf);
+    directive_none.push_back(kDirectiveValueNone);
+
+    default_csp_info.SetDirective(kDirectiveNameDefault, directive_all);
+    default_csp_info.SetDirective(kDirectiveNameScript, directive_self);
+    default_csp_info.SetDirective(kDirectiveNameStyle, directive_self);
+    default_csp_info.SetDirective(kDirectiveNameObject, directive_none);
+  }
+
+  return (new CSPInfo(default_csp_info));
+}
+
 }  // namespace
 
 
@@ -43,13 +72,13 @@ ApplicationTizen::ApplicationTizen(
     Application::Observer* observer)
     : Application(data, runtime_context, observer) {
 #if defined(USE_OZONE)
-  base::MessagePumpOzone::Current()->AddObserver(this);
+  ui::PlatformEventSource::GetInstance()->AddPlatformEventObserver(this);
 #endif
 }
 
 ApplicationTizen::~ApplicationTizen() {
 #if defined(USE_OZONE)
-  base::MessagePumpOzone::Current()->RemoveObserver(this);
+  ui::PlatformEventSource::GetInstance()->RemovePlatformEventObserver(this);
 #endif
 }
 
@@ -73,6 +102,11 @@ void ApplicationTizen::InitSecurityPolicy() {
   if (data_->GetPackageType() != Package::WGT)
     return;
 
+  CSPInfo* csp_info =
+      static_cast<CSPInfo*>(data_->GetManifestData(widget_keys::kCSPKey));
+  if (!csp_info || csp_info->GetDirectives().empty())
+    data_->SetManifestData(widget_keys::kCSPKey, GetDefaultCSPInfo());
+
   // Always enable security mode when under CSP mode.
   security_mode_enabled_ = true;
   NavigationInfo* info = static_cast<NavigationInfo*>(
@@ -106,13 +140,10 @@ void ApplicationTizen::InitSecurityPolicy() {
 }
 
 #if defined(USE_OZONE)
-base::EventStatus ApplicationTizen::WillProcessEvent(
-    const base::NativeEvent& event) {
-  return base::EVENT_CONTINUE;
-}
+void ApplicationTizen::WillProcessEvent(const ui::PlatformEvent& event) {}
 
 void ApplicationTizen::DidProcessEvent(
-    const base::NativeEvent& event) {
+    const ui::PlatformEvent& event) {
   ui::Event* ui_event = static_cast<ui::Event*>(event);
   if (!ui_event->IsKeyEvent() || ui_event->type() != ui::ET_KEY_PRESSED)
     return;