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.
6 #ifndef XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_
7 #define XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_
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/renderer/content_renderer_client.h"
16 #include "ui/base/page_transition_types.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"
21 #include "xwalk/runtime/renderer/xwalk_render_process_observer_generic.h"
24 namespace visitedlink {
25 class VisitedLinkSlave;
30 class XWalkRenderProcessObserver;
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 {
38 static XWalkContentRendererClient* Get();
40 XWalkContentRendererClient();
41 virtual ~XWalkContentRendererClient();
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
59 virtual bool WillSendRequest(blink::WebFrame* frame,
60 ui::PageTransition transition_type,
62 const GURL& first_party_for_cookies,
63 GURL* new_url) OVERRIDE;
66 scoped_ptr<XWalkRenderProcessObserver> xwalk_render_process_observer_;
69 // XWalkExtensionRendererController::Delegate implementation.
70 virtual void DidCreateModuleSystem(
71 extensions::XWalkModuleSystem* module_system) OVERRIDE;
73 scoped_ptr<extensions::XWalkExtensionRendererController>
74 extension_controller_;
76 #if defined(OS_ANDROID)
77 scoped_ptr<visitedlink::VisitedLinkSlave> visited_link_slave_;
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;
88 DISALLOW_COPY_AND_ASSIGN(XWalkContentRendererClient);
93 #endif // XWALK_RUNTIME_RENDERER_XWALK_CONTENT_RENDERER_CLIENT_H_