1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
// 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 "base/test/scoped_feature_list.h"
#include "chrome/browser/policy/policy_test_utils.h"
#include "components/policy/policy_constants.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "third_party/blink/public/common/features.h"
namespace policy {
namespace {
enum class Policy {
kDefault,
kTrue,
kFalse,
};
} // namespace
class SelectParserRelaxationEnabledPolicyBrowserTest
: public PolicyTest,
public ::testing::WithParamInterface<Policy> {
public:
static std::string DescribeParams(
const ::testing::TestParamInfo<ParamType>& info) {
switch (info.param) {
case Policy::kDefault:
return "Default";
case Policy::kTrue:
return "True";
case Policy::kFalse:
return "False";
}
}
protected:
void SetUpInProcessBrowserTestFixture() override {
PolicyTest::SetUpInProcessBrowserTestFixture();
if (GetParam() == Policy::kDefault) {
return;
}
PolicyMap policies;
SetPolicy(&policies, key::kSelectParserRelaxationEnabled,
base::Value(GetParam() == Policy::kTrue));
UpdateProviderPolicy(policies);
}
private:
base::test::ScopedFeatureList feature_list_;
};
IN_PROC_BROWSER_TEST_P(SelectParserRelaxationEnabledPolicyBrowserTest,
PolicyIsFollowed) {
// By default the new behavior should be enabled.
const bool expected_enabled = GetParam() != Policy::kFalse;
ASSERT_TRUE(embedded_test_server()->Start());
const GURL url(
embedded_test_server()->GetURL("/select_parser_relaxation.html"));
ASSERT_TRUE(NavigateToUrl(url, this));
const bool actual_enabled =
content::EvalJs(chrome_test_utils::GetActiveWebContents(this),
"window.selectParserRelaxationEnabled")
.ExtractBool();
EXPECT_EQ(actual_enabled, expected_enabled);
// The dependency in RuntimeEnabledFeatures should disable CustomizableSelect
// when SelectParserRelaxation is disabled.
const bool customizable_select_enabled =
content::EvalJs(chrome_test_utils::GetActiveWebContents(this),
"window.customizableSelectEnabled")
.ExtractBool();
EXPECT_EQ(customizable_select_enabled, expected_enabled);
}
INSTANTIATE_TEST_SUITE_P(
/* no prefix */,
SelectParserRelaxationEnabledPolicyBrowserTest,
::testing::Values(Policy::kDefault, Policy::kTrue, Policy::kFalse),
&SelectParserRelaxationEnabledPolicyBrowserTest::DescribeParams);
} // namespace policy
|