Upstream version 8.37.186.0
[platform/framework/web/crosswalk.git] / src / xwalk / runtime / renderer / xwalk_content_renderer_client.cc
index d36e7e8..d2b4d79 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "xwalk/runtime/renderer/xwalk_content_renderer_client.h"
 
+#include "base/command_line.h"
 #include "base/strings/utf_string_conversions.h"
 #include "components/nacl/renderer/ppb_nacl_private_impl.h"
 #include "components/visitedlink/renderer/visitedlink_slave.h"
 #include "third_party/WebKit/public/web/WebSecurityPolicy.h"
 #include "xwalk/application/common/constants.h"
 #include "xwalk/application/renderer/application_native_module.h"
+#include "xwalk/extensions/common/xwalk_extension_switches.h"
 #include "xwalk/extensions/renderer/xwalk_js_module.h"
 #include "xwalk/runtime/common/xwalk_localized_error.h"
 #include "xwalk/runtime/renderer/isolated_file_system.h"
 #include "xwalk/runtime/renderer/pepper/pepper_helper.h"
 
 #if defined(OS_ANDROID)
+#include "xwalk/runtime/browser/android/net/url_constants.h"
 #include "xwalk/runtime/renderer/android/xwalk_permission_client.h"
 #include "xwalk/runtime/renderer/android/xwalk_render_process_observer.h"
 #include "xwalk/runtime/renderer/android/xwalk_render_view_ext.h"
@@ -65,10 +68,22 @@ class XWalkFrameHelper
   // RenderFrameObserver implementation.
   virtual void WillReleaseScriptContext(v8::Handle<v8::Context> context,
                                         int world_id) OVERRIDE {
-    extension_controller_->WillReleaseScriptContext(
-        render_frame()->GetWebFrame(), context);
+    if (extension_controller_)
+      extension_controller_->WillReleaseScriptContext(
+          render_frame()->GetWebFrame(), context);
   }
 
+#if defined(OS_TIZEN)
+  virtual void DidCommitProvisionalLoad(bool is_new_navigation) OVERRIDE {
+    blink::WebFrame* frame = render_frame()->GetWebFrame();
+    GURL url(frame->document().url());
+    if (url.SchemeIs(application::kApplicationScheme)) {
+      blink::WebSecurityOrigin origin = frame->document().securityOrigin();
+      origin.grantLoadLocalResources();
+    }
+  }
+#endif
+
  private:
   extensions::XWalkExtensionRendererController* extension_controller_;
 
@@ -91,8 +106,10 @@ XWalkContentRendererClient::~XWalkContentRendererClient() {
 }
 
 void XWalkContentRendererClient::RenderThreadStarted() {
-  extension_controller_.reset(
-      new extensions::XWalkExtensionRendererController(this));
+  CommandLine* cmd_line = CommandLine::ForCurrentProcess();
+  if (!cmd_line->HasSwitch(switches::kXWalkDisableExtensions))
+    extension_controller_.reset(
+        new extensions::XWalkExtensionRendererController(this));
 
   blink::WebString application_scheme(
       base::ASCIIToUTF16(application::kApplicationScheme));
@@ -103,6 +120,10 @@ void XWalkContentRendererClient::RenderThreadStarted() {
   xwalk_render_process_observer_.reset(new XWalkRenderProcessObserver);
   thread->AddObserver(xwalk_render_process_observer_.get());
 #if defined(OS_ANDROID)
+  blink::WebString content_scheme(
+      base::ASCIIToUTF16(xwalk::kContentScheme));
+  blink::WebSecurityPolicy::registerURLSchemeAsLocal(content_scheme);
+
   visited_link_slave_.reset(new visitedlink::VisitedLinkSlave);
   thread->AddObserver(visited_link_slave_.get());
 #endif
@@ -132,7 +153,8 @@ void XWalkContentRendererClient::RenderViewCreated(
 void XWalkContentRendererClient::DidCreateScriptContext(
     blink::WebFrame* frame, v8::Handle<v8::Context> context,
     int extension_group, int world_id) {
-  extension_controller_->DidCreateScriptContext(frame, context);
+  if (extension_controller_)
+    extension_controller_->DidCreateScriptContext(frame, context);
 #if !defined(OS_ANDROID)
   xwalk_render_process_observer_->DidCreateScriptContext(
       frame, context, extension_group, world_id);