123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "android_webview/browser/aw_feature_entries.h"
- #include "base/feature_list.h"
- #include "base/metrics/field_trial.h"
- #include "base/metrics/field_trial_params.h"
- #include "base/test/scoped_feature_list.h"
- #include "components/flags_ui/feature_entry.h"
- #include "components/flags_ui/feature_entry_macros.h"
- #include "components/flags_ui/flags_state.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace android_webview {
- namespace {
- const base::Feature kTestFeature{"AwFeatureEntriesTest",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kTestFeature2{"AwFeatureEntriesTest2",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const flags_ui::FeatureEntry::FeatureParam kForceDark_SimpleHsl[] = {
- {"inversion_method", "hsl_based"},
- {"image_behavior", "none"},
- {"foreground_lightness_threshold", "255"},
- {"background_lightness_threshold", "0"}};
- const flags_ui::FeatureEntry::FeatureParam kForceDark_SimpleCielab[] = {
- {"inversion_method", "cielab_based"},
- {"image_behavior", "none"},
- {"foreground_lightness_threshold", "255"},
- {"background_lightness_threshold", "0"}};
- const flags_ui::FeatureEntry::FeatureParam kForceDark_SimpleRgb[] = {
- {"inversion_method", "rgb_based"},
- {"image_behavior", "none"},
- {"foreground_lightness_threshold", "255"},
- {"background_lightness_threshold", "0"}};
- const flags_ui::FeatureEntry::FeatureVariation kForceDarkVariations[] = {
- {"with simple HSL-based inversion", kForceDark_SimpleHsl,
- std::size(kForceDark_SimpleHsl), nullptr},
- {"with simple CIELAB-based inversion", kForceDark_SimpleCielab,
- std::size(kForceDark_SimpleCielab), nullptr},
- {"with simple RGB-based inversion", kForceDark_SimpleRgb,
- std::size(kForceDark_SimpleRgb), nullptr}};
- // Not for display, set the descriptions to empty.
- flags_ui::FeatureEntry kForceDark = {
- "enable-force-dark", "", "", flags_ui::kOsWebView,
- FEATURE_WITH_PARAMS_VALUE_TYPE(kTestFeature,
- kForceDarkVariations,
- "ForceDarkVariations")};
- flags_ui::FeatureEntry kForceDarkDisabled = {
- "enable-force-dark2", "", "", flags_ui::kOsWebView,
- FEATURE_WITH_PARAMS_VALUE_TYPE(kTestFeature2,
- kForceDarkVariations,
- "ForceDarkVariations")};
- flags_ui::FeatureEntry kWebViewTestFeatureEntries[] = {
- kForceDark,
- kForceDarkDisabled,
- };
- void VerifyFeatureParameters(
- const flags_ui::FeatureEntry::FeatureVariation& variation) {
- for (int i = 0; i < variation.num_params; i++) {
- base::FeatureParam<std::string> param{
- &kTestFeature, variation.params[i].param_name, nullptr};
- EXPECT_EQ(variation.params[i].param_value, param.Get());
- }
- }
- } // namespace
- TEST(AwFeatureEntriesTest, ToEnabledEntry) {
- EXPECT_EQ("enable-force-dark@2",
- aw_feature_entries::internal::ToEnabledEntry(kForceDark, 0));
- EXPECT_EQ("enable-force-dark@4",
- aw_feature_entries::internal::ToEnabledEntry(kForceDark, 2));
- }
- TEST(AwFeatureEntriesTest, RegisterEnabledFeatureEntries) {
- std::set<std::string> enabled_entries;
- enabled_entries.insert(
- aw_feature_entries::internal::ToEnabledEntry(kForceDark, 2));
- auto feature_list = std::make_unique<base::FeatureList>();
- flags_ui::FlagsState::RegisterEnabledFeatureVariationParameters(
- kWebViewTestFeatureEntries, enabled_entries, "webview_dev_ui",
- feature_list.get());
- EXPECT_FALSE(feature_list->IsFeatureOverridden(kTestFeature2.name));
- EXPECT_TRUE(feature_list->IsFeatureOverridden(kTestFeature.name));
- // FeatureList can only be queried when the initialization is done, replaces
- // the global one to set the initialization being finished.
- base::test::ScopedFeatureList scoped_feature_list;
- scoped_feature_list.InitWithFeatureList(std::move(feature_list));
- base::FieldTrial* field_trial =
- base::FeatureList::GetInstance()->GetEnabledFieldTrialByFeatureName(
- kForceDark.feature.feature->name);
- EXPECT_TRUE(field_trial);
- EXPECT_EQ("webview_dev_ui", field_trial->group_name());
- EXPECT_EQ("ForceDarkVariations", field_trial->trial_name());
- // Verify the enabled variation kForceDark_SimpleRgb (index = 2) setup
- // correctly.
- VerifyFeatureParameters(kForceDark.feature.feature_variations[2]);
- }
- } // namespace android_webview
|