Index: chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.cc |
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.cc b/chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.cc |
index 48091bdd93e4b5d9ad95797213f5aee74b2e0914..dc726fd6cdcd39a04ed61e138b1c25fd08102f2d 100644 |
--- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.cc |
+++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.cc |
@@ -17,6 +17,7 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chromeos/login/login_utils.h" |
#include "chrome/browser/chromeos/login/users/user.h" |
+#include "chrome/browser/chromeos/login/users/user_manager.h" |
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
#include "chrome/browser/chromeos/policy/user_cloud_external_data_manager.h" |
#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" |
@@ -29,6 +30,7 @@ |
#include "chromeos/chromeos_switches.h" |
#include "chromeos/dbus/dbus_thread_manager.h" |
#include "components/keyed_service/content/browser_context_dependency_manager.h" |
+#include "components/policy/core/browser/browser_policy_connector.h" |
#include "components/policy/core/common/cloud/cloud_external_data_manager.h" |
#include "components/policy/core/common/cloud/device_management_service.h" |
#include "components/user_manager/user_type.h" |
@@ -133,6 +135,7 @@ scoped_ptr<UserCloudPolicyManagerChromeOS> |
// policy registration. |
// USER_TYPE_PUBLIC_ACCOUNT gets its policy from the |
// DeviceLocalAccountPolicyService. |
+ // Non-managed domains will be skipped by the below check |
const std::string& username = user->email(); |
if (user->GetType() != user_manager::USER_TYPE_REGULAR || |
BrowserPolicyConnector::IsNonEnterpriseUser(username)) { |
@@ -142,10 +145,17 @@ scoped_ptr<UserCloudPolicyManagerChromeOS> |
policy::BrowserPolicyConnectorChromeOS* connector = |
g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
UserAffiliation affiliation = connector->GetUserAffiliation(username); |
- const bool is_managed_user = affiliation == USER_AFFILIATION_MANAGED; |
+ const bool is_affiliated_user = affiliation == USER_AFFILIATION_MANAGED; |
const bool is_browser_restart = |
command_line->HasSwitch(chromeos::switches::kLoginUser); |
- const bool wait_for_initial_policy = is_managed_user && !is_browser_restart; |
+ const bool wait_for_initial_policy = |
+ !is_browser_restart && |
+ (chromeos::UserManager::Get()->IsCurrentUserNew() || is_affiliated_user); |
+ |
+ const base::TimeDelta initial_policy_fetch_timeout = |
+ chromeos::UserManager::Get()->IsCurrentUserNew() |
+ ? base::TimeDelta::Max() |
+ : base::TimeDelta::FromSeconds(kInitialPolicyFetchTimeoutSeconds); |
DeviceManagementService* device_management_service = |
connector->device_management_service(); |
@@ -195,7 +205,7 @@ scoped_ptr<UserCloudPolicyManagerChromeOS> |
external_data_manager.Pass(), |
component_policy_cache_dir, |
wait_for_initial_policy, |
- base::TimeDelta::FromSeconds(kInitialPolicyFetchTimeoutSeconds), |
+ initial_policy_fetch_timeout, |
base::MessageLoopProxy::current(), |
file_task_runner, |
io_task_runner)); |