OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "chrome/browser/component_updater/background_downloader_win.h" | 5 #include "chrome/browser/component_updater/background_downloader_win.h" |
6 | 6 |
7 #include <atlbase.h> | 7 #include <atlbase.h> |
8 #include <atlcom.h> | 8 #include <atlcom.h> |
9 | 9 |
10 #include <functional> | 10 #include <functional> |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
382 url)); | 382 url)); |
383 } | 383 } |
384 | 384 |
385 // Called once when this class is asked to do a download. Creates or opens | 385 // Called once when this class is asked to do a download. Creates or opens |
386 // an existing bits job, hooks up the notifications, and starts the timer. | 386 // an existing bits job, hooks up the notifications, and starts the timer. |
387 void BackgroundDownloader::BeginDownload(const GURL& url) { | 387 void BackgroundDownloader::BeginDownload(const GURL& url) { |
388 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 388 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
389 | 389 |
390 DCHECK(!timer_); | 390 DCHECK(!timer_); |
391 | 391 |
392 is_completed_ = false; | |
393 | |
392 HRESULT hr = QueueBitsJob(url); | 394 HRESULT hr = QueueBitsJob(url); |
393 if (FAILED(hr)) { | 395 if (FAILED(hr)) { |
394 EndDownload(hr); | 396 EndDownload(hr); |
395 return; | 397 return; |
396 } | 398 } |
397 | 399 |
398 // A repeating timer retains the user task. This timer can be stopped and | 400 // A repeating timer retains the user task. This timer can be stopped and |
399 // reset multiple times. | 401 // reset multiple times. |
400 timer_.reset(new base::RepeatingTimer<BackgroundDownloader>); | 402 timer_.reset(new base::RepeatingTimer<BackgroundDownloader>); |
401 timer_->Start(FROM_HERE, | 403 timer_->Start(FROM_HERE, |
402 base::TimeDelta::FromSeconds(kJobPollingIntervalSec), | 404 base::TimeDelta::FromSeconds(kJobPollingIntervalSec), |
403 this, | 405 this, |
404 &BackgroundDownloader::OnDownloading); | 406 &BackgroundDownloader::OnDownloading); |
405 | 407 |
406 download_start_time_ = base::Time::Now(); | 408 download_start_time_ = base::Time::Now(); |
waffles
2013/12/19 23:21:24
Should we initialize these when we initialize is_c
Sorin Jianu
2013/12/19 23:30:04
Done.
| |
407 job_stuck_begin_time_ = download_start_time_; | 409 job_stuck_begin_time_ = download_start_time_; |
408 } | 410 } |
409 | 411 |
410 // Called any time the timer fires. | 412 // Called any time the timer fires. |
411 void BackgroundDownloader::OnDownloading() { | 413 void BackgroundDownloader::OnDownloading() { |
412 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 414 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
413 | 415 |
414 DCHECK(job_); | 416 DCHECK(job_); |
415 | 417 |
416 DCHECK(!is_completed_); | 418 DCHECK(!is_completed_); |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
693 } | 695 } |
694 | 696 |
695 bool BackgroundDownloader::IsStuck() { | 697 bool BackgroundDownloader::IsStuck() { |
696 const base::TimeDelta job_stuck_timeout( | 698 const base::TimeDelta job_stuck_timeout( |
697 base::TimeDelta::FromMinutes(kJobStuckTimeoutMin)); | 699 base::TimeDelta::FromMinutes(kJobStuckTimeoutMin)); |
698 return job_stuck_begin_time_ + job_stuck_timeout < base::Time::Now(); | 700 return job_stuck_begin_time_ + job_stuck_timeout < base::Time::Now(); |
699 } | 701 } |
700 | 702 |
701 } // namespace component_updater | 703 } // namespace component_updater |
702 | 704 |
OLD | NEW |