Upstream version 10.38.210.0
[platform/framework/web/crosswalk.git] / src / xwalk / runtime / renderer / xwalk_render_process_observer_generic.cc
index 14139d3..7723358 100644 (file)
@@ -1,4 +1,5 @@
 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// 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.
 
@@ -6,10 +7,13 @@
 
 #include <vector>
 
+#include "content/renderer/render_thread_impl.h"
+#include "content/renderer/renderer_webkitplatformsupport_impl.h"
 #include "ipc/ipc_message_macros.h"
 #include "third_party/WebKit/public/web/WebSecurityPolicy.h"
 #include "third_party/WebKit/public/platform/WebString.h"
 #include "xwalk/runtime/common/xwalk_common_messages.h"
+#include "xwalk/runtime/common/xwalk_content_client.h"
 
 
 namespace xwalk {
@@ -43,7 +47,8 @@ void AddAccessWhiteListEntry(
 
 XWalkRenderProcessObserver::XWalkRenderProcessObserver()
     : is_webkit_initialized_(false),
-      is_warp_mode_(false) {
+      is_suspended_(false),
+      security_mode_(application::SecurityPolicy::NoSecurity) {
 }
 
 XWalkRenderProcessObserver::~XWalkRenderProcessObserver() {
@@ -54,7 +59,11 @@ bool XWalkRenderProcessObserver::OnControlMessageReceived(
   bool handled = true;
   IPC_BEGIN_MESSAGE_MAP(XWalkRenderProcessObserver, message)
     IPC_MESSAGE_HANDLER(ViewMsg_SetAccessWhiteList, OnSetAccessWhiteList)
-    IPC_MESSAGE_HANDLER(ViewMsg_EnableWarpMode, OnEnableWarpMode)
+    IPC_MESSAGE_HANDLER(ViewMsg_EnableSecurityMode, OnEnableSecurityMode)
+    IPC_MESSAGE_HANDLER(ViewMsg_SuspendJSEngine, OnSuspendJSEngine)
+#if defined(OS_TIZEN)
+    IPC_MESSAGE_HANDLER(ViewMsg_UserAgentStringChanged, OnUserAgentChanged)
+#endif
     IPC_MESSAGE_UNHANDLED(handled = false)
   IPC_END_MESSAGE_MAP()
   return handled;
@@ -62,15 +71,6 @@ bool XWalkRenderProcessObserver::OnControlMessageReceived(
 
 void XWalkRenderProcessObserver::WebKitInitialized() {
   is_webkit_initialized_ = true;
-}
-
-void XWalkRenderProcessObserver::OnRenderProcessShutdown() {
-  is_webkit_initialized_ = false;
-}
-
-void XWalkRenderProcessObserver::DidCreateScriptContext(
-    blink::WebFrame* frame, v8::Handle<v8::Context> context,
-    int extension_group, int world_id) {
   for (std::vector<AccessWhitelistItem>::iterator it = access_whitelist.begin();
        it != access_whitelist.end(); ++it)
     AddAccessWhiteListEntry(it->source_, it->dest_, it->allow_subdomains_);
@@ -78,6 +78,10 @@ void XWalkRenderProcessObserver::DidCreateScriptContext(
   access_whitelist.clear();
 }
 
+void XWalkRenderProcessObserver::OnRenderProcessShutdown() {
+  is_webkit_initialized_ = false;
+}
+
 void XWalkRenderProcessObserver::OnSetAccessWhiteList(const GURL& source,
                                                       const GURL& dest,
                                                       bool allow_subdomains) {
@@ -88,8 +92,33 @@ void XWalkRenderProcessObserver::OnSetAccessWhiteList(const GURL& source,
         AccessWhitelistItem(source, dest, allow_subdomains));
 }
 
-void XWalkRenderProcessObserver::OnEnableWarpMode() {
-  is_warp_mode_ = true;
+void XWalkRenderProcessObserver::OnEnableSecurityMode(
+    const GURL& url, application::SecurityPolicy::SecurityMode mode) {
+  app_url_ = url;
+  security_mode_ = mode;
+}
+
+void XWalkRenderProcessObserver::OnSuspendJSEngine(bool is_suspend) {
+  if (is_suspend == is_suspended_)
+    return;
+  content::RenderThreadImpl* thread = content::RenderThreadImpl::current();
+  thread->EnsureWebKitInitialized();
+  if (is_suspend)
+    thread->webkit_platform_support()->SuspendSharedTimer();
+  else
+    thread->webkit_platform_support()->ResumeSharedTimer();
+  is_suspended_ = is_suspend;
+}
+
+#if defined(OS_TIZEN)
+void XWalkRenderProcessObserver::OnUserAgentChanged(
+    const std::string& userAgentString) {
+  overriden_user_agent_ = userAgentString;
+}
+
+std::string XWalkRenderProcessObserver::GetOverridenUserAgent() const {
+  return overriden_user_agent_;
 }
+#endif
 
 }  // namespace xwalk