This source file includes following definitions.
- RenderThreadStarted
- RenderFrameCreated
- RenderViewCreated
- OverrideCreatePlugin
- OverrideCreateWebMediaStreamCenter
- OverrideCreateWebRTCPeerConnectionHandler
- OverrideCreateMIDIAccessor
- OverrideCreateAudioDevice
- OverrideWebClipboard
- OverrideThemeEngine
- WebTestProxyCreated
- AllowBrowserPlugin
#include "content/shell/renderer/shell_content_renderer_client.h"
#include "base/callback.h"
#include "base/command_line.h"
#include "base/debug/debugger.h"
#include "content/public/common/content_constants.h"
#include "content/public/common/content_switches.h"
#include "content/public/renderer/render_view.h"
#include "content/public/test/layouttest_support.h"
#include "content/shell/common/shell_switches.h"
#include "content/shell/renderer/shell_render_frame_observer.h"
#include "content/shell/renderer/shell_render_process_observer.h"
#include "content/shell/renderer/shell_render_view_observer.h"
#include "content/shell/renderer/test_runner/WebTestInterfaces.h"
#include "content/shell/renderer/test_runner/WebTestProxy.h"
#include "content/shell/renderer/test_runner/WebTestRunner.h"
#include "content/shell/renderer/webkit_test_runner.h"
#include "content/test/mock_webclipboard_impl.h"
#include "third_party/WebKit/public/platform/WebMediaStreamCenter.h"
#include "third_party/WebKit/public/web/WebPluginParams.h"
#include "third_party/WebKit/public/web/WebView.h"
#include "v8/include/v8.h"
using blink::WebAudioDevice;
using blink::WebClipboard;
using blink::WebFrame;
using blink::WebMIDIAccessor;
using blink::WebMIDIAccessorClient;
using blink::WebMediaStreamCenter;
using blink::WebMediaStreamCenterClient;
using blink::WebPlugin;
using blink::WebPluginParams;
using blink::WebRTCPeerConnectionHandler;
using blink::WebRTCPeerConnectionHandlerClient;
using blink::WebThemeEngine;
using WebTestRunner::WebTestDelegate;
using WebTestRunner::WebTestInterfaces;
using WebTestRunner::WebTestProxyBase;
namespace content {
ShellContentRendererClient::ShellContentRendererClient() {
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) {
EnableWebTestProxyCreation(
base::Bind(&ShellContentRendererClient::WebTestProxyCreated,
base::Unretained(this)));
}
}
ShellContentRendererClient::~ShellContentRendererClient() {
}
void ShellContentRendererClient::RenderThreadStarted() {
shell_observer_.reset(new ShellRenderProcessObserver());
#if defined(OS_MACOSX)
base::debug::BeingDebugged();
#endif
}
void ShellContentRendererClient::RenderFrameCreated(RenderFrame* render_frame) {
new ShellRenderFrameObserver(render_frame);
}
void ShellContentRendererClient::RenderViewCreated(RenderView* render_view) {
new ShellRenderViewObserver(render_view);
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree))
return;
WebKitTestRunner* test_runner = WebKitTestRunner::Get(render_view);
test_runner->Reset();
render_view->GetWebView()->setSpellCheckClient(
test_runner->proxy()->spellCheckClient());
WebTestDelegate* delegate =
ShellRenderProcessObserver::GetInstance()->test_delegate();
if (delegate == static_cast<WebTestDelegate*>(test_runner))
ShellRenderProcessObserver::GetInstance()->SetMainWindow(render_view);
}
bool ShellContentRendererClient::OverrideCreatePlugin(
RenderFrame* render_frame,
WebFrame* frame,
const WebPluginParams& params,
WebPlugin** plugin) {
std::string mime_type = params.mimeType.utf8();
if (mime_type == content::kBrowserPluginMimeType) {
return !CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableBrowserPluginForAllViewTypes);
}
return false;
}
WebMediaStreamCenter*
ShellContentRendererClient::OverrideCreateWebMediaStreamCenter(
WebMediaStreamCenterClient* client) {
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree))
return NULL;
#if defined(ENABLE_WEBRTC)
WebTestInterfaces* interfaces =
ShellRenderProcessObserver::GetInstance()->test_interfaces();
return interfaces->createMediaStreamCenter(client);
#else
return NULL;
#endif
}
WebRTCPeerConnectionHandler*
ShellContentRendererClient::OverrideCreateWebRTCPeerConnectionHandler(
WebRTCPeerConnectionHandlerClient* client) {
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree))
return NULL;
#if defined(ENABLE_WEBRTC)
WebTestInterfaces* interfaces =
ShellRenderProcessObserver::GetInstance()->test_interfaces();
return interfaces->createWebRTCPeerConnectionHandler(client);
#else
return NULL;
#endif
}
WebMIDIAccessor*
ShellContentRendererClient::OverrideCreateMIDIAccessor(
WebMIDIAccessorClient* client) {
WebTestInterfaces* interfaces =
ShellRenderProcessObserver::GetInstance()->test_interfaces();
return interfaces->createMIDIAccessor(client);
}
WebAudioDevice*
ShellContentRendererClient::OverrideCreateAudioDevice(
double sample_rate) {
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree))
return NULL;
WebTestInterfaces* interfaces =
ShellRenderProcessObserver::GetInstance()->test_interfaces();
return interfaces->createAudioDevice(sample_rate);
}
WebClipboard* ShellContentRendererClient::OverrideWebClipboard() {
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree))
return NULL;
if (!clipboard_)
clipboard_.reset(new MockWebClipboardImpl);
return clipboard_.get();
}
WebThemeEngine* ShellContentRendererClient::OverrideThemeEngine() {
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree))
return NULL;
return ShellRenderProcessObserver::GetInstance()->test_interfaces()
->themeEngine();
}
void ShellContentRendererClient::WebTestProxyCreated(RenderView* render_view,
WebTestProxyBase* proxy) {
WebKitTestRunner* test_runner = new WebKitTestRunner(render_view);
test_runner->set_proxy(proxy);
if (!ShellRenderProcessObserver::GetInstance()->test_delegate())
ShellRenderProcessObserver::GetInstance()->SetTestDelegate(test_runner);
proxy->setInterfaces(
ShellRenderProcessObserver::GetInstance()->test_interfaces());
test_runner->proxy()->setDelegate(
ShellRenderProcessObserver::GetInstance()->test_delegate());
}
bool ShellContentRendererClient::AllowBrowserPlugin(
blink::WebPluginContainer* container) {
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableBrowserPluginForAllViewTypes)) {
return true;
}
return ContentRendererClient::AllowBrowserPlugin(container);
}
}