Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 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/chromeos/policy/status_uploader.h" | 5 #include "chrome/browser/chromeos/policy/status_uploader.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 77 // Schedule our next status upload in a minute (last_upload_ is set to the | 77 // Schedule our next status upload in a minute (last_upload_ is set to the |
| 78 // start of the epoch, so this will trigger an update in | 78 // start of the epoch, so this will trigger an update in |
| 79 // kMinUploadScheduleDelayMs from now). | 79 // kMinUploadScheduleDelayMs from now). |
| 80 ScheduleNextStatusUpload(); | 80 ScheduleNextStatusUpload(); |
| 81 } | 81 } |
| 82 | 82 |
| 83 StatusUploader::~StatusUploader() { | 83 StatusUploader::~StatusUploader() { |
| 84 MediaCaptureDevicesDispatcher::GetInstance()->RemoveObserver(this); | 84 MediaCaptureDevicesDispatcher::GetInstance()->RemoveObserver(this); |
| 85 } | 85 } |
| 86 | 86 |
| 87 void StatusUploader::ScheduleNextStatusUpload() { | 87 void StatusUploader::ScheduleNextStatusUpload(bool immediately) { |
| 88 // Calculate when to fire off the next update (if it should have already | 88 // Calculate when to fire off the next update (if it should have already |
| 89 // happened, this yields a TimeDelta of kMinUploadScheduleDelayMs). | 89 // happened, this yields a TimeDelta of kMinUploadScheduleDelayMs). |
| 90 base::TimeDelta delay = std::max( | 90 base::TimeDelta delay = std::max( |
| 91 (last_upload_ + upload_frequency_) - base::Time::NowFromSystemTime(), | 91 (last_upload_ + upload_frequency_) - base::Time::NowFromSystemTime(), |
| 92 base::TimeDelta::FromMilliseconds(kMinUploadScheduleDelayMs)); | 92 base::TimeDelta::FromMilliseconds(kMinUploadScheduleDelayMs)); |
| 93 // If we want an immediate status upload, set delay to 0. | |
| 94 if (immediately) | |
| 95 delay = base::TimeDelta(); | |
| 93 upload_callback_.Reset(base::Bind(&StatusUploader::UploadStatus, | 96 upload_callback_.Reset(base::Bind(&StatusUploader::UploadStatus, |
|
Andrew T Wilson (Slow)
2017/03/20 16:33:10
My main concern here is that we could have a statu
Ivan Šandrk
2017/03/20 17:48:53
I think it should actually be safe, but I haven't
| |
| 94 base::Unretained(this))); | 97 base::Unretained(this))); |
| 95 task_runner_->PostDelayedTask(FROM_HERE, upload_callback_.callback(), delay); | 98 task_runner_->PostDelayedTask(FROM_HERE, upload_callback_.callback(), delay); |
| 96 } | 99 } |
| 97 | 100 |
| 98 void StatusUploader::RefreshUploadFrequency() { | 101 void StatusUploader::RefreshUploadFrequency() { |
| 99 // Attempt to fetch the current value of the reporting settings. | 102 // Attempt to fetch the current value of the reporting settings. |
| 100 // If trusted values are not available, register this function to be called | 103 // If trusted values are not available, register this function to be called |
| 101 // back when they are available. | 104 // back when they are available. |
| 102 chromeos::CrosSettings* settings = chromeos::CrosSettings::Get(); | 105 chromeos::CrosSettings* settings = chromeos::CrosSettings::Get(); |
| 103 if (chromeos::CrosSettingsProvider::TRUSTED != settings->PrepareTrustedValues( | 106 if (chromeos::CrosSettingsProvider::TRUSTED != settings->PrepareTrustedValues( |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 165 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 168 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 166 // If a video or audio capture stream is opened, set a flag so we disallow | 169 // If a video or audio capture stream is opened, set a flag so we disallow |
| 167 // upload of potentially sensitive data. | 170 // upload of potentially sensitive data. |
| 168 if (state == content::MEDIA_REQUEST_STATE_OPENING && | 171 if (state == content::MEDIA_REQUEST_STATE_OPENING && |
| 169 (stream_type == content::MEDIA_DEVICE_AUDIO_CAPTURE || | 172 (stream_type == content::MEDIA_DEVICE_AUDIO_CAPTURE || |
| 170 stream_type == content::MEDIA_DEVICE_VIDEO_CAPTURE)) { | 173 stream_type == content::MEDIA_DEVICE_VIDEO_CAPTURE)) { |
| 171 has_captured_media_ = true; | 174 has_captured_media_ = true; |
| 172 } | 175 } |
| 173 } | 176 } |
| 174 | 177 |
| 178 void StatusUploader::ScheduleNextStatusUploadImmediately() { | |
| 179 ScheduleNextStatusUpload(true); | |
| 180 } | |
| 181 | |
| 175 void StatusUploader::UploadStatus() { | 182 void StatusUploader::UploadStatus() { |
| 176 // Gather status in the background. | 183 // Gather status in the background. |
| 177 collector_->GetDeviceAndSessionStatusAsync(base::Bind( | 184 collector_->GetDeviceAndSessionStatusAsync(base::Bind( |
| 178 &StatusUploader::OnStatusReceived, weak_factory_.GetWeakPtr())); | 185 &StatusUploader::OnStatusReceived, weak_factory_.GetWeakPtr())); |
| 179 } | 186 } |
| 180 | 187 |
| 181 void StatusUploader::OnStatusReceived( | 188 void StatusUploader::OnStatusReceived( |
| 182 std::unique_ptr<em::DeviceStatusReportRequest> device_status, | 189 std::unique_ptr<em::DeviceStatusReportRequest> device_status, |
| 183 std::unique_ptr<em::SessionStatusReportRequest> session_status) { | 190 std::unique_ptr<em::SessionStatusReportRequest> session_status) { |
| 184 bool have_device_status = device_status != nullptr; | 191 bool have_device_status = device_status != nullptr; |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 212 | 219 |
| 213 // If the upload was successful, tell the collector so it can clear its cache | 220 // If the upload was successful, tell the collector so it can clear its cache |
| 214 // of pending items. | 221 // of pending items. |
| 215 if (success) | 222 if (success) |
| 216 collector_->OnSubmittedSuccessfully(); | 223 collector_->OnSubmittedSuccessfully(); |
| 217 | 224 |
| 218 ScheduleNextStatusUpload(); | 225 ScheduleNextStatusUpload(); |
| 219 } | 226 } |
| 220 | 227 |
| 221 } // namespace policy | 228 } // namespace policy |
| OLD | NEW |