Upstream version 7.35.139.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / policy / chrome_browser_policy_connector.cc
index 54223b5..bc93f6e 100644 (file)
 #include "components/policy/core/common/async_policy_provider.h"
 #include "components/policy/core/common/cloud/device_management_service.h"
 #include "components/policy/core/common/configuration_policy_provider.h"
+#include "components/policy/core/common/policy_map.h"
+#include "components/policy/core/common/policy_namespace.h"
+#include "components/policy/core/common/policy_service.h"
 #include "components/policy/core/common/policy_types.h"
+#include "chrome/common/chrome_switches.h"
 #include "content/public/browser/browser_thread.h"
 #include "net/url_request/url_request_context_getter.h"
 #include "policy/policy_constants.h"
@@ -157,6 +161,8 @@ void ChromeBrowserPolicyConnector::Init(
 
   BrowserPolicyConnector::Init(
       local_state, request_context, device_management_service.Pass());
+
+  AppendExtraFlagPerPolicy();
 }
 
 ConfigurationPolicyProvider*
@@ -190,4 +196,18 @@ ConfigurationPolicyProvider*
 #endif
 }
 
+void ChromeBrowserPolicyConnector::AppendExtraFlagPerPolicy() {
+  PolicyService* policy_service = GetPolicyService();
+  PolicyNamespace chrome_ns = PolicyNamespace(POLICY_DOMAIN_CHROME, "");
+  const PolicyMap& chrome_policy = policy_service->GetPolicies(chrome_ns);
+  const base::Value* policy_value =
+      chrome_policy.GetValue(key::kEnableWebBasedSignin);
+  bool enabled = false;
+  CommandLine* command_line = CommandLine::ForCurrentProcess();
+  if (policy_value && policy_value->GetAsBoolean(&enabled) && enabled &&
+      !command_line->HasSwitch(switches::kEnableWebBasedSignin)) {
+    command_line->AppendSwitch(switches::kEnableWebBasedSignin);
+  }
+}
+
 }  // namespace policy