Index: content/browser/utility_process_host.h |
diff --git a/content/browser/utility_process_host.h b/content/browser/utility_process_host.h |
index 779c8499f10b31d122de37739e45709315195b30..ef28fecd5a38f19378f5fe7eeff0ac2eb780189f 100644 |
--- a/content/browser/utility_process_host.h |
+++ b/content/browser/utility_process_host.h |
@@ -12,6 +12,7 @@ |
#include "base/basictypes.h" |
#include "base/memory/ref_counted.h" |
#include "base/process_util.h" |
+#include "base/memory/weak_ptr.h" |
#include "content/common/content_export.h" |
#include "content/public/browser/browser_child_process_host_delegate.h" |
#include "content/public/browser/browser_thread.h" |
@@ -26,9 +27,14 @@ class BrowserChildProcessHostImpl; |
// If you need multiple batches of work to be done in the sandboxed process, |
// use StartBatchMode(), then multiple calls to StartFooBar(p), |
// then finish with EndBatchMode(). |
+// |
+// Note: If you keep a ptr to an object of this class that is used in a task |
jam
2012/01/26 23:32:15
nit: i think what you want to say here is that if
|
+// other than the one in which it was created, grab a weak ptr to it to avoid |
+// a use after free. See http://crbug.com/108871. |
class CONTENT_EXPORT UtilityProcessHost |
: public content::BrowserChildProcessHostDelegate, |
- public IPC::Message::Sender { |
+ public IPC::Message::Sender, |
+ public base::SupportsWeakPtr<UtilityProcessHost> { |
public: |
// An interface to be implemented by consumers of the utility process to |
// get results back. All functions are called on the thread passed along |