Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / plugins / plugin_installer.cc
index e9322a9..7c5ae85 100644 (file)
@@ -8,66 +8,16 @@
 #include "base/bind_helpers.h"
 #include "base/process/process.h"
 #include "base/strings/stringprintf.h"
-#include "chrome/browser/download/download_service.h"
-#include "chrome/browser/download/download_service_factory.h"
 #include "chrome/browser/download/download_stats.h"
 #include "chrome/browser/platform_util.h"
 #include "chrome/browser/plugins/plugin_installer_observer.h"
-#include "chrome/browser/profiles/profile.h"
 #include "content/public/browser/browser_context.h"
-#include "content/public/browser/browser_thread.h"
 #include "content/public/browser/download_item.h"
-#include "content/public/browser/download_save_info.h"
+#include "content/public/browser/download_manager.h"
 #include "content/public/browser/download_url_parameters.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/resource_context.h"
-#include "content/public/browser/resource_dispatcher_host.h"
 #include "content/public/browser/web_contents.h"
-#include "content/public/common/referrer.h"
-#include "net/base/request_priority.h"
-#include "net/url_request/url_request.h"
-#include "net/url_request/url_request_context.h"
 
-using content::BrowserContext;
-using content::BrowserThread;
 using content::DownloadItem;
-using content::ResourceDispatcherHost;
-
-namespace {
-
-void BeginDownload(
-    const GURL& url,
-    content::ResourceContext* resource_context,
-    int render_process_host_id,
-    int render_view_host_routing_id,
-    const ResourceDispatcherHost::DownloadStartedCallback& callback) {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-
-  ResourceDispatcherHost* rdh = ResourceDispatcherHost::Get();
-  scoped_ptr<net::URLRequest> request(
-      resource_context->GetRequestContext()->CreateRequest(
-          url, net::DEFAULT_PRIORITY, NULL, NULL));
-  content::DownloadInterruptReason error = rdh->BeginDownload(
-      request.Pass(),
-      content::Referrer(),
-      false,  // is_content_initiated
-      resource_context,
-      render_process_host_id,
-      render_view_host_routing_id,
-      true,  // prefer_cache
-      scoped_ptr<content::DownloadSaveInfo>(new content::DownloadSaveInfo()),
-      content::DownloadItem::kInvalidId,
-      callback);
-
-  if (error != content::DOWNLOAD_INTERRUPT_REASON_NONE) {
-    BrowserThread::PostTask(
-        BrowserThread::UI, FROM_HERE,
-        base::Bind(callback, static_cast<DownloadItem*>(NULL), error));
-  }
-}
-
-}  // namespace
 
 PluginInstaller::PluginInstaller()
     : state_(INSTALLER_STATE_IDLE),
@@ -137,28 +87,33 @@ void PluginInstaller::RemoveWeakObserver(
 
 void PluginInstaller::StartInstalling(const GURL& plugin_url,
                                       content::WebContents* web_contents) {
+  content::DownloadManager* download_manager =
+      content::BrowserContext::GetDownloadManager(
+          web_contents->GetBrowserContext());
+  StartInstallingWithDownloadManager(
+      plugin_url, web_contents, download_manager);
+}
+
+void PluginInstaller::StartInstallingWithDownloadManager(
+    const GURL& plugin_url,
+    content::WebContents* web_contents,
+    content::DownloadManager* download_manager) {
   DCHECK_EQ(INSTALLER_STATE_IDLE, state_);
   state_ = INSTALLER_STATE_DOWNLOADING;
   FOR_EACH_OBSERVER(PluginInstallerObserver, observers_, DownloadStarted());
-  Profile* profile =
-      Profile::FromBrowserContext(web_contents->GetBrowserContext());
+  scoped_ptr<content::DownloadUrlParameters> download_parameters(
+      content::DownloadUrlParameters::FromWebContents(web_contents,
+                                                      plugin_url));
+  download_parameters->set_callback(
+      base::Bind(&PluginInstaller::DownloadStarted, base::Unretained(this)));
   RecordDownloadSource(DOWNLOAD_INITIATED_BY_PLUGIN_INSTALLER);
-  BrowserThread::PostTask(
-      BrowserThread::IO, FROM_HERE,
-      base::Bind(&BeginDownload,
-                 plugin_url,
-                 profile->GetResourceContext(),
-                 web_contents->GetRenderProcessHost()->GetID(),
-                 web_contents->GetRenderViewHost()->GetRoutingID(),
-                 base::Bind(&PluginInstaller::DownloadStarted,
-                            base::Unretained(this))));
+  download_manager->DownloadUrl(download_parameters.Pass());
 }
 
 void PluginInstaller::DownloadStarted(
     content::DownloadItem* item,
     content::DownloadInterruptReason interrupt_reason) {
-  if (!item) {
-    DCHECK_NE(content::DOWNLOAD_INTERRUPT_REASON_NONE, interrupt_reason);
+  if (interrupt_reason != content::DOWNLOAD_INTERRUPT_REASON_NONE) {
     std::string msg = base::StringPrintf(
         "Error %d: %s",
         interrupt_reason,
@@ -166,7 +121,6 @@ void PluginInstaller::DownloadStarted(
     DownloadError(msg);
     return;
   }
-  DCHECK_EQ(content::DOWNLOAD_INTERRUPT_REASON_NONE, interrupt_reason);
   item->SetOpenWhenComplete(true);
   item->AddObserver(this);
 }