Index: chrome/browser/extensions/extension_function.cc |
diff --git a/chrome/browser/extensions/extension_function.cc b/chrome/browser/extensions/extension_function.cc |
index 72728aa2e2c7cfc304cf25a1ac29bcfdbd8e9cab..f708741888dd9b503075f23406e90633ba1edb60 100644 |
--- a/chrome/browser/extensions/extension_function.cc |
+++ b/chrome/browser/extensions/extension_function.cc |
@@ -43,6 +43,25 @@ void UIThreadExtensionFunction::RenderViewHostTracker::Observe( |
function_->SetRenderViewHost(NULL); |
} |
+UIThreadExtensionFunction::ExtensionRenderViewHostObserver:: |
+ ExtensionRenderViewHostObserver(UIThreadExtensionFunction* function, |
+ RenderViewHost* render_view_host) |
+ : RenderViewHostObserver(render_view_host), |
+ function_(function) { |
+} |
+ |
+void UIThreadExtensionFunction::ExtensionRenderViewHostObserver:: |
+ RenderViewHostDestroyed(RenderViewHost* render_view_host) { |
+ // Default behavior is to delete this. |
asargent_no_longer_on_chrome
2011/11/15 18:56:31
This comment is kind of confusing - do you mean th
Jay Civelli
2011/11/18 23:14:32
Yes. Clarified comment.
|
+ // In our case, we'll be deleted when the UIThreadExtensionFunction containing |
+ // us goes away. |
+} |
+ |
+bool UIThreadExtensionFunction::ExtensionRenderViewHostObserver:: |
+ OnMessageReceived(const IPC::Message& message) { |
+ return function_->OnMessageReceivedFromRenderView(message); |
+} |
+ |
ExtensionFunction::ExtensionFunction() |
: request_id_(-1), |
profile_id_(NULL), |
@@ -139,6 +158,11 @@ UIThreadExtensionFunction::AsUIThreadExtensionFunction() { |
return this; |
} |
+bool UIThreadExtensionFunction::OnMessageReceivedFromRenderView( |
+ const IPC::Message& message) { |
+ return false; |
+} |
+ |
void UIThreadExtensionFunction::Destruct() const { |
BrowserThread::DeleteOnUIThread::Destruct(this); |
} |
@@ -146,6 +170,8 @@ void UIThreadExtensionFunction::Destruct() const { |
void UIThreadExtensionFunction::SetRenderViewHost( |
RenderViewHost* render_view_host) { |
render_view_host_ = render_view_host; |
+ render_view_host_observer_.reset(render_view_host_ ? |
+ new ExtensionRenderViewHostObserver(this, render_view_host) : NULL); |
tracker_.reset(render_view_host ? new RenderViewHostTracker(this) : NULL); |
} |