f3fc4cc19cbc7f31a17c0bc50d8432b594438381
[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 "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/platform_file.h"
11 #include "content/public/common/page_transition_types.h"
12 #include "content/public/renderer/content_renderer_client.h"
13 #include "xwalk/extensions/renderer/xwalk_extension_renderer_controller.h"
14 #if defined(OS_ANDROID)
15 #include "xwalk/runtime/renderer/android/xwalk_render_process_observer.h"
16 #else
17 #include "xwalk/runtime/renderer/xwalk_render_process_observer_generic.h"
18 #endif
19
20 namespace visitedlink {
21 class VisitedLinkSlave;
22 }
23
24 namespace xwalk {
25
26 class XWalkRenderProcessObserver;
27
28 // When implementing a derived class, make sure to update
29 // `in_process_browser_test.cc` and `xwalk_main_delegate.cc`.
30 class XWalkContentRendererClient
31     : public content::ContentRendererClient,
32       public extensions::XWalkExtensionRendererController::Delegate {
33  public:
34   static XWalkContentRendererClient* Get();
35
36   XWalkContentRendererClient();
37   virtual ~XWalkContentRendererClient();
38
39   // ContentRendererClient implementation.
40   virtual void RenderThreadStarted() OVERRIDE;
41   virtual void RenderFrameCreated(content::RenderFrame* render_frame) OVERRIDE;
42   virtual void RenderViewCreated(content::RenderView* render_view) OVERRIDE;
43   virtual void DidCreateScriptContext(
44       blink::WebFrame* frame, v8::Handle<v8::Context> context,
45       int extension_group, int world_id) OVERRIDE;
46 #if defined(OS_ANDROID)
47   virtual unsigned long long VisitedLinkHash(const char* canonical_url, // NOLINT
48                                              size_t length) OVERRIDE;
49   virtual bool IsLinkVisited(unsigned long long link_hash) OVERRIDE; // NOLINT
50 #endif
51
52   virtual bool WillSendRequest(blink::WebFrame* frame,
53                                content::PageTransition transition_type,
54                                const GURL& url,
55                                const GURL& first_party_for_cookies,
56                                GURL* new_url) OVERRIDE;
57
58  private:
59   // XWalkExtensionRendererController::Delegate implementation.
60   virtual void DidCreateModuleSystem(
61       extensions::XWalkModuleSystem* module_system) OVERRIDE;
62
63   scoped_ptr<extensions::XWalkExtensionRendererController>
64       extension_controller_;
65
66   scoped_ptr<XWalkRenderProcessObserver> xwalk_render_process_observer_;
67 #if defined(OS_ANDROID)
68   scoped_ptr<visitedlink::VisitedLinkSlave> visited_link_slave_;
69 #endif
70
71   DISALLOW_COPY_AND_ASSIGN(XWalkContentRendererClient);
72 };
73
74 }  // namespace xwalk
75
76 #endif  // XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_