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() {