1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/download/download_file.h"
6
7#include <string>
8
9#include "base/file_util.h"
10#include "base/stringprintf.h"
11#include "chrome/browser/download/download_manager.h"
12#include "chrome/browser/download/download_util.h"
13#include "chrome/browser/history/download_create_info.h"
14#include "content/browser/browser_thread.h"
15
16DownloadFile::DownloadFile(const DownloadCreateInfo* info,
17                           DownloadManager* download_manager)
18    : BaseFile(info->save_info.file_path,
19               info->url(),
20               info->referrer_url,
21               info->received_bytes,
22               info->save_info.file_stream),
23      id_(info->download_id),
24      child_id_(info->child_id),
25      request_id_(info->request_id),
26      download_manager_(download_manager) {
27  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
28
29}
30
31DownloadFile::~DownloadFile() {
32  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
33}
34
35void DownloadFile::CancelDownloadRequest(ResourceDispatcherHost* rdh) {
36  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
37  BrowserThread::PostTask(
38      BrowserThread::IO, FROM_HERE,
39      NewRunnableFunction(&download_util::CancelDownloadRequest,
40                          rdh,
41                          child_id_,
42                          request_id_));
43}
44
45DownloadManager* DownloadFile::GetDownloadManager() {
46  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
47  return download_manager_.get();
48}
49
50std::string DownloadFile::DebugString() const {
51  return base::StringPrintf("{"
52                            " full_path_ = " "\"%s\""
53                            " id_ = " "%d"
54                            " child_id_ = " "%d"
55                            " request_id_ = " "%d"
56                            " Base File = %s"
57                            " }",
58                            full_path_.value().c_str(),
59                            id_,
60                            child_id_,
61                            request_id_,
62                            BaseFile::DebugString().c_str());
63}
64