15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_PUBLIC_RENDERER_CONTENT_RENDERER_CLIENT_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_PUBLIC_RENDERER_CONTENT_RENDERER_CLIENT_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h" 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string16.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/content_client.h" 147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ipc/ipc_message.h" 157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebNavigationPolicy.h" 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebNavigationType.h" 177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebPageVisibilityState.h" 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/base/page_transition_types.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "v8/include/v8.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SkBitmap; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FilePath; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class MessageLoop; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink { 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass WebAudioDevice; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebClipboard; 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass WebFrame; 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass WebLocalFrame; 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass WebMIDIAccessor; 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass WebMIDIAccessorClient; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebMediaStreamCenter; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebMediaStreamCenterClient; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPlugin; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebPluginContainer; 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class WebPrescientNetworking; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebRTCPeerConnectionHandler; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebRTCPeerConnectionHandlerClient; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class WebSpeechSynthesizer; 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class WebSpeechSynthesizerClient; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebThemeEngine; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebURLRequest; 470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class WebWorkerPermissionClientProxy; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebPluginParams; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebURLError; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass BrowserPluginDelegate; 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class DocumentState; 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class RenderFrame; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderView; 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class SynchronousCompositor; 58d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)struct KeySystemInfo; 59ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstruct WebPluginInfo; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Embedder API for participating in renderer logic. 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT ContentRendererClient { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ContentRendererClient() {} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifies us that the RenderThread has been created. 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RenderThreadStarted() {} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Notifies that a new RenderFrame has been created. Note that at this point, 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // render_frame->GetWebFrame()->parent() is always NULL. This will change once 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // the frame tree moves from Blink to content. 72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void RenderFrameCreated(RenderFrame* render_frame) {} 73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifies that a new RenderView has been created. 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RenderViewCreated(RenderView* render_view) {} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets a number of views/tabs opened in this process. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetNumberOfViews(int number_of_views) {} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the bitmap to show when a plugin crashed, or NULL for none. 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual SkBitmap* GetSadPluginBitmap(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the bitmap to show when a <webview> guest has crashed, or NULL for 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // none. 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual SkBitmap* GetSadWebViewBitmap(); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Allows the embedder to override creating a plugin. If it returns true, then 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |plugin| will contain the created plugin, although it could be NULL. If it 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // returns false, the content layer will create the plugin. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool OverrideCreatePlugin( 91a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderFrame* render_frame, 92a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch blink::WebLocalFrame* frame, 93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebPluginParams& params, 94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebPlugin** plugin); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a replacement plug-in that is shown when the plug-in at |file_path| 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // couldn't be loaded. This allows the embedder to show a custom placeholder. 98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebPlugin* CreatePluginReplacement( 99a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderFrame* render_frame, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& plugin_path); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Creates a delegate for browser plugin. 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual BrowserPluginDelegate* CreateBrowserPluginDelegate( 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RenderFrame* render_frame, 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& mime_type); 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the embedder has an error page to show for the given http 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // status code. If so |error_domain| should be set to according to WebURLError 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and the embedder's GetNavigationErrorHtml will be called afterwards to get 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the error html. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HasErrorPage(int http_status_code, 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string* error_domain); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Returns true if the embedder prefers not to show an error page for a failed 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // navigation to |url| in |render_frame|. 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool ShouldSuppressErrorPage(RenderFrame* render_frame, 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& url); 1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the information to display when a navigation error occurs. 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If |error_html| is not null then it may be set to a HTML page containing 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the details of the error and maybe links to more info. 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If |error_description| is not null it may be set to contain a brief 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // message describing the error that has occurred. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Either of the out parameters may be not written to in certain cases 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (lack of information on the error code) so the caller should take care to 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // initialize the string values with safe defaults before the call. 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetNavigationErrorStrings( 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::RenderView* render_view, 129f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 130f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& failed_request, 131f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLError& error, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string* error_html, 133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16* error_description) {} 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Allows the embedder to control when media resources are loaded. Embedders 136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // can run |closure| immediately if they don't wish to defer media resource 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // loading. 138a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void DeferMediaLoad(RenderFrame* render_frame, 139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Closure& closure); 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Allows the embedder to override creating a WebMediaStreamCenter. If it 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // returns NULL the content layer will create the stream center. 143f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebMediaStreamCenter* OverrideCreateWebMediaStreamCenter( 144f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebMediaStreamCenterClient* client); 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Allows the embedder to override creating a WebRTCPeerConnectionHandler. If 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // it returns NULL the content layer will create the connection handler. 148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebRTCPeerConnectionHandler* 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OverrideCreateWebRTCPeerConnectionHandler( 150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebRTCPeerConnectionHandlerClient* client); 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Allows the embedder to override creating a WebMIDIAccessor. If it 153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // returns NULL the content layer will create the MIDI accessor. 154f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebMIDIAccessor* OverrideCreateMIDIAccessor( 155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebMIDIAccessorClient* client); 156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Allows the embedder to override creating a WebAudioDevice. If it 1587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // returns NULL the content layer will create the audio device. 159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebAudioDevice* OverrideCreateAudioDevice( 1607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch double sample_rate); 1617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Allows the embedder to override the blink::WebClipboard used. If it 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // returns NULL the content layer will handle clipboard interactions. 164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebClipboard* OverrideWebClipboard(); 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Allows the embedder to override the WebThemeEngine used. If it returns NULL 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the content layer will provide an engine. 168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebThemeEngine* OverrideThemeEngine(); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Allows the embedder to override the WebSpeechSynthesizer used. 171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // If it returns NULL the content layer will provide an engine. 172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebSpeechSynthesizer* OverrideSpeechSynthesizer( 173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebSpeechSynthesizerClient* client); 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the renderer process should schedule the idle handler when 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // all widgets are hidden. 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool RunIdleHandlerWhenWidgetsHidden(); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns true if a popup window should be allowed. 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool AllowPopup(); 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifdef OS_ANDROID 183a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TODO(sgurun) This callback is deprecated and will be removed as soon 184a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // as android webview completes implementation of a resource throttle based 185a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // shouldoverrideurl implementation. See crbug.com/325351 186a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns true if the navigation was handled by the embedder and should be 188a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // ignored by WebKit. This method is used by CEF and android_webview. 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool HandleNavigation(RenderFrame* render_frame, 190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) DocumentState* document_state, 191a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int opener_id, 192a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) blink::WebFrame* frame, 193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request, 194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebNavigationType type, 195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebNavigationPolicy default_policy, 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_redirect); 197a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if we should fork a new process for the given navigation. 20068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // If |send_referrer| is set to false (which is the default), no referrer 20168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // header will be send for the navigation. Otherwise, the referrer header is 20268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // set according to the frame's referrer policy. 203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool ShouldFork(blink::WebFrame* frame, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& http_method, 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_initial_navigation, 207868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool is_server_redirect, 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* send_referrer); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifies the embedder that the given frame is requesting the resource at 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |url|. If the function returns true, the url is changed to |new_url|. 212f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool WillSendRequest(blink::WebFrame* frame, 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ui::PageTransition transition_type, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& first_party_for_cookies, 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL* new_url); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // See the corresponding functions in blink::WebFrameClient. 219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void DidCreateScriptContext(blink::WebFrame* frame, 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) v8::Handle<v8::Context> context, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int extension_group, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int world_id) {} 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // See blink::Platform. 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual unsigned long long VisitedLinkHash(const char* canonical_url, 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t length); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsLinkVisited(unsigned long long link_hash); 228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebPrescientNetworking* GetPrescientNetworking(); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ShouldOverridePageVisibilityState( 230a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const RenderFrame* render_frame, 231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebPageVisibilityState* override_state); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 233a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // Allows an embedder to return custom PPAPI interfaces. 234a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch virtual const void* CreatePPAPIInterface( 235a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch const std::string& interface_name); 2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 237ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Returns true if the given Pepper plugin is external (requiring special 238ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // startup steps). 239ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual bool IsExternalPepperPlugin(const std::string& module_name); 240ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 2417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Returns true if the page at |url| can use Pepper MediaStream APIs. 242ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual bool AllowPepperMediaStreamAPI(const GURL& url); 2433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 244d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Gives the embedder a chance to register the key system(s) it supports by 245d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // populating |key_systems|. 246d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void AddKeySystems(std::vector<KeySystemInfo>* key_systems); 247d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 2483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Returns true if we should report a detailed message (including a stack 2493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // trace) for console [logs|errors|exceptions]. |source| is the WebKit- 2503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // reported source for the error; this can point to a page or a script, 251424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // and can be external or internal. 2523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual bool ShouldReportDetailedMessageForSource( 2533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const base::string16& source) const; 25458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 25558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Returns true if we should apply the cross-site document blocking policy to 25658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // this renderer process. Currently, we apply the policy only to a renderer 25758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // process running on a normal page from the web. 25858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual bool ShouldEnableSiteIsolationPolicy() const; 2590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // Creates a permission client proxy for in-renderer worker. 261f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebWorkerPermissionClientProxy* 2625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CreateWorkerPermissionClientProxy(RenderFrame* render_frame, 263f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame); 264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns true if the page at |url| can use Pepper Compositor APIs. 266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsPluginAllowedToUseCompositorAPI(const GURL& url); 267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns true if the page at |url| can use Pepper VideoDecoder APIs. 269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsPluginAllowedToUseVideoDecodeAPI(const GURL& url); 270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns true if dev channel APIs are available for plugins. 272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsPluginAllowedToUseDevChannelAPIs(); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_PUBLIC_RENDERER_CONTENT_RENDERER_CLIENT_H_ 278