e856a30d29c1c8a9f550712a6b11be10d5610194
[platform/framework/web/crosswalk.git] / src / xwalk / runtime / renderer / xwalk_content_renderer_client.cc
1 // Copyright (c) 2013 Intel Corporation. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "xwalk/runtime/renderer/xwalk_content_renderer_client.h"
6
7 #include "base/strings/utf_string_conversions.h"
8 #include "content/public/renderer/render_thread.h"
9 #include "grit/xwalk_sysapps_resources.h"
10 #include "third_party/WebKit/public/platform/WebString.h"
11 #include "third_party/WebKit/public/web/WebSecurityPolicy.h"
12 #include "xwalk/application/common/constants.h"
13 #include "xwalk/application/renderer/application_native_module.h"
14 #include "xwalk/extensions/renderer/xwalk_js_module.h"
15
16 #if defined(OS_ANDROID)
17 #include "xwalk/runtime/renderer/android/xwalk_permission_client.h"
18 #include "xwalk/runtime/renderer/android/xwalk_render_process_observer.h"
19 #include "xwalk/runtime/renderer/android/xwalk_render_view_ext.h"
20 #endif
21
22 #if defined(OS_TIZEN_MOBILE)
23 #include "xwalk/runtime/renderer/tizen/xwalk_content_renderer_client_tizen.h"
24 #endif
25
26 namespace xwalk {
27
28 namespace {
29 XWalkContentRendererClient* g_renderer_client;
30 }
31
32 XWalkContentRendererClient* XWalkContentRendererClient::Get() {
33   return g_renderer_client;
34 }
35
36 XWalkContentRendererClient::XWalkContentRendererClient() {
37   DCHECK(!g_renderer_client);
38   g_renderer_client = this;
39 }
40
41 XWalkContentRendererClient::~XWalkContentRendererClient() {
42   g_renderer_client = NULL;
43 }
44
45 void XWalkContentRendererClient::RenderThreadStarted() {
46   extension_controller_.reset(
47       new extensions::XWalkExtensionRendererController(this));
48
49   blink::WebString application_scheme(
50       base::ASCIIToUTF16(application::kApplicationScheme));
51   blink::WebSecurityPolicy::registerURLSchemeAsSecure(application_scheme);
52   blink::WebSecurityPolicy::registerURLSchemeAsCORSEnabled(application_scheme);
53
54 #if defined(OS_ANDROID)
55   content::RenderThread* thread = content::RenderThread::Get();
56   xwalk_render_process_observer_.reset(new XWalkRenderProcessObserver);
57   thread->AddObserver(xwalk_render_process_observer_.get());
58 #endif
59 }
60
61 void XWalkContentRendererClient::RenderFrameCreated(
62     content::RenderFrame* render_frame) {
63 #if defined(OS_ANDROID)
64   new XWalkPermissionClient(render_frame);
65 #endif
66 }
67
68 void XWalkContentRendererClient::RenderViewCreated(
69     content::RenderView* render_view) {
70 #if defined(OS_ANDROID)
71   XWalkRenderViewExt::RenderViewCreated(render_view);
72 #endif
73 }
74
75 void XWalkContentRendererClient::DidCreateScriptContext(
76     blink::WebFrame* frame, v8::Handle<v8::Context> context,
77     int extension_group, int world_id) {
78   extension_controller_->DidCreateScriptContext(frame, context);
79 }
80
81 void XWalkContentRendererClient::WillReleaseScriptContext(
82     blink::WebFrame* frame, v8::Handle<v8::Context> context, int world_id) {
83   extension_controller_->WillReleaseScriptContext(frame, context);
84 }
85
86 void XWalkContentRendererClient::DidCreateModuleSystem(
87     extensions::XWalkModuleSystem* module_system) {
88   scoped_ptr<extensions::XWalkNativeModule> app_module(
89       new application::ApplicationNativeModule());
90   module_system->RegisterNativeModule("application", app_module.Pass());
91   module_system->RegisterNativeModule("sysapps_common",
92       extensions::CreateJSModuleFromResource(IDR_XWALK_SYSAPPS_COMMON_API));
93   module_system->RegisterNativeModule("sysapps_promise",
94       extensions::CreateJSModuleFromResource(
95           IDR_XWALK_SYSAPPS_COMMON_PROMISE_API));
96 }
97
98 }  // namespace xwalk