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) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/shell/renderer/shell_content_renderer_client.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/debug/debugger.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/web_cache/renderer/web_cache_render_process_observer.h" 110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/common/sandbox_win.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/content_constants.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/content_switches.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/renderer/render_thread.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/renderer/render_view.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/test/layouttest_support.h" 17b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "content/shell/common/shell_switches.h" 18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "content/shell/common/webkit_test_helpers.h" 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/shell/renderer/shell_render_frame_observer.h" 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/shell/renderer/shell_render_process_observer.h" 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/shell/renderer/shell_render_view_observer.h" 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/shell/renderer/test_runner/mock_credential_manager_client.h" 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/shell/renderer/test_runner/web_test_interfaces.h" 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/shell/renderer/test_runner/web_test_proxy.h" 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/shell/renderer/webkit_test_runner.h" 26d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "content/test/mock_webclipboard_impl.h" 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ppapi/shared_impl/ppapi_switches.h" 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebMediaStreamCenter.h" 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebPluginParams.h" 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebView.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "v8/include/v8.h" 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_WIN) 34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "content/public/renderer/render_font_warmup_win.h" 35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "third_party/WebKit/public/web/win/WebFontRendering.h" 36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "third_party/skia/include/ports/SkFontMgr.h" 37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebAudioDevice; 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebClipboard; 41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochusing blink::WebLocalFrame; 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMIDIAccessor; 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMIDIAccessorClient; 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMediaStreamCenter; 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMediaStreamCenterClient; 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebPlugin; 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebPluginParams; 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebRTCPeerConnectionHandler; 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebRTCPeerConnectionHandlerClient; 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebThemeEngine; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_WIN) 55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace { 56a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// DirectWrite only has access to %WINDIR%\Fonts by default. For developer 58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// side-loading, support kRegisterFontFiles to allow access to additional fonts. 59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochvoid RegisterSideloadedTypefaces(SkFontMgr* fontmgr) { 60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch std::vector<std::string> files = GetSideloadFontFiles(); 61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch for (std::vector<std::string>::const_iterator i(files.begin()); 62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch i != files.end(); 63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ++i) { 64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch SkTypeface* typeface = fontmgr->createFromFile(i->c_str()); 65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch DoPreSandboxWarmupForTypeface(typeface); 66a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch blink::WebFontRendering::addSideloadedFontForTesting(typeface); 67a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 68a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} 69a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 70a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} // namespace 71a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif // OS_WIN 72a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShellContentRendererClient::ShellContentRendererClient() { 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) { 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EnableWebTestProxyCreation( 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&ShellContentRendererClient::WebTestProxyCreated, 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 79a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 80a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_WIN) 810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (ShouldUseDirectWrite()) 820529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch RegisterSideloadedTypefaces(GetPreSandboxWarmupFontMgr()); 83a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShellContentRendererClient::~ShellContentRendererClient() { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShellContentRendererClient::RenderThreadStarted() { 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RenderThread* thread = RenderThread::Get(); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shell_observer_.reset(new ShellRenderProcessObserver()); 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_cache_observer_.reset(new web_cache::WebCacheRenderProcessObserver()); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_MACOSX) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // We need to call this once before the sandbox was initialized to cache the 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // value. 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::debug::BeingDebugged(); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci thread->AddObserver(web_cache_observer_.get()); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void ShellContentRendererClient::RenderFrameCreated(RenderFrame* render_frame) { 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) new ShellRenderFrameObserver(render_frame); 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShellContentRendererClient::RenderViewCreated(RenderView* render_view) { 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch new ShellRenderViewObserver(render_view); 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebKitTestRunner* test_runner = WebKitTestRunner::Get(render_view); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) test_runner->Reset(); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) render_view->GetWebView()->setSpellCheckClient( 113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_runner->proxy()->GetSpellCheckClient()); 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci render_view->GetWebView()->setCredentialManagerClient( 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci test_runner->proxy()->GetCredentialManagerClientMock()); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebTestDelegate* delegate = 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellRenderProcessObserver::GetInstance()->test_delegate(); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (delegate == static_cast<WebTestDelegate*>(test_runner)) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellRenderProcessObserver::GetInstance()->SetMainWindow(render_view); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ShellContentRendererClient::OverrideCreatePlugin( 124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderFrame* render_frame, 125a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch WebLocalFrame* frame, 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const WebPluginParams& params, 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebPlugin** plugin) { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebMediaStreamCenter* 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ShellContentRendererClient::OverrideCreateWebMediaStreamCenter( 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebMediaStreamCenterClient* client) { 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(ENABLE_WEBRTC) 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebTestInterfaces* interfaces = 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellRenderProcessObserver::GetInstance()->test_interfaces(); 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return interfaces->CreateMediaStreamCenter(client); 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebRTCPeerConnectionHandler* 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ShellContentRendererClient::OverrideCreateWebRTCPeerConnectionHandler( 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebRTCPeerConnectionHandlerClient* client) { 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(ENABLE_WEBRTC) 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebTestInterfaces* interfaces = 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellRenderProcessObserver::GetInstance()->test_interfaces(); 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return interfaces->CreateWebRTCPeerConnectionHandler(client); 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 159eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochWebMIDIAccessor* 160eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochShellContentRendererClient::OverrideCreateMIDIAccessor( 161eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch WebMIDIAccessorClient* client) { 162eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch WebTestInterfaces* interfaces = 163eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ShellRenderProcessObserver::GetInstance()->test_interfaces(); 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return interfaces->CreateMIDIAccessor(client); 165eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 166eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1677dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochWebAudioDevice* 1687dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochShellContentRendererClient::OverrideCreateAudioDevice( 1697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch double sample_rate) { 170c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) 171c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return NULL; 1727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch WebTestInterfaces* interfaces = 1737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ShellRenderProcessObserver::GetInstance()->test_interfaces(); 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return interfaces->CreateAudioDevice(sample_rate); 1757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 1767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebClipboard* ShellContentRendererClient::OverrideWebClipboard() { 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!clipboard_) 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) clipboard_.reset(new MockWebClipboardImpl); 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return clipboard_.get(); 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebThemeEngine* ShellContentRendererClient::OverrideThemeEngine() { 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return ShellRenderProcessObserver::GetInstance() 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ->test_interfaces() 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ->ThemeEngine(); 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ShellContentRendererClient::WebTestProxyCreated(RenderView* render_view, 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebTestProxyBase* proxy) { 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebKitTestRunner* test_runner = new WebKitTestRunner(render_view); 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) test_runner->set_proxy(proxy); 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ShellRenderProcessObserver::GetInstance()->test_delegate()) 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellRenderProcessObserver::GetInstance()->SetTestDelegate(test_runner); 199cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) proxy->SetInterfaces( 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellRenderProcessObserver::GetInstance()->test_interfaces()); 201cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) test_runner->proxy()->SetDelegate( 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellRenderProcessObserver::GetInstance()->test_delegate()); 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 205116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool ShellContentRendererClient::IsPluginAllowedToUseCompositorAPI( 206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GURL& url) { 207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return CommandLine::ForCurrentProcess()->HasSwitch( 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch switches::kEnablePepperTesting); 209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool ShellContentRendererClient::IsPluginAllowedToUseVideoDecodeAPI( 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GURL& url) { 213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return CommandLine::ForCurrentProcess()->HasSwitch( 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch switches::kEnablePepperTesting); 215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool ShellContentRendererClient::IsPluginAllowedToUseDevChannelAPIs() { 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return CommandLine::ForCurrentProcess()->HasSwitch( 219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch switches::kEnablePepperTesting); 220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 223