123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // 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 <set>
- #include "android_webview/common/aw_switches.h"
- #include "base/command_line.h"
- #include "base/metrics/field_trial.h"
- #include "components/flags_ui/feature_entry.h"
- #include "components/flags_ui/feature_entry_macros.h"
- #include "components/flags_ui/flags_state.h"
- #include "components/variations/variations_associated_data.h"
- #include "third_party/blink/public/common/features.h"
- namespace android_webview {
- namespace aw_feature_entries {
- namespace {
- constexpr flags_ui::FeatureEntry::FeatureParam
- kForceDark_SelectiveImageInversion[] = {
- {"inversion_method", "cielab_based"},
- {"image_behavior", "selective"},
- {"foreground_lightness_threshold", "150"},
- {"background_lightness_threshold", "205"}};
- // Not like Chrome, WebView only provides a switch in dev ui and uses the
- // preferred variation if it is turned on.
- constexpr flags_ui::FeatureEntry::FeatureVariation kForceDarkVariations[] = {
- {"with selective image inversion", kForceDark_SelectiveImageInversion,
- std::size(kForceDark_SelectiveImageInversion), nullptr}};
- // Not for display, set the descriptions to empty.
- constexpr flags_ui::FeatureEntry kForceDark = {
- "enable-force-dark", "", "", flags_ui::kOsWebView,
- FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kForceWebContentsDarkMode,
- kForceDarkVariations,
- "ForceDarkVariations")};
- constexpr flags_ui::FeatureEntry kWebViewFeatureEntries[] = {
- kForceDark,
- };
- } // namespace
- namespace internal {
- std::string ToEnabledEntry(const flags_ui::FeatureEntry& entry,
- int enabled_variation_index) {
- CHECK(entry.type == flags_ui::FeatureEntry::FEATURE_WITH_PARAMS_VALUE);
- // Index 0 is "Default" and 1 is "Enabled" inside FeatureEntry.
- return entry.NameForOption(enabled_variation_index + 2);
- }
- } // namespace internal
- std::vector<std::string> RegisterEnabledFeatureEntries(
- base::FeatureList* feature_list) {
- std::set<std::string> enabled_entries;
- if (base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kWebViewSelectiveImageInversionDarkening)) {
- enabled_entries.insert(internal::ToEnabledEntry(kForceDark, 0));
- }
- return flags_ui::FlagsState::RegisterEnabledFeatureVariationParameters(
- kWebViewFeatureEntries, enabled_entries, /*trial_name=*/"webview_dev_ui",
- feature_list);
- }
- } // namespace aw_feature_entries
- } // namespace android_webview
|