OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_BROWSER_DOWNLOAD_BASE_FILE_H_ | 5 #ifndef CONTENT_BROWSER_DOWNLOAD_BASE_FILE_H_ |
6 #define CONTENT_BROWSER_DOWNLOAD_BASE_FILE_H_ | 6 #define CONTENT_BROWSER_DOWNLOAD_BASE_FILE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 // File being downloaded and saved to disk. This is a base class | 28 // File being downloaded and saved to disk. This is a base class |
29 // for DownloadFile and SaveFile, which keep more state information. | 29 // for DownloadFile and SaveFile, which keep more state information. |
30 class CONTENT_EXPORT BaseFile { | 30 class CONTENT_EXPORT BaseFile { |
31 public: | 31 public: |
32 BaseFile(const FilePath& full_path, | 32 BaseFile(const FilePath& full_path, |
33 const GURL& source_url, | 33 const GURL& source_url, |
34 const GURL& referrer_url, | 34 const GURL& referrer_url, |
35 int64 received_bytes, | 35 int64 received_bytes, |
36 bool calculate_hash, | 36 bool calculate_hash, |
37 const std::string& hash_state, | 37 const std::string& hash_state, |
38 const linked_ptr<net::FileStream>& file_stream, | 38 scoped_ptr<net::FileStream> file_stream, |
39 const net::BoundNetLog& bound_net_log); | 39 const net::BoundNetLog& bound_net_log); |
40 virtual ~BaseFile(); | 40 virtual ~BaseFile(); |
41 | 41 |
42 // Returns net::OK on success, or a network error code on failure. | 42 // Returns net::OK on success, or a network error code on failure. |
43 // |default_directory| specifies the directory to create the temporary file in | 43 // |default_directory| specifies the directory to create the temporary file in |
44 // if |full_path()| is empty. If |default_directory| and |full_path()| are | 44 // if |full_path()| is empty. If |default_directory| and |full_path()| are |
45 // empty, then a temporary file will be created in the default download | 45 // empty, then a temporary file will be created in the default download |
46 // location as determined by ContentBrowserClient. | 46 // location as determined by ContentBrowserClient. |
47 net::Error Initialize(const FilePath& default_directory); | 47 net::Error Initialize(const FilePath& default_directory); |
48 | 48 |
(...skipping 15 matching lines...) Expand all Loading... |
64 // Indicate that the download has finished. No new data will be received. | 64 // Indicate that the download has finished. No new data will be received. |
65 void Finish(); | 65 void Finish(); |
66 | 66 |
67 // Informs the OS that this file came from the internet. | 67 // Informs the OS that this file came from the internet. |
68 void AnnotateWithSourceInformation(); | 68 void AnnotateWithSourceInformation(); |
69 | 69 |
70 // Calculate and return the current speed in bytes per second. | 70 // Calculate and return the current speed in bytes per second. |
71 int64 CurrentSpeed() const; | 71 int64 CurrentSpeed() const; |
72 | 72 |
73 FilePath full_path() const { return full_path_; } | 73 FilePath full_path() const { return full_path_; } |
74 bool in_progress() const { return file_stream_ != NULL; } | 74 bool in_progress() const { return file_stream_.get() != NULL; } |
75 int64 bytes_so_far() const { return bytes_so_far_; } | 75 int64 bytes_so_far() const { return bytes_so_far_; } |
76 | 76 |
77 // Fills |hash| with the hash digest for the file. | 77 // Fills |hash| with the hash digest for the file. |
78 // Returns true if digest is successfully calculated. | 78 // Returns true if digest is successfully calculated. |
79 virtual bool GetHash(std::string* hash); | 79 virtual bool GetHash(std::string* hash); |
80 | 80 |
81 // Returns the current (intermediate) state of the hash as a byte string. | 81 // Returns the current (intermediate) state of the hash as a byte string. |
82 virtual std::string GetHashState(); | 82 virtual std::string GetHashState(); |
83 | 83 |
84 // Returns true if the given hash is considered empty. An empty hash is | 84 // Returns true if the given hash is considered empty. An empty hash is |
(...skipping 27 matching lines...) Expand all Loading... |
112 static const size_t kSha256HashLen = 32; | 112 static const size_t kSha256HashLen = 32; |
113 static const unsigned char kEmptySha256Hash[kSha256HashLen]; | 113 static const unsigned char kEmptySha256Hash[kSha256HashLen]; |
114 | 114 |
115 // Source URL for the file being downloaded. | 115 // Source URL for the file being downloaded. |
116 GURL source_url_; | 116 GURL source_url_; |
117 | 117 |
118 // The URL where the download was initiated. | 118 // The URL where the download was initiated. |
119 GURL referrer_url_; | 119 GURL referrer_url_; |
120 | 120 |
121 // OS file stream for writing | 121 // OS file stream for writing |
122 linked_ptr<net::FileStream> file_stream_; | 122 scoped_ptr<net::FileStream> file_stream_; |
123 | 123 |
124 // Amount of data received up so far, in bytes. | 124 // Amount of data received up so far, in bytes. |
125 int64 bytes_so_far_; | 125 int64 bytes_so_far_; |
126 | 126 |
127 // Start time for calculating speed. | 127 // Start time for calculating speed. |
128 base::TimeTicks start_tick_; | 128 base::TimeTicks start_tick_; |
129 | 129 |
130 // Indicates if hash should be calculated for the file. | 130 // Indicates if hash should be calculated for the file. |
131 bool calculate_hash_; | 131 bool calculate_hash_; |
132 | 132 |
133 // Used to calculate hash for the file when calculate_hash_ | 133 // Used to calculate hash for the file when calculate_hash_ |
134 // is set. | 134 // is set. |
135 scoped_ptr<crypto::SecureHash> secure_hash_; | 135 scoped_ptr<crypto::SecureHash> secure_hash_; |
136 | 136 |
137 unsigned char sha256_hash_[kSha256HashLen]; | 137 unsigned char sha256_hash_[kSha256HashLen]; |
138 | 138 |
139 // Indicates that this class no longer owns the associated file, and so | 139 // Indicates that this class no longer owns the associated file, and so |
140 // won't delete it on destruction. | 140 // won't delete it on destruction. |
141 bool detached_; | 141 bool detached_; |
142 | 142 |
143 net::BoundNetLog bound_net_log_; | 143 net::BoundNetLog bound_net_log_; |
144 | 144 |
145 DISALLOW_COPY_AND_ASSIGN(BaseFile); | 145 DISALLOW_COPY_AND_ASSIGN(BaseFile); |
146 }; | 146 }; |
147 | 147 |
148 #endif // CONTENT_BROWSER_DOWNLOAD_BASE_FILE_H_ | 148 #endif // CONTENT_BROWSER_DOWNLOAD_BASE_FILE_H_ |
OLD | NEW |