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