| // Copyright 2021 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "ash/public/cpp/test/shell_test_api.h" | 
 | #include "base/values.h" | 
 | #include "chrome/browser/policy/policy_test_utils.h" | 
 | #include "components/policy/core/common/policy_map.h" | 
 | #include "components/policy/core/common/policy_types.h" | 
 | #include "components/policy/policy_constants.h" | 
 | #include "content/public/test/browser_test.h" | 
 | #include "ui/display/manager/display_manager.h" | 
 |  | 
 | namespace policy { | 
 |  | 
 | // Policy is only available in ChromeOS | 
 | IN_PROC_BROWSER_TEST_F(PolicyTest, UnifiedDesktopEnabledByDefault) { | 
 |   // Verify that Unified Desktop can be enabled by policy | 
 |   display::DisplayManager* display_manager = | 
 |       ash::ShellTestApi().display_manager(); | 
 |  | 
 |   // The policy description promises that Unified Desktop is not available | 
 |   // unless the policy is set (or a command line or an extension is used). If | 
 |   // this default behaviour changes, please change the description at | 
 |   // components/policy/resources/policy_templates.json. | 
 |   EXPECT_FALSE(display_manager->unified_desktop_enabled()); | 
 |   // Now set the policy and check that unified desktop is turned on. | 
 |   PolicyMap policies; | 
 |   policies.Set(key::kUnifiedDesktopEnabledByDefault, POLICY_LEVEL_MANDATORY, | 
 |                POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, base::Value(true), | 
 |                nullptr); | 
 |   UpdateProviderPolicy(policies); | 
 |   EXPECT_TRUE(display_manager->unified_desktop_enabled()); | 
 |   policies.Set(key::kUnifiedDesktopEnabledByDefault, POLICY_LEVEL_MANDATORY, | 
 |                POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, base::Value(false), | 
 |                nullptr); | 
 |   UpdateProviderPolicy(policies); | 
 |   EXPECT_FALSE(display_manager->unified_desktop_enabled()); | 
 | } | 
 |  | 
 | }  // namespace policy |