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

Unified Diff: chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc

Issue 985093002: Fix up Owner settings on first load (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: modify protobuf directly Created 5 years, 9 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/ownership/owner_settings_service_chromeos.cc
diff --git a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
index 48a81cb418a7dca2df0e0da89efb161a3cb84440..9909e3f95bce20ff377c0ca164592248f03a4be6 100644
--- a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
+++ b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h"
+#include <algorithm>
#include <string>
#include "base/bind.h"
@@ -15,7 +16,6 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_factory.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
-#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/device_settings_provider.h"
#include "chrome/browser/chromeos/settings/session_manager_operation.h"
@@ -174,7 +174,6 @@ bool CheckManagementModeTransition(policy::ManagementMode current_mode,
NOTREACHED();
return false;
}
-
} // namespace
OwnerSettingsServiceChromeOS::ManagementSettings::ManagementSettings() {
@@ -414,7 +413,7 @@ void OwnerSettingsServiceChromeOS::IsOwnerForSafeModeAsync(
scoped_ptr<em::PolicyData> OwnerSettingsServiceChromeOS::AssemblePolicy(
const std::string& user_id,
const em::PolicyData* policy_data,
- const em::ChromeDeviceSettingsProto* settings) {
+ em::ChromeDeviceSettingsProto* settings) {
scoped_ptr<em::PolicyData> policy(new em::PolicyData());
if (policy_data) {
// Preserve management settings.
@@ -429,6 +428,14 @@ scoped_ptr<em::PolicyData> OwnerSettingsServiceChromeOS::AssemblePolicy(
// setting is set. We set the management mode to LOCAL_OWNER initially.
policy->set_management_mode(em::PolicyData::LOCAL_OWNER);
}
+ // Perform fixups required to ensure sensical local-owner device policy:
+ // 1) The owner must be in the username field,
+ // 2) user whitelisting must be explicitly allowed or disallowed, and
+ // 3) the owner user must be on the whitelist, if it's enforced.
+ // We can enforce the first two here, but need to check the whitelist before
+ // modifying it, so that will be taken care of in a separate class.
Mattias Nissler (ping if slow) 2015/03/18 08:36:42 stale comment
Chris Masone 2015/03/24 20:53:36 Done.
+ if (policy->management_mode() == em::PolicyData::LOCAL_OWNER)
Mattias Nissler (ping if slow) 2015/03/18 08:36:41 I think you want to do this both for LOCAL_OWNER a
Chris Masone 2015/03/24 20:53:36 Done.
Chris Masone 2015/03/24 20:53:36 Done.
+ FixupLocalOwnerPolicy(user_id, settings);
policy->set_policy_type(policy::dm_protocol::kChromeDevicePolicyType);
policy->set_timestamp(
(base::Time::Now() - base::Time::UnixEpoch()).InMilliseconds());
@@ -440,6 +447,21 @@ scoped_ptr<em::PolicyData> OwnerSettingsServiceChromeOS::AssemblePolicy(
}
// static
+void OwnerSettingsServiceChromeOS::FixupLocalOwnerPolicy(
+ const std::string& user_id,
+ enterprise_management::ChromeDeviceSettingsProto* settings) {
+ if (!settings->has_allow_new_users())
+ settings->mutable_allow_new_users()->set_allow_new_users(true);
+
+ em::UserWhitelistProto* whitelist_proto = settings->mutable_user_whitelist();
+ if (whitelist_proto->user_whitelist().end() ==
+ std::find(whitelist_proto->user_whitelist().begin(),
+ whitelist_proto->user_whitelist().end(), user_id)) {
+ whitelist_proto->add_user_whitelist(user_id);
+ }
+}
+
+// static
void OwnerSettingsServiceChromeOS::UpdateDeviceSettings(
const std::string& path,
const base::Value& value,

Powered by Google App Engine
This is Rietveld 408576698