| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ash/policy/skyvault/policy_utils.h" |
| |
| #include <tuple> |
| |
| #include "base/test/scoped_feature_list.h" |
| #include "chrome/browser/policy/policy_test_utils.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/common/chrome_features.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| #include "components/policy/core/common/policy_map.h" |
| #include "components/policy/policy_constants.h" |
| #include "content/public/test/browser_test.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace policy::local_user_files { |
| |
| class LocalUserFilesPolicyUtilsBrowserTest |
| : public policy::PolicyTest, |
| public ::testing::WithParamInterface< |
| std::tuple</*enable_skyvault*/ bool, /*policy_value*/ bool>> { |
| public: |
| static std::string ParamToString( |
| const testing::TestParamInfo<ParamType> info) { |
| auto [enable_skyvault, policy_value] = info.param; |
| std::string name = |
| (enable_skyvault ? "SkyVaultEnabled" : "SkyVaultDisabled"); |
| name += (policy_value ? "PolicyTrue" : "PolicyFalse"); |
| return name; |
| } |
| |
| LocalUserFilesPolicyUtilsBrowserTest() { |
| if (EnableSkyvault()) { |
| scoped_feature_list_.InitAndEnableFeature(features::kSkyVault); |
| } else { |
| scoped_feature_list_.InitAndDisableFeature(features::kSkyVault); |
| } |
| } |
| ~LocalUserFilesPolicyUtilsBrowserTest() override = default; |
| |
| protected: |
| bool EnableSkyvault() { return std::get<0>(GetParam()); } |
| bool PolicyValue() { return std::get<1>(GetParam()); } |
| |
| void SetPolicyValue(bool local_user_files_allowed) { |
| policy::PolicyMap policies; |
| policy::PolicyTest::SetPolicy(&policies, |
| policy::key::kLocalUserFilesAllowed, |
| base::Value(local_user_files_allowed)); |
| provider_.UpdateChromePolicy(policies); |
| } |
| |
| base::test::ScopedFeatureList scoped_feature_list_; |
| }; |
| |
| IN_PROC_BROWSER_TEST_P(LocalUserFilesPolicyUtilsBrowserTest, CheckPolicyValue) { |
| // Before setting the policy, local files should always be allowed. |
| ASSERT_TRUE(LocalUserFilesAllowed()); |
| |
| // Set the policy. |
| bool allowed = PolicyValue(); |
| SetPolicyValue(allowed); |
| |
| if (!EnableSkyvault()) { |
| // Policy value doesn't matter. |
| ASSERT_TRUE(LocalUserFilesAllowed()); |
| } else { |
| ASSERT_EQ(LocalUserFilesAllowed(), allowed); |
| } |
| } |
| |
| INSTANTIATE_TEST_SUITE_P(LocalUserFiles, |
| LocalUserFilesPolicyUtilsBrowserTest, |
| testing::Combine( |
| /*enable_skyvault*/ testing::Bool(), |
| /*policy_value*/ testing::Bool()), |
| LocalUserFilesPolicyUtilsBrowserTest::ParamToString); |
| |
| class DownloadsDestinationUtilsTest : public policy::PolicyTest { |
| protected: |
| void SetDownloadsPolicy(const std::string& destination) { |
| policy::PolicyMap policies; |
| policy::PolicyTest::SetPolicy(&policies, policy::key::kDownloadDirectory, |
| base::Value(destination)); |
| provider_.UpdateChromePolicy(policies); |
| } |
| }; |
| |
| IN_PROC_BROWSER_TEST_F(DownloadsDestinationUtilsTest, DownloadsDestination) { |
| EXPECT_EQ(FileSaveDestination::kNotSpecified, |
| GetDownloadsDestination(browser()->profile())); |
| |
| SetDownloadsPolicy(""); |
| EXPECT_EQ(FileSaveDestination::kDownloads, |
| GetDownloadsDestination(browser()->profile())); |
| |
| SetDownloadsPolicy(kGoogleDrivePolicyVariableName); |
| EXPECT_EQ(FileSaveDestination::kGoogleDrive, |
| GetDownloadsDestination(browser()->profile())); |
| |
| SetDownloadsPolicy(kOneDrivePolicyVariableName); |
| EXPECT_EQ(FileSaveDestination::kOneDrive, |
| GetDownloadsDestination(browser()->profile())); |
| } |
| |
| class ScreenCaptureDestinationUtilsTest : public policy::PolicyTest { |
| protected: |
| void SetScreenCapturePolicy(const std::string& destination) { |
| policy::PolicyMap policies; |
| policy::PolicyTest::SetPolicy(&policies, |
| policy::key::kScreenCaptureLocation, |
| base::Value(destination)); |
| provider_.UpdateChromePolicy(policies); |
| } |
| base::test::ScopedFeatureList scoped_feature_list_{features::kSkyVault}; |
| }; |
| |
| IN_PROC_BROWSER_TEST_F(ScreenCaptureDestinationUtilsTest, |
| ScreenCaptureDestination) { |
| EXPECT_EQ(FileSaveDestination::kNotSpecified, |
| GetScreenCaptureDestination(browser()->profile())); |
| |
| SetScreenCapturePolicy(""); |
| EXPECT_EQ(FileSaveDestination::kDownloads, |
| GetScreenCaptureDestination(browser()->profile())); |
| |
| SetScreenCapturePolicy(kGoogleDrivePolicyVariableName); |
| EXPECT_EQ(FileSaveDestination::kGoogleDrive, |
| GetScreenCaptureDestination(browser()->profile())); |
| |
| SetScreenCapturePolicy(kOneDrivePolicyVariableName); |
| EXPECT_EQ(FileSaveDestination::kOneDrive, |
| GetScreenCaptureDestination(browser()->profile())); |
| } |
| |
| class DownloadsDestinationUtilsTestWithSkyvault |
| : public DownloadsDestinationUtilsTest { |
| protected: |
| base::test::ScopedFeatureList scoped_feature_list_{features::kSkyVault}; |
| }; |
| |
| IN_PROC_BROWSER_TEST_F(DownloadsDestinationUtilsTestWithSkyvault, |
| DownloadToTemp) { |
| EXPECT_EQ(false, DownloadToTemp(browser()->profile())); |
| |
| SetDownloadsPolicy(kGoogleDrivePolicyVariableName); |
| EXPECT_EQ(false, DownloadToTemp(browser()->profile())); |
| |
| SetDownloadsPolicy(kOneDrivePolicyVariableName); |
| EXPECT_EQ(true, DownloadToTemp(browser()->profile())); |
| } |
| |
| } // namespace policy::local_user_files |