|
175 | 175 | #include "extensions/common/extension_set.h"
|
176 | 176 | #include "extensions/common/features/feature_channel.h"
|
177 | 177 | #include "extensions/common/manifest_handlers/shared_module_info.h"
|
| 178 | +#include "extensions/common/switches.h" |
178 | 179 | #include "media/media_features.h"
|
179 | 180 | #include "net/base/net_errors.h"
|
180 | 181 | #include "net/base/url_util.h"
|
|
208 | 209 | #include "chrome/browser/chromeos/accessibility/magnification_manager.h"
|
209 | 210 | #include "chrome/browser/chromeos/arc/arc_session_manager.h"
|
210 | 211 | #include "chrome/browser/chromeos/login/test/js_checker.h"
|
| 212 | +#include "chrome/browser/chromeos/note_taking_helper.h" |
211 | 213 | #include "chrome/browser/chromeos/system/timezone_resolver_manager.h"
|
212 | 214 | #include "chrome/browser/profiles/profile_manager.h"
|
213 | 215 | #include "chrome/browser/ui/ash/chrome_screenshot_grabber.h"
|
@@ -4446,4 +4448,106 @@ IN_PROC_BROWSER_TEST_F(NetworkTimePolicyTest, NetworkTimeQueriesDisabled) {
|
4446 | 4448 | EXPECT_EQ(1u, num_requests());
|
4447 | 4449 | }
|
4448 | 4450 |
|
| 4451 | +#if defined(OS_CHROMEOS) |
| 4452 | + |
| 4453 | +class NoteTakingOnLockScreenPolicyTest : public PolicyTest { |
| 4454 | + public: |
| 4455 | + NoteTakingOnLockScreenPolicyTest() = default; |
| 4456 | + ~NoteTakingOnLockScreenPolicyTest() override = default; |
| 4457 | + |
| 4458 | + void SetUpCommandLine(base::CommandLine* command_line) override { |
| 4459 | + command_line->AppendSwitch(chromeos::switches::kEnableLockScreenApps); |
| 4460 | + // An app requires lockScreen permission to be enabled as a lock screen app. |
| 4461 | + // This permission is protected by a whitelist, so the test app has to be |
| 4462 | + // whitelisted as well. |
| 4463 | + command_line->AppendSwitchASCII( |
| 4464 | + extensions::switches::kWhitelistedExtensionID, kTestAppId); |
| 4465 | + PolicyTest::SetUpCommandLine(command_line); |
| 4466 | + } |
| 4467 | + |
| 4468 | + void SetUserLevelPrefValue(const std::string& app_id, |
| 4469 | + bool enabled_on_lock_screen) { |
| 4470 | + chromeos::NoteTakingHelper* helper = chromeos::NoteTakingHelper::Get(); |
| 4471 | + ASSERT_TRUE(helper); |
| 4472 | + |
| 4473 | + helper->SetPreferredApp(browser()->profile(), app_id); |
| 4474 | + helper->SetPreferredAppEnabledOnLockScreen(browser()->profile(), |
| 4475 | + enabled_on_lock_screen); |
| 4476 | + } |
| 4477 | + |
| 4478 | + void SetPolicyValue(std::unique_ptr<base::Value> value) { |
| 4479 | + PolicyMap policies; |
| 4480 | + if (value) { |
| 4481 | + policies.Set(key::kNoteTakingAppsLockScreenWhitelist, |
| 4482 | + POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
| 4483 | + POLICY_SOURCE_CLOUD, std::move(value), nullptr); |
| 4484 | + } |
| 4485 | + UpdateProviderPolicy(policies); |
| 4486 | + } |
| 4487 | + |
| 4488 | + chromeos::NoteTakingLockScreenSupport GetAppLockScreenStatus( |
| 4489 | + const std::string& app_id) { |
| 4490 | + std::unique_ptr<chromeos::NoteTakingAppInfo> info = |
| 4491 | + chromeos::NoteTakingHelper::Get()->GetPreferredChromeAppInfo( |
| 4492 | + browser()->profile()); |
| 4493 | + if (!info || info->app_id != app_id) |
| 4494 | + return chromeos::NoteTakingLockScreenSupport::kNotSupported; |
| 4495 | + return info->lock_screen_support; |
| 4496 | + } |
| 4497 | + |
| 4498 | + // The test app ID. |
| 4499 | + static const char kTestAppId[]; |
| 4500 | + |
| 4501 | + private: |
| 4502 | + DISALLOW_COPY_AND_ASSIGN(NoteTakingOnLockScreenPolicyTest); |
| 4503 | +}; |
| 4504 | + |
| 4505 | +const char NoteTakingOnLockScreenPolicyTest::kTestAppId[] = |
| 4506 | + "cadfeochfldmbdgoccgbeianhamecbae"; |
| 4507 | + |
| 4508 | +IN_PROC_BROWSER_TEST_F(NoteTakingOnLockScreenPolicyTest, |
| 4509 | + DisableLockScreenNoteTakingByPolicy) { |
| 4510 | + scoped_refptr<const extensions::Extension> app = |
| 4511 | + LoadUnpackedExtension("lock_screen_apps/app_launch"); |
| 4512 | + ASSERT_TRUE(app); |
| 4513 | + ASSERT_EQ(kTestAppId, app->id()); |
| 4514 | + |
| 4515 | + SetUserLevelPrefValue(app->id(), true); |
| 4516 | + EXPECT_EQ(chromeos::NoteTakingLockScreenSupport::kEnabled, |
| 4517 | + GetAppLockScreenStatus(app->id())); |
| 4518 | + |
| 4519 | + SetPolicyValue(base::MakeUnique<base::ListValue>()); |
| 4520 | + EXPECT_EQ(chromeos::NoteTakingLockScreenSupport::kNotAllowedByPolicy, |
| 4521 | + GetAppLockScreenStatus(app->id())); |
| 4522 | + |
| 4523 | + SetPolicyValue(nullptr); |
| 4524 | + EXPECT_EQ(chromeos::NoteTakingLockScreenSupport::kEnabled, |
| 4525 | + GetAppLockScreenStatus(app->id())); |
| 4526 | +} |
| 4527 | + |
| 4528 | +IN_PROC_BROWSER_TEST_F(NoteTakingOnLockScreenPolicyTest, |
| 4529 | + WhitelistLockScreenNoteTakingAppByPolicy) { |
| 4530 | + scoped_refptr<const extensions::Extension> app = |
| 4531 | + LoadUnpackedExtension("lock_screen_apps/app_launch"); |
| 4532 | + ASSERT_TRUE(app); |
| 4533 | + ASSERT_EQ(kTestAppId, app->id()); |
| 4534 | + |
| 4535 | + SetUserLevelPrefValue(app->id(), false); |
| 4536 | + EXPECT_EQ(chromeos::NoteTakingLockScreenSupport::kSupported, |
| 4537 | + GetAppLockScreenStatus(app->id())); |
| 4538 | + |
| 4539 | + auto policy = base::MakeUnique<base::ListValue>(); |
| 4540 | + policy->GetList().emplace_back(base::Value(kTestAppId)); |
| 4541 | + SetPolicyValue(std::move(policy)); |
| 4542 | + |
| 4543 | + EXPECT_EQ(chromeos::NoteTakingLockScreenSupport::kSupported, |
| 4544 | + GetAppLockScreenStatus(app->id())); |
| 4545 | + |
| 4546 | + SetUserLevelPrefValue(app->id(), true); |
| 4547 | + EXPECT_EQ(chromeos::NoteTakingLockScreenSupport::kEnabled, |
| 4548 | + GetAppLockScreenStatus(app->id())); |
| 4549 | +} |
| 4550 | + |
| 4551 | +#endif // defined(OS_CHROMEOS) |
| 4552 | + |
4449 | 4553 | } // namespace policy
|
0 commit comments