Delete the temporary file when generating MHTML with the extension API.
We now delete the temporary file created when generating MHTML from the
extension API.
BUG=97489
TEST=The MHTML extension API should still work.
Review URL: http://codereview.chromium.org/8530003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111180 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_function.cc b/chrome/browser/extensions/extension_function.cc
index 2bd3b72..256862f 100644
--- a/chrome/browser/extensions/extension_function.cc
+++ b/chrome/browser/extensions/extension_function.cc
@@ -26,8 +26,10 @@
}
UIThreadExtensionFunction::RenderViewHostTracker::RenderViewHostTracker(
- UIThreadExtensionFunction* function)
- : function_(function) {
+ UIThreadExtensionFunction* function,
+ RenderViewHost* render_view_host)
+ : RenderViewHostObserver(render_view_host),
+ function_(function) {
registrar_.Add(this,
content::NOTIFICATION_RENDER_VIEW_HOST_DELETED,
content::Source<RenderViewHost>(function->render_view_host()));
@@ -43,6 +45,18 @@
function_->SetRenderViewHost(NULL);
}
+void UIThreadExtensionFunction::RenderViewHostTracker::RenderViewHostDestroyed(
+ RenderViewHost* render_view_host) {
+ // Overidding the default behavior of RenderViewHostObserver which is to
+ // delete this. In our case, we'll be deleted when the
+ // UIThreadExtensionFunction that contains us goes away.
+}
+
+bool UIThreadExtensionFunction::RenderViewHostTracker::OnMessageReceived(
+ const IPC::Message& message) {
+ return function_->OnMessageReceivedFromRenderView(message);
+}
+
ExtensionFunction::ExtensionFunction()
: request_id_(-1),
profile_id_(NULL),
@@ -139,6 +153,11 @@
return this;
}
+bool UIThreadExtensionFunction::OnMessageReceivedFromRenderView(
+ const IPC::Message& message) {
+ return false;
+}
+
void UIThreadExtensionFunction::Destruct() const {
BrowserThread::DeleteOnUIThread::Destruct(this);
}
@@ -146,7 +165,8 @@
void UIThreadExtensionFunction::SetRenderViewHost(
RenderViewHost* render_view_host) {
render_view_host_ = render_view_host;
- tracker_.reset(render_view_host ? new RenderViewHostTracker(this) : NULL);
+ tracker_.reset(render_view_host ?
+ new RenderViewHostTracker(this, render_view_host) : NULL);
}
Browser* UIThreadExtensionFunction::GetCurrentBrowser() {