123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- // Copyright (c) 2012 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.
- #ifndef CHROME_BROWSER_ABOUT_FLAGS_H_
- #define CHROME_BROWSER_ABOUT_FLAGS_H_
- #include <stddef.h>
- #include <stdint.h>
- #include <map>
- #include <set>
- #include <string>
- #include <vector>
- #include "base/command_line.h"
- #include "base/containers/span.h"
- #include "base/metrics/histogram_base.h"
- #include "base/values.h"
- #include "build/build_config.h"
- #include "components/flags_ui/feature_entry.h"
- #include "components/flags_ui/flags_state.h"
- namespace base {
- class FeatureList;
- }
- namespace flags_ui {
- class FlagsStorage;
- }
- namespace about_flags {
- // Returns true if the FeatureEntry should not be shown.
- bool ShouldSkipConditionalFeatureEntry(const flags_ui::FlagsStorage* storage,
- const flags_ui::FeatureEntry& entry);
- // Reads the state from |flags_storage| and adds the command line flags
- // belonging to the active feature entries to |command_line|.
- void ConvertFlagsToSwitches(flags_ui::FlagsStorage* flags_storage,
- base::CommandLine* command_line,
- flags_ui::SentinelsMode sentinels);
- // Registers variations parameter values selected for features in about:flags.
- // The selected flags are retrieved from |flags_storage|, the registered
- // variation parameters are connected to their corresponding features in
- // |feature_list|. Returns the (possibly empty) list of additional variation ids
- // to register in the MetricsService that come from variations selected using
- // chrome://flags.
- std::vector<std::string> RegisterAllFeatureVariationParameters(
- flags_ui::FlagsStorage* flags_storage,
- base::FeatureList* feature_list);
- // Gets the list of feature entries. Entries that are available for the current
- // platform are appended to |supported_entries|; all other entries are appended
- // to |unsupported_entries|.
- void GetFlagFeatureEntries(flags_ui::FlagsStorage* flags_storage,
- flags_ui::FlagAccess access,
- base::Value::List& supported_entries,
- base::Value::List& unsupported_entries);
- // Gets the list of feature entries for the deprecated flags page. Entries that
- // are available for the current platform are appended to |supported_entries|;
- // all other entries are appended to |unsupported_entries|.
- void GetFlagFeatureEntriesForDeprecatedPage(
- flags_ui::FlagsStorage* flags_storage,
- flags_ui::FlagAccess access,
- base::Value::List& supported_entries,
- base::Value::List& unsupported_entries);
- // Gets the FlagsState used in about_flags.
- flags_ui::FlagsState* GetCurrentFlagsState();
- // Returns true if one of the feature entry flags has been flipped since
- // startup.
- bool IsRestartNeededToCommitChanges();
- // Enables or disables the current with id |internal_name|.
- void SetFeatureEntryEnabled(flags_ui::FlagsStorage* flags_storage,
- const std::string& internal_name,
- bool enable);
- // Sets a flag value with a list of origins given by |value|. Origins in |value|
- // can be separated by a comma or whitespace. Invalid URLs will be dropped when
- // setting the command line flag.
- // E.g. SetOriginListFlag("test-flag",
- // "http://example.test1 http://example.test2",
- // flags_storage);
- // will add --test-flag=http://example.test to the command line.
- void SetOriginListFlag(const std::string& internal_name,
- const std::string& value,
- flags_ui::FlagsStorage* flags_storage);
- // Removes all switches that were added to a command line by a previous call to
- // |ConvertFlagsToSwitches()|.
- void RemoveFlagsSwitches(base::CommandLine::SwitchMap* switch_list);
- // Reset all flags to the default state by clearing all flags.
- void ResetAllFlags(flags_ui::FlagsStorage* flags_storage);
- #if BUILDFLAG(IS_CHROMEOS)
- // Show flags of the other browser (Lacros/Ash).
- void CrosUrlFlagsRedirect();
- #endif
- // Sends UMA stats about experimental flag usage. This should be called once per
- // startup.
- void RecordUMAStatistics(flags_ui::FlagsStorage* flags_storage,
- const std::string& histogram_name);
- namespace testing {
- // This class sets the testing feature entries to the feature entries passed in
- // to Init. It clears the testing feature entries on destruction, so
- // the feature entries return to their non test values.
- class ScopedFeatureEntries final {
- public:
- explicit ScopedFeatureEntries(
- const std::vector<flags_ui::FeatureEntry>& entries);
- ~ScopedFeatureEntries();
- };
- base::span<const flags_ui::FeatureEntry> GetFeatureEntries();
- } // namespace testing
- } // namespace about_flags
- #endif // CHROME_BROWSER_ABOUT_FLAGS_H_
|