blob: 8b7968b5958ea72b6c6c317e7cef24119fd7c3c0 [file] [log] [blame]
// Copyright 2023 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/enterprise/data_controls/chrome_rules_service.h"
#include "base/test/bind.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile_manager.h"
#include "components/enterprise/data_controls/core/browser/test_utils.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_task_environment.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/data_transfer_policy/data_transfer_endpoint.h"
namespace data_controls {
namespace {
constexpr size_t kFirstRuleIndex = 0;
constexpr char kFirstRuleID[] = "1234";
class DataControlsRulesServiceTest : public testing::Test {
public:
DataControlsRulesServiceTest()
: profile_manager_(TestingBrowserProcess::GetGlobal()) {
EXPECT_TRUE(profile_manager_.SetUp());
profile_ = profile_manager_.CreateTestingProfile("test-user-1");
other_profile_ = profile_manager_.CreateTestingProfile("test-user-2");
incognito_profile_ =
profile()->GetPrimaryOTRProfile(/*create_if_needed=*/true);
}
Profile* profile() { return profile_; }
Profile* other_profile() { return other_profile_; }
Profile* incognito_profile() { return incognito_profile_; }
content::WebContents* web_contents() {
if (!web_contents_) {
content::WebContents::CreateParams params(profile_);
web_contents_ = content::WebContents::Create(params);
}
return web_contents_.get();
}
content::WebContents* other_profile_web_contents() {
if (!other_profile_web_contents_) {
content::WebContents::CreateParams params(other_profile_);
other_profile_web_contents_ = content::WebContents::Create(params);
}
return other_profile_web_contents_.get();
}
content::WebContents* incognito_web_contents() {
if (!incognito_web_contents_) {
content::WebContents::CreateParams params(incognito_profile_);
incognito_web_contents_ = content::WebContents::Create(params);
}
return incognito_web_contents_.get();
}
const GURL google_url() const { return GURL("https://google.com"); }
content::ClipboardEndpoint google_url_endpoint() {
return content::ClipboardEndpoint(
ui::DataTransferEndpoint(google_url()),
base::BindLambdaForTesting([this]() -> content::BrowserContext* {
return static_cast<content::BrowserContext*>(profile());
}),
*web_contents()->GetPrimaryMainFrame());
}
content::ClipboardEndpoint empty_endpoint() const {
return content::ClipboardEndpoint(std::nullopt);
}
content::ClipboardEndpoint incognito_endpoint() {
return content::ClipboardEndpoint(
ui::DataTransferEndpoint(GURL("http://foo.com")),
base::BindLambdaForTesting([this]() -> content::BrowserContext* {
return static_cast<content::BrowserContext*>(incognito_profile());
}),
*incognito_web_contents()->GetPrimaryMainFrame());
}
content::ClipboardEndpoint other_profile_endpoint() {
return content::ClipboardEndpoint(
ui::DataTransferEndpoint(google_url()),
base::BindLambdaForTesting([this]() -> content::BrowserContext* {
return static_cast<content::BrowserContext*>(other_profile());
}),
*other_profile_web_contents()->GetPrimaryMainFrame());
}
void ExpectBlockVerdict(Verdict verdict) const {
ASSERT_EQ(verdict.level(), Rule::Level::kBlock);
EXPECT_EQ(verdict.triggered_rules().size(), 1u);
EXPECT_TRUE(verdict.triggered_rules().count(kFirstRuleIndex));
EXPECT_EQ(verdict.triggered_rules().at(kFirstRuleIndex).rule_name, "block");
EXPECT_EQ(verdict.triggered_rules().at(kFirstRuleIndex).rule_id,
kFirstRuleID);
}
void ExpectWarnVerdict(Verdict verdict) const {
ASSERT_EQ(verdict.level(), Rule::Level::kWarn);
EXPECT_EQ(verdict.triggered_rules().size(), 1u);
EXPECT_TRUE(verdict.triggered_rules().count(kFirstRuleIndex));
EXPECT_EQ(verdict.triggered_rules().at(kFirstRuleIndex).rule_name, "warn");
EXPECT_EQ(verdict.triggered_rules().at(kFirstRuleIndex).rule_id,
kFirstRuleID);
}
void ExpectAllowVerdict(Verdict verdict) const {
ASSERT_EQ(verdict.level(), Rule::Level::kAllow);
EXPECT_TRUE(verdict.triggered_rules().empty());
}
void ExpectNoVerdict(Verdict verdict) const {
ASSERT_EQ(verdict.level(), Rule::Level::kNotSet);
EXPECT_TRUE(verdict.triggered_rules().empty());
}
protected:
content::BrowserTaskEnvironment task_environment_;
TestingProfileManager profile_manager_;
raw_ptr<TestingProfile> profile_;
raw_ptr<TestingProfile> other_profile_;
raw_ptr<Profile> incognito_profile_;
std::unique_ptr<content::WebContents> web_contents_;
std::unique_ptr<content::WebContents> other_profile_web_contents_;
std::unique_ptr<content::WebContents> incognito_web_contents_;
};
} // namespace
TEST_F(DataControlsRulesServiceTest, VerdictsForAllRestrictions) {
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"sources": {
"urls": ["google.com"]
},
"restrictions": [
{"class": "PRINTING", "level": "BLOCK"},
{"class": "CLIPBOARD", "level": "BLOCK"},
{"class": "SCREENSHOT", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPrintVerdict(google_url()));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
EXPECT_TRUE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->BlockScreenshots(google_url()));
}
TEST_F(DataControlsRulesServiceTest, NoRuleSet) {
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPrintVerdict(google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
EXPECT_FALSE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->BlockScreenshots(google_url()));
}
TEST_F(DataControlsRulesServiceTest, SourceURL) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"sources": {
"urls": ["google.com"]
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"},
{"class": "PRINTING", "level": "BLOCK"},
{"class": "SCREENSHOT", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPrintVerdict(google_url()));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
EXPECT_TRUE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->BlockScreenshots(google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"sources": {
"urls": ["google.com"]
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"},
{"class": "PRINTING", "level": "WARN"},
{"class": "SCREENSHOT", "level": "WARN"}
]
})"});
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPrintVerdict(google_url()));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
EXPECT_FALSE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->BlockScreenshots(google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"sources": {
"urls": ["google.com"]
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"},
{"class": "PRINTING", "level": "ALLOW"},
{"class": "SCREENSHOT", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"sources": {
"urls": ["https://*"]
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"},
{"class": "PRINTING", "level": "WARN"},
{"class": "SCREENSHOT", "level": "BLOCK"}
]
})"});
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPrintVerdict(google_url()));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
EXPECT_FALSE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->BlockScreenshots(google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, DestinationURL) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"destinations": {
"urls": ["google.com"]
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"destinations": {
"urls": ["google.com"]
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"destinations": {
"urls": ["google.com"]
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"destinations": {
"urls": ["https://*"]
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, SourceIncognito) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"sources": {
"incognito": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"},
{"class": "SCREENSHOT", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ incognito_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ incognito_endpoint(),
/*metadata*/ {}));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
EXPECT_TRUE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->BlockScreenshots(google_url()));
EXPECT_FALSE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->BlockScreenshots(google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"sources": {
"incognito": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"},
{"class": "SCREENSHOT", "level": "WARN"}
]
})"});
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ incognito_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ incognito_endpoint(),
/*metadata*/ {}));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
EXPECT_FALSE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->BlockScreenshots(google_url()));
EXPECT_FALSE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->BlockScreenshots(google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"sources": {
"incognito": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"},
{"class": "SCREENSHOT", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"sources": {
"incognito": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"},
{"class": "SCREENSHOT", "level": "BLOCK"}
]
})"});
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ incognito_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ incognito_endpoint(),
/*metadata*/ {}));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
EXPECT_FALSE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->BlockScreenshots(google_url()));
EXPECT_FALSE(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->BlockScreenshots(google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, DestinationIncognito) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"destinations": {
"incognito": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ incognito_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ incognito_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"destinations": {
"incognito": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ incognito_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ incognito_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"destinations": {
"incognito": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"destinations": {
"incognito": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ incognito_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ incognito_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, OSClipboardDestination) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"destinations": {
"os_clipboard": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"}
]
})"});
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"destinations": {
"os_clipboard": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"destinations": {
"os_clipboard": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"destinations": {
"os_clipboard": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, NonOSClipboardDestination) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"destinations": {
"os_clipboard": false
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"destinations": {
"os_clipboard": false
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"destinations": {
"os_clipboard": false
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"destinations": {
"os_clipboard": false
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, SourceOtherProfile) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"sources": {
"other_profile": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ other_profile_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ other_profile_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"sources": {
"other_profile": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ other_profile_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ other_profile_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"sources": {
"other_profile": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"sources": {
"other_profile": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ other_profile_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ other_profile_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(incognito_profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, DestinationOtherProfile) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"destinations": {
"other_profile": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ other_profile_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ other_profile_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"destinations": {
"other_profile": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ other_profile_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ other_profile_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"destinations": {
"other_profile": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"destinations": {
"other_profile": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ other_profile_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ other_profile_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, OSClipboardSource) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"sources": {
"os_clipboard": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"}
]
})"});
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"sources": {
"os_clipboard": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"sources": {
"os_clipboard": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"sources": {
"os_clipboard": true
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
}
TEST_F(DataControlsRulesServiceTest, NonOSClipboardSource) {
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "block",
"rule_id": "1234",
"sources": {
"os_clipboard": false
},
"restrictions": [
{"class": "CLIPBOARD", "level": "BLOCK"}
]
})"});
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectBlockVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
SetDataControls(profile()->GetPrefs(), {R"({
"name": "warn",
"rule_id": "1234",
"sources": {
"os_clipboard": false
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectWarnVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
{
// When multiple rules are triggered, "ALLOW" should have precedence over
// any other value.
SetDataControls(profile()->GetPrefs(), {
R"({
"name": "allow",
"rule_id": "1234",
"sources": {
"os_clipboard": false
},
"restrictions": [
{"class": "CLIPBOARD", "level": "ALLOW"}
]
})",
R"({
"name": "warn",
"rule_id": "5678",
"sources": {
"os_clipboard": false
},
"restrictions": [
{"class": "CLIPBOARD", "level": "WARN"}
]
})"});
ExpectNoVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ empty_endpoint(),
/*destination*/ google_url_endpoint(),
/*metadata*/ {}));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetPasteVerdict(
/*source*/ google_url_endpoint(),
/*destination*/ empty_endpoint(),
/*metadata*/ {}));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyToOSClipboardVerdict(
/*source*/ google_url()));
ExpectAllowVerdict(ChromeRulesServiceFactory::GetInstance()
->GetForBrowserContext(profile())
->GetCopyRestrictedBySourceVerdict(
/*source*/ google_url()));
}
}
} // namespace data_controls