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 void RenderThreadStarted() override;
45 void RenderFrameCreated(content::RenderFrame* render_frame) override;
46 void RenderViewCreated(content::RenderView* render_view) override;
47 void DidCreateScriptContext(
48 blink::WebFrame* frame, v8::Handle<v8::Context> context,
49 int extension_group, int world_id) override;
50 bool IsExternalPepperPlugin(const std::string& module_name) override;
51 const void* CreatePPAPIInterface(
52 const std::string& interface_name) override;
53 #if defined(OS_ANDROID)
54 unsigned long long VisitedLinkHash(const char* canonical_url, // NOLINT
55 size_t length) override;
56 bool IsLinkVisited(unsigned long long link_hash) override; // NOLINT
59 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 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 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_