summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/mock_render_process_host.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/renderer_host/mock_render_process_host.cc')
-rw-r--r--chrome/browser/renderer_host/mock_render_process_host.cc40
1 files changed, 36 insertions, 4 deletions
diff --git a/chrome/browser/renderer_host/mock_render_process_host.cc b/chrome/browser/renderer_host/mock_render_process_host.cc
index 21fa34d..cdecb6f 100644
--- a/chrome/browser/renderer_host/mock_render_process_host.cc
+++ b/chrome/browser/renderer_host/mock_render_process_host.cc
@@ -9,7 +9,8 @@
MockRenderProcessHost::MockRenderProcessHost(Profile* profile)
: RenderProcessHost(profile),
transport_dib_(NULL),
- bad_msg_count_(0) {
+ bad_msg_count_(0),
+ factory_(NULL) {
// Child process security operations can't be unit tested unless we add
// ourselves as an existing child process.
ChildProcessSecurityPolicy::GetInstance()->Add(id());
@@ -18,10 +19,12 @@ MockRenderProcessHost::MockRenderProcessHost(Profile* profile)
MockRenderProcessHost::~MockRenderProcessHost() {
ChildProcessSecurityPolicy::GetInstance()->Remove(id());
delete transport_dib_;
+ if (factory_)
+ factory_->Remove(this);
}
-bool MockRenderProcessHost::Init(bool is_extensions_process,
- URLRequestContextGetter* request_context) {
+bool MockRenderProcessHost::Init(
+ bool is_accessibility_enabled, bool is_extensions_process) {
return true;
}
@@ -103,7 +106,7 @@ TransportDIB* MockRenderProcessHost::GetTransportDIB(TransportDIB::Id dib_id) {
// On Mac, TransportDIBs are always created in the browser, so we cannot map
// one from a dib_id.
transport_dib_ = TransportDIB::Create(100 * 100 * 4, 0);
-#elif defined(OS_LINUX)
+#elif defined(OS_POSIX)
transport_dib_ = TransportDIB::Map(dib_id);
#endif
@@ -115,3 +118,32 @@ void MockRenderProcessHost::OnMessageReceived(const IPC::Message& msg) {
void MockRenderProcessHost::OnChannelConnected(int32 peer_pid) {
}
+
+MockRenderProcessHostFactory::~MockRenderProcessHostFactory() {
+ // Detach this object from MockRenderProcesses to prevent STLDeleteElements()
+ // from calling MockRenderProcessHostFactory::Remove().
+ for (ScopedVector<MockRenderProcessHost>::iterator it = processes_.begin();
+ it != processes_.end(); ++it) {
+ (*it)->SetFactory(NULL);
+ }
+}
+
+RenderProcessHost* MockRenderProcessHostFactory::CreateRenderProcessHost(
+ Profile* profile) const {
+ MockRenderProcessHost* host = new MockRenderProcessHost(profile);
+ if (host) {
+ processes_.push_back(host);
+ host->SetFactory(this);
+ }
+ return host;
+}
+
+void MockRenderProcessHostFactory::Remove(MockRenderProcessHost* host) const {
+ for (ScopedVector<MockRenderProcessHost>::iterator it = processes_.begin();
+ it != processes_.end(); ++it) {
+ if (*it == host) {
+ processes_.weak_erase(it);
+ break;
+ }
+ }
+}