Chromium Code Reviews| Index: content/browser/loader/upload_progress_tracker.cc |
| diff --git a/content/browser/loader/upload_progress_tracker.cc b/content/browser/loader/upload_progress_tracker.cc |
| index 790bea4642d4727edac42db5e98f396d7c7b7905..6085831a36eb6beb5d9d1846bfffdf63bb07d925 100644 |
| --- a/content/browser/loader/upload_progress_tracker.cc |
| +++ b/content/browser/loader/upload_progress_tracker.cc |
| @@ -5,8 +5,8 @@ |
| #include "content/browser/loader/upload_progress_tracker.h" |
| #include "base/logging.h" |
| +#include "base/single_thread_task_runner.h" |
| #include "net/base/upload_progress.h" |
| -#include "net/url_request/url_request.h" |
| namespace content { |
| namespace { |
| @@ -15,14 +15,17 @@ constexpr base::TimeDelta kUploadProgressInterval = |
| base::TimeDelta::FromMilliseconds(100); |
| } // namespace |
| +UploadProgressTracker::Client::Client() = default; |
| +UploadProgressTracker::Client::~Client() = default; |
| + |
| UploadProgressTracker::UploadProgressTracker( |
| const tracked_objects::Location& location, |
| - UploadProgressReportCallback report_progress, |
| - net::URLRequest* request) |
| - : request_(request), report_progress_(std::move(report_progress)) { |
| - DCHECK(request_); |
| - DCHECK(report_progress_); |
| + Client* client, |
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner) |
| + : client_(client) { |
| + DCHECK(client_); |
| + progress_timer_.SetTaskRunner(std::move(task_runner)); |
|
mmenke
2017/01/06 15:54:53
Why are we not just using the current thread? You
tzik
2017/01/10 06:54:41
That is for using TestSimpleTaskRunner::RunPending
|
| progress_timer_.Start(location, kUploadProgressInterval, this, |
| &UploadProgressTracker::ReportUploadProgressIfNeeded); |
| } |
| @@ -43,7 +46,7 @@ void UploadProgressTracker::ReportUploadProgressIfNeeded() { |
| if (waiting_for_upload_progress_ack_) |
| return; |
| - net::UploadProgress progress = request_->GetUploadProgress(); |
| + net::UploadProgress progress = client_->GetUploadProgress(); |
| if (!progress.size()) |
| return; // Nothing to upload. |
| @@ -62,7 +65,7 @@ void UploadProgressTracker::ReportUploadProgressIfNeeded() { |
| bool too_much_time_passed = time_since_last > kOneSecond; |
| if (is_finished || enough_new_progress || too_much_time_passed) { |
| - report_progress_.Run(progress.position(), progress.size()); |
| + client_->ReportUploadProgress(progress.position(), progress.size()); |
| waiting_for_upload_progress_ack_ = true; |
| last_upload_ticks_ = base::TimeTicks::Now(); |
| last_upload_position_ = progress.position(); |