Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5141)

Unified Diff: chrome/browser/chromeos/policy/system_log_uploader.cc

Issue 1280003004: Added policy to disable/enable a system log upload. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/policy/system_log_uploader.cc
diff --git a/chrome/browser/chromeos/policy/system_log_uploader.cc b/chrome/browser/chromeos/policy/system_log_uploader.cc
index 98aad8d615c5452ad229ac09850cc15a79f8d947..6e62ba579c07e425791687f267d286d75a2b5936 100644
--- a/chrome/browser/chromeos/policy/system_log_uploader.cc
+++ b/chrome/browser/chromeos/policy/system_log_uploader.cc
@@ -132,10 +132,21 @@ SystemLogUploader::SystemLogUploader(
base::TimeDelta::FromMilliseconds(kDefaultUploadDelayMs)),
task_runner_(task_runner),
syslog_delegate_(syslog_delegate.Pass()),
+ upload_enabled_(false),
weak_factory_(this) {
if (!syslog_delegate_)
syslog_delegate_.reset(new SystemLogDelegate());
DCHECK(syslog_delegate_);
+
+ // Watch for policy changes.
+ upload_enabled_observer_ = chromeos::CrosSettings::Get()->AddSettingsObserver(
+ chromeos::kLogUploadEnabled,
+ base::Bind(&SystemLogUploader::RefreshUploadSettings,
+ weak_factory_.GetWeakPtr()));
+
+ // Fetch the current value of the policy.
+ RefreshUploadSettings();
+
// Immediately schedule the next system log upload (last_upload_attempt_ is
// set to the start of the epoch, so this will trigger an update upload in the
// immediate future).
@@ -171,6 +182,24 @@ void SystemLogUploader::OnFailure(UploadJob::ErrorCode error_code) {
}
}
+void SystemLogUploader::RefreshUploadSettings() {
+ // Attempt to fetch the current value of the reporting settings.
+ // If trusted values are not available, register this function to be called
+ // back when they are available.
+ chromeos::CrosSettings* settings = chromeos::CrosSettings::Get();
+ if (chromeos::CrosSettingsProvider::TRUSTED !=
+ settings->PrepareTrustedValues(
+ base::Bind(&SystemLogUploader::RefreshUploadSettings,
+ weak_factory_.GetWeakPtr()))) {
+ return;
+ }
+
+ // CrosSettings are trusted - we want to use the last trusted values, by
+ // default do not upload system logs.
+ if (!settings->GetBoolean(chromeos::kLogUploadEnabled, &upload_enabled_))
+ upload_enabled_ = false;
+}
+
void SystemLogUploader::UploadSystemLogs(scoped_ptr<SystemLogs> system_logs) {
// Must be called on the main thread.
DCHECK(thread_checker_.CalledOnValidThread());
@@ -201,8 +230,14 @@ void SystemLogUploader::StartLogUpload() {
// Must be called on the main thread.
DCHECK(thread_checker_.CalledOnValidThread());
- syslog_delegate_->LoadSystemLogs(base::Bind(
- &SystemLogUploader::UploadSystemLogs, weak_factory_.GetWeakPtr()));
+ if (upload_enabled_) {
+ syslog_delegate_->LoadSystemLogs(base::Bind(
+ &SystemLogUploader::UploadSystemLogs, weak_factory_.GetWeakPtr()));
+ } else {
+ // If upload is disabled, schedule the next attempt after 12h.
+ retry_count_ = 0;
+ ScheduleNextSystemLogUpload(upload_frequency_);
+ }
}
void SystemLogUploader::ScheduleNextSystemLogUpload(base::TimeDelta frequency) {

Powered by Google App Engine
This is Rietveld 408576698