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 // File method ordering: Methods in this file are in the same order as | 5 // File method ordering: Methods in this file are in the same order as |
6 // in download_item_impl.h, with the following exception: The public | 6 // in download_item_impl.h, with the following exception: The public |
7 // interface Start is placed in chronological order with the other | 7 // interface Start is placed in chronological order with the other |
8 // (private) routines that together define a DownloadItem's state | 8 // (private) routines that together define a DownloadItem's state |
9 // transitions as the download progresses. See "Download progression | 9 // transitions as the download progresses. See "Download progression |
10 // cascade" later in this file. | 10 // cascade" later in this file. |
(...skipping 1147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1158 OnAllDataSaved(total_bytes, std::move(secure_hash)); | 1158 OnAllDataSaved(total_bytes, std::move(secure_hash)); |
1159 MaybeCompleteDownload(); | 1159 MaybeCompleteDownload(); |
1160 } | 1160 } |
1161 | 1161 |
1162 // **** Download progression cascade | 1162 // **** Download progression cascade |
1163 | 1163 |
1164 void DownloadItemImpl::Init(bool active, | 1164 void DownloadItemImpl::Init(bool active, |
1165 DownloadType download_type) { | 1165 DownloadType download_type) { |
1166 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1166 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1167 | 1167 |
1168 if (active) | |
1169 RecordDownloadCount(START_COUNT); | |
1170 | |
1171 std::string file_name; | 1168 std::string file_name; |
1172 if (download_type == SRC_HISTORY_IMPORT) { | 1169 if (download_type == SRC_HISTORY_IMPORT) { |
1173 // target_path_ works for History and Save As versions. | 1170 // target_path_ works for History and Save As versions. |
1174 file_name = target_path_.AsUTF8Unsafe(); | 1171 file_name = target_path_.AsUTF8Unsafe(); |
1175 } else { | 1172 } else { |
1176 // See if it's set programmatically. | 1173 // See if it's set programmatically. |
1177 file_name = forced_file_path_.AsUTF8Unsafe(); | 1174 file_name = forced_file_path_.AsUTF8Unsafe(); |
1178 // Possibly has a 'download' attribute for the anchor. | 1175 // Possibly has a 'download' attribute for the anchor. |
1179 if (file_name.empty()) | 1176 if (file_name.empty()) |
1180 file_name = suggested_filename_; | 1177 file_name = suggested_filename_; |
(...skipping 16 matching lines...) Expand all Loading... |
1197 } | 1194 } |
1198 | 1195 |
1199 // We're starting the download. | 1196 // We're starting the download. |
1200 void DownloadItemImpl::Start( | 1197 void DownloadItemImpl::Start( |
1201 std::unique_ptr<DownloadFile> file, | 1198 std::unique_ptr<DownloadFile> file, |
1202 std::unique_ptr<DownloadRequestHandleInterface> req_handle, | 1199 std::unique_ptr<DownloadRequestHandleInterface> req_handle, |
1203 const DownloadCreateInfo& new_create_info) { | 1200 const DownloadCreateInfo& new_create_info) { |
1204 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1201 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1205 DCHECK(!download_file_.get()); | 1202 DCHECK(!download_file_.get()); |
1206 DVLOG(20) << __func__ << "() this=" << DebugString(true); | 1203 DVLOG(20) << __func__ << "() this=" << DebugString(true); |
| 1204 RecordDownloadCount(START_COUNT); |
1207 | 1205 |
1208 download_file_ = std::move(file); | 1206 download_file_ = std::move(file); |
1209 job_ = DownloadJobFactory::CreateJob(this, std::move(req_handle), | 1207 job_ = DownloadJobFactory::CreateJob(this, std::move(req_handle), |
1210 new_create_info); | 1208 new_create_info); |
1211 destination_error_ = DOWNLOAD_INTERRUPT_REASON_NONE; | 1209 destination_error_ = DOWNLOAD_INTERRUPT_REASON_NONE; |
1212 | 1210 |
1213 if (state_ == CANCELLED_INTERNAL) { | 1211 if (state_ == CANCELLED_INTERNAL) { |
1214 // The download was in the process of resuming when it was cancelled. Don't | 1212 // The download was in the process of resuming when it was cancelled. Don't |
1215 // proceed. | 1213 // proceed. |
1216 ReleaseDownloadFile(true); | 1214 ReleaseDownloadFile(true); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 | 1256 |
1259 // Otherwise, this was a resumption attempt which ended with an | 1257 // Otherwise, this was a resumption attempt which ended with an |
1260 // interruption. Continue with current target path. | 1258 // interruption. Continue with current target path. |
1261 TransitionTo(TARGET_RESOLVED_INTERNAL); | 1259 TransitionTo(TARGET_RESOLVED_INTERNAL); |
1262 InterruptWithPartialState( | 1260 InterruptWithPartialState( |
1263 offset, std::move(hash_state), new_create_info.result); | 1261 offset, std::move(hash_state), new_create_info.result); |
1264 UpdateObservers(); | 1262 UpdateObservers(); |
1265 return; | 1263 return; |
1266 } | 1264 } |
1267 | 1265 |
| 1266 if (state_ == INITIAL_INTERNAL) { |
| 1267 RecordDownloadCount(NEW_DOWNLOAD_COUNT); |
| 1268 RecordDownloadMimeType(mime_type_); |
| 1269 if (!GetBrowserContext()->IsOffTheRecord()) { |
| 1270 RecordDownloadCount(NEW_DOWNLOAD_COUNT_NORMAL_PROFILE); |
| 1271 RecordDownloadMimeTypeForNormalProfile(mime_type_); |
| 1272 } |
| 1273 } |
| 1274 |
1268 // Successful download start. | 1275 // Successful download start. |
1269 DCHECK(download_file_); | 1276 DCHECK(download_file_); |
1270 DCHECK(job_); | 1277 DCHECK(job_); |
1271 | 1278 |
1272 if (state_ == RESUMING_INTERNAL) | 1279 if (state_ == RESUMING_INTERNAL) |
1273 UpdateValidatorsOnResumption(new_create_info); | 1280 UpdateValidatorsOnResumption(new_create_info); |
1274 | 1281 |
1275 if (state_ == INITIAL_INTERNAL && job_->UsesParallelRequests()) | 1282 if (state_ == INITIAL_INTERNAL && job_->UsesParallelRequests()) |
1276 RecordDownloadCount(USES_PARALLEL_REQUESTS); | 1283 RecordDownloadCount(USES_PARALLEL_REQUESTS); |
1277 | 1284 |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1556 | 1563 |
1557 void DownloadItemImpl::Completed() { | 1564 void DownloadItemImpl::Completed() { |
1558 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1565 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
1559 | 1566 |
1560 DVLOG(20) << __func__ << "() " << DebugString(false); | 1567 DVLOG(20) << __func__ << "() " << DebugString(false); |
1561 | 1568 |
1562 DCHECK(all_data_saved_); | 1569 DCHECK(all_data_saved_); |
1563 end_time_ = base::Time::Now(); | 1570 end_time_ = base::Time::Now(); |
1564 TransitionTo(COMPLETE_INTERNAL); | 1571 TransitionTo(COMPLETE_INTERNAL); |
1565 RecordDownloadCompleted(start_tick_, received_bytes_); | 1572 RecordDownloadCompleted(start_tick_, received_bytes_); |
| 1573 if (!GetBrowserContext()->IsOffTheRecord()) { |
| 1574 RecordDownloadCount(COMPLETED_COUNT_NORMAL_PROFILE); |
| 1575 } |
1566 | 1576 |
1567 if (auto_opened_) { | 1577 if (auto_opened_) { |
1568 // If it was already handled by the delegate, do nothing. | 1578 // If it was already handled by the delegate, do nothing. |
1569 } else if (GetOpenWhenComplete() || | 1579 } else if (GetOpenWhenComplete() || |
1570 ShouldOpenFileBasedOnExtension() || | 1580 ShouldOpenFileBasedOnExtension() || |
1571 IsTemporary()) { | 1581 IsTemporary()) { |
1572 // If the download is temporary, like in drag-and-drop, do not open it but | 1582 // If the download is temporary, like in drag-and-drop, do not open it but |
1573 // we still need to set it auto-opened so that it can be removed from the | 1583 // we still need to set it auto-opened so that it can be removed from the |
1574 // download shelf. | 1584 // download shelf. |
1575 if (!IsTemporary()) | 1585 if (!IsTemporary()) |
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2175 case RESUME_MODE_USER_CONTINUE: | 2185 case RESUME_MODE_USER_CONTINUE: |
2176 return "USER_CONTINUE"; | 2186 return "USER_CONTINUE"; |
2177 case RESUME_MODE_USER_RESTART: | 2187 case RESUME_MODE_USER_RESTART: |
2178 return "USER_RESTART"; | 2188 return "USER_RESTART"; |
2179 } | 2189 } |
2180 NOTREACHED() << "Unknown resume mode " << mode; | 2190 NOTREACHED() << "Unknown resume mode " << mode; |
2181 return "unknown"; | 2191 return "unknown"; |
2182 } | 2192 } |
2183 | 2193 |
2184 } // namespace content | 2194 } // namespace content |
OLD | NEW |