Upstream version 10.38.210.0
[platform/framework/web/crosswalk.git] / src / xwalk / runtime / renderer / xwalk_content_renderer_client.h
1 // Copyright (c) 2013 Intel Corporation. All rights reserved.
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5
6 #ifndef XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_
7 #define XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_
8
9 #include <string>
10
11 #include "base/compiler_specific.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "base/files/file.h"
14 #include "base/strings/string16.h"
15 #include "content/public/common/page_transition_types.h"
16 #include "content/public/renderer/content_renderer_client.h"
17 #include "xwalk/extensions/renderer/xwalk_extension_renderer_controller.h"
18 #if defined(OS_ANDROID)
19 #include "xwalk/runtime/renderer/android/xwalk_render_process_observer.h"
20 #else
21 #include "xwalk/runtime/renderer/xwalk_render_process_observer_generic.h"
22 #endif
23
24 namespace visitedlink {
25 class VisitedLinkSlave;
26 }
27
28 namespace xwalk {
29
30 class XWalkRenderProcessObserver;
31
32 // When implementing a derived class, make sure to update
33 // `in_process_browser_test.cc` and `xwalk_main_delegate.cc`.
34 class XWalkContentRendererClient
35     : public content::ContentRendererClient,
36       public extensions::XWalkExtensionRendererController::Delegate {
37  public:
38   static XWalkContentRendererClient* Get();
39
40   XWalkContentRendererClient();
41   virtual ~XWalkContentRendererClient();
42
43   // ContentRendererClient implementation.
44   virtual void RenderThreadStarted() OVERRIDE;
45   virtual void RenderFrameCreated(content::RenderFrame* render_frame) OVERRIDE;
46   virtual void RenderViewCreated(content::RenderView* render_view) OVERRIDE;
47   virtual void DidCreateScriptContext(
48       blink::WebFrame* frame, v8::Handle<v8::Context> context,
49       int extension_group, int world_id) OVERRIDE;
50   virtual bool IsExternalPepperPlugin(const std::string& module_name) OVERRIDE;
51   virtual const void* CreatePPAPIInterface(
52       const std::string& interface_name) OVERRIDE;
53 #if defined(OS_ANDROID)
54   virtual unsigned long long VisitedLinkHash(const char* canonical_url, // NOLINT
55                                              size_t length) OVERRIDE;
56   virtual bool IsLinkVisited(unsigned long long link_hash) OVERRIDE; // NOLINT
57 #endif
58
59   virtual bool WillSendRequest(blink::WebFrame* frame,
60                                content::PageTransition transition_type,
61                                const GURL& url,
62                                const GURL& first_party_for_cookies,
63                                GURL* new_url) OVERRIDE;
64
65  protected:
66   scoped_ptr<XWalkRenderProcessObserver> xwalk_render_process_observer_;
67
68  private:
69   // XWalkExtensionRendererController::Delegate implementation.
70   virtual void DidCreateModuleSystem(
71       extensions::XWalkModuleSystem* module_system) OVERRIDE;
72
73   scoped_ptr<extensions::XWalkExtensionRendererController>
74       extension_controller_;
75
76 #if defined(OS_ANDROID)
77   scoped_ptr<visitedlink::VisitedLinkSlave> visited_link_slave_;
78 #endif
79
80   virtual void GetNavigationErrorStrings(
81       content::RenderView* render_view,
82       blink::WebFrame* frame,
83       const blink::WebURLRequest& failed_request,
84       const blink::WebURLError& error,
85       std::string* error_html,
86       base::string16* error_description) OVERRIDE;
87
88   DISALLOW_COPY_AND_ASSIGN(XWalkContentRendererClient);
89 };
90
91 }  // namespace xwalk
92
93 #endif  // XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_