Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(865)

Unified Diff: content/browser/renderer_host/mock_render_process_host.cc

Issue 8515027: Define the public version of the browser side RenderProcessHost interface. This interface is not ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/mock_render_process_host.cc
===================================================================
--- content/browser/renderer_host/mock_render_process_host.cc (revision 110571)
+++ content/browser/renderer_host/mock_render_process_host.cc (working copy)
@@ -4,24 +4,46 @@
#include "content/browser/renderer_host/mock_render_process_host.h"
+#include "base/lazy_instance.h"
+#include "base/message_loop.h"
+#include "base/time.h"
#include "content/browser/child_process_security_policy.h"
+#include "content/common/child_process_info.h"
+#include "content/public/browser/notification_service.h"
+#include "content/public/browser/notification_types.h"
+// This map is the global list of all renderer processes and is defined in
+// render_process_host_impl.cc
+// TODO(ananta)
+// Clean up this dependency in a subsequent CL.
+extern base::LazyInstance<
+ IDMap<content::RenderProcessHost>,
+ base::LeakyLazyInstanceTraits<IDMap<content::RenderProcessHost> > >
+ g_all_hosts;
+
MockRenderProcessHost::MockRenderProcessHost(
content::BrowserContext* browser_context)
- : RenderProcessHost(browser_context),
- transport_dib_(NULL),
+ : transport_dib_(NULL),
bad_msg_count_(0),
- factory_(NULL) {
+ factory_(NULL),
+ id_(ChildProcessInfo::GenerateChildProcessUniqueId()),
+ browser_context_(browser_context),
+ max_page_id_(-1),
+ fast_shutdown_started_(false) {
// Child process security operations can't be unit tested unless we add
// ourselves as an existing child process.
- ChildProcessSecurityPolicy::GetInstance()->Add(id());
+ ChildProcessSecurityPolicy::GetInstance()->Add(GetID());
+ g_all_hosts.Get().AddWithID(this, GetID());
}
MockRenderProcessHost::~MockRenderProcessHost() {
- ChildProcessSecurityPolicy::GetInstance()->Remove(id());
+ ChildProcessSecurityPolicy::GetInstance()->Remove(GetID());
delete transport_dib_;
if (factory_)
factory_->Remove(this);
+ // In unit tests, Release() might not have been called.
+ if (g_all_hosts.Get().Lookup(GetID()))
+ g_all_hosts.Get().Remove(GetID());
}
void MockRenderProcessHost::EnableSendQueue() {
@@ -70,7 +92,6 @@
void MockRenderProcessHost::AddWord(const string16& word) {
}
-
bool MockRenderProcessHost::FastShutdownIfPossible() {
// We aren't actually going to do anything, but set |fast_shutdown_started_|
// to true so that tests know we've been called.
@@ -78,6 +99,10 @@
return true;
}
+bool MockRenderProcessHost::FastShutdownStarted() const {
+ return fast_shutdown_started_;
+}
+
void MockRenderProcessHost::DumpHandles() {
}
@@ -116,6 +141,92 @@
gfx::PluginWindowHandle compositing_surface) {
}
+int MockRenderProcessHost::GetID() const {
+ return id_;
+}
+
+bool MockRenderProcessHost::HasConnection() const {
+ return true;
+}
+
+void MockRenderProcessHost::SetIgnoreInputEvents(bool ignore_input_events) {
+}
+
+bool MockRenderProcessHost::IgnoreInputEvents() const {
+ return false;
+}
+
+void MockRenderProcessHost::Attach(IPC::Channel::Listener* listener,
+ int routing_id) {
+ listeners_.AddWithID(listener, routing_id);
+}
+
+void MockRenderProcessHost::Release(int listener_id) {
+ listeners_.Remove(listener_id);
+ Cleanup();
+}
+
+void MockRenderProcessHost::Cleanup() {
+ if (listeners_.IsEmpty()) {
+ content::NotificationService::current()->Notify(
+ content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
+ content::Source<RenderProcessHost>(this),
+ content::NotificationService::NoDetails());
+ MessageLoop::current()->DeleteSoon(FROM_HERE, this);
+ g_all_hosts.Get().Remove(GetID());
+ }
+}
+
+void MockRenderProcessHost::ReportExpectingClose(int32 listener_id) {
+}
+
+void MockRenderProcessHost::AddPendingView() {
+}
+
+void MockRenderProcessHost::RemovePendingView() {
+}
+
+void MockRenderProcessHost::SetSuddenTerminationAllowed(bool allowed) {
+}
+
+bool MockRenderProcessHost::SuddenTerminationAllowed() const {
+ return true;
+}
+
+IPC::Channel::Listener* MockRenderProcessHost::GetListenerByID(
+ int routing_id) {
+ return listeners_.Lookup(routing_id);
+}
+
+void MockRenderProcessHost::UpdateMaxPageID(int32 page_id) {
+ if (page_id > max_page_id_)
+ max_page_id_ = page_id;
+}
+
+content::BrowserContext* MockRenderProcessHost::GetBrowserContext() const {
+ return browser_context_;
+}
+
+IPC::ChannelProxy* MockRenderProcessHost::GetChannel() {
+ return NULL;
+}
+
+bool MockRenderProcessHost::FastShutdownForPageCount(size_t count) {
+ if (listeners_.size() == count)
+ return FastShutdownIfPossible();
+ return false;
+}
+
+base::TimeDelta MockRenderProcessHost::GetChildProcessIdleTime() const {
+ return base::TimeDelta::FromMilliseconds(0);
+}
+
+content::RenderProcessHost::listeners_iterator
+ MockRenderProcessHost::ListenersIterator() {
+ IDMap<IPC::Channel::Listener> listeners;
+ return listeners_iterator(&listeners);
+}
+
bool MockRenderProcessHost::OnMessageReceived(const IPC::Message& msg) {
return false;
}
@@ -134,8 +245,9 @@
}
}
-RenderProcessHost* MockRenderProcessHostFactory::CreateRenderProcessHost(
- content::BrowserContext* browser_context) const {
+content::RenderProcessHost*
+ MockRenderProcessHostFactory::CreateRenderProcessHost(
+ content::BrowserContext* browser_context) const {
MockRenderProcessHost* host = new MockRenderProcessHost(browser_context);
if (host) {
processes_.push_back(host);
« no previous file with comments | « content/browser/renderer_host/mock_render_process_host.h ('k') | content/browser/renderer_host/pepper_file_message_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698