summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/render_process_host.cc
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-12 01:55:13 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-12 01:55:13 +0000
commit4566f13fe843c0821dbce19d7ea5e8aece8afe4a (patch)
tree586c6006431604f6b159daca30fcdfe4913ad996 /chrome/browser/renderer_host/render_process_host.cc
parent3f366001f70b1ef4b8884796970cefb0769c469f (diff)
downloadchromium_src-4566f13fe843c0821dbce19d7ea5e8aece8afe4a.zip
chromium_src-4566f13fe843c0821dbce19d7ea5e8aece8afe4a.tar.gz
chromium_src-4566f13fe843c0821dbce19d7ea5e8aece8afe4a.tar.bz2
Stop having renderers use both pids and a monotonically increasing "host_id". This allows ResourceDispatcher to be used by child processes other than renderers. I've done minor related cleanup on the way to make the code simpler.
Review URL: http://codereview.chromium.org/42054 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11509 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host/render_process_host.cc')
-rw-r--r--chrome/browser/renderer_host/render_process_host.cc20
1 files changed, 12 insertions, 8 deletions
diff --git a/chrome/browser/renderer_host/render_process_host.cc b/chrome/browser/renderer_host/render_process_host.cc
index ad44ac8..8cafe1e 100644
--- a/chrome/browser/renderer_host/render_process_host.cc
+++ b/chrome/browser/renderer_host/render_process_host.cc
@@ -52,8 +52,6 @@ unsigned int GetMaxRendererProcessCount() {
// Returns true if the given host is suitable for launching a new view
// associated with the given profile.
-// TODO(jabdelmalek): do we want to avoid processes with hung renderers
-// or with a large memory consumption?
static bool IsSuitableHost(Profile* profile, RenderProcessHost* host) {
return host->profile() == profile;
}
@@ -68,8 +66,8 @@ bool RenderProcessHost::run_renderer_in_process_ = false;
RenderProcessHost::RenderProcessHost(Profile* profile)
: max_page_id_(-1),
notified_termination_(false),
+ pid_(-1),
profile_(profile) {
- host_id_ = all_hosts.Add(this);
}
RenderProcessHost::~RenderProcessHost() {
@@ -97,7 +95,10 @@ void RenderProcessHost::Release(int listener_id) {
Details<bool>(&close_expected));
notified_termination_ = true;
}
- Unregister();
+ if (pid_ >= 0) {
+ all_hosts.Remove(pid_);
+ pid_ = -1;
+ }
MessageLoop::current()->DeleteSoon(FROM_HERE, this);
}
}
@@ -167,9 +168,12 @@ RenderProcessHost* RenderProcessHost::GetExistingProcessHost(Profile* profile) {
return NULL;
}
-void RenderProcessHost::Unregister() {
- if (host_id_ >= 0) {
- all_hosts.Remove(host_id_);
- host_id_ = -1;
+void RenderProcessHost::SetProcessID(int pid) {
+ if (pid_ != -1) {
+ // This object is being reused after a renderer crash. Remove the old pid.
+ all_hosts.Remove(pid_);
}
+
+ pid_ = pid;
+ all_hosts.AddWithID(this, pid);
}