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.
5 #ifndef XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_
6 #define XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_
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"
20 #include "xwalk/runtime/renderer/xwalk_render_process_observer_generic.h"
23 namespace visitedlink {
24 class VisitedLinkSlave;
29 class XWalkRenderProcessObserver;
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 {
37 static XWalkContentRendererClient* Get();
39 XWalkContentRendererClient();
40 virtual ~XWalkContentRendererClient();
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
58 virtual bool WillSendRequest(blink::WebFrame* frame,
59 content::PageTransition transition_type,
61 const GURL& first_party_for_cookies,
62 GURL* new_url) OVERRIDE;
65 // XWalkExtensionRendererController::Delegate implementation.
66 virtual void DidCreateModuleSystem(
67 extensions::XWalkModuleSystem* module_system) OVERRIDE;
69 scoped_ptr<extensions::XWalkExtensionRendererController>
70 extension_controller_;
72 scoped_ptr<XWalkRenderProcessObserver> xwalk_render_process_observer_;
73 #if defined(OS_ANDROID)
74 scoped_ptr<visitedlink::VisitedLinkSlave> visited_link_slave_;
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;
85 DISALLOW_COPY_AND_ASSIGN(XWalkContentRendererClient);
90 #endif // XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_