| Index: chrome/browser/supervised_user/experimental/supervised_user_filtering_switches.cc
|
| diff --git a/chrome/browser/supervised_user/experimental/supervised_user_filtering_switches.cc b/chrome/browser/supervised_user/experimental/supervised_user_filtering_switches.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..557580730d1e7b64111d5f7d3a2e1a98e454cb59
|
| --- /dev/null
|
| +++ b/chrome/browser/supervised_user/experimental/supervised_user_filtering_switches.cc
|
| @@ -0,0 +1,73 @@
|
| +// Copyright 2015 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 "chrome/browser/supervised_user/experimental/supervised_user_filtering_switches.h"
|
| +
|
| +#include "base/command_line.h"
|
| +#include "base/metrics/field_trial.h"
|
| +#include "chrome/common/chrome_switches.h"
|
| +
|
| +namespace {
|
| +
|
| +enum class SafeSitesState {
|
| + ENABLED,
|
| + DISABLED,
|
| + BLACKLIST_ONLY,
|
| + ONLINE_CHECK_ONLY
|
| +};
|
| +
|
| +const char kSafeSitesFieldTrialName[] = "SafeSites";
|
| +
|
| +SafeSitesState GetState() {
|
| + // Note: It's important to query the field trial state first, to ensure that
|
| + // UMA reports the correct group.
|
| + std::string trial_group =
|
| + base::FieldTrialList::FindFullName(kSafeSitesFieldTrialName);
|
| +
|
| + std::string arg = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| + switches::kSupervisedUserSafeSites);
|
| + if (!arg.empty()) {
|
| + if (arg == "enabled")
|
| + return SafeSitesState::ENABLED;
|
| + else if (arg == "disabled")
|
| + return SafeSitesState::DISABLED;
|
| + else if (arg == "blacklist-only")
|
| + return SafeSitesState::BLACKLIST_ONLY;
|
| + else if (arg == "online-check-only")
|
| + return SafeSitesState::ONLINE_CHECK_ONLY;
|
| +
|
| + LOG(WARNING) << "Invalid value \"" << arg << "\" specified for flag \""
|
| + << switches::kSupervisedUserSafeSites
|
| + << "\", defaulting to \"disabled\"";
|
| + return SafeSitesState::DISABLED;
|
| + }
|
| +
|
| + // If no cmdline arg is specified, evaluate the field trial.
|
| + if (trial_group == "Disabled")
|
| + return SafeSitesState::DISABLED;
|
| + else if (trial_group == "BlacklistOnly")
|
| + return SafeSitesState::BLACKLIST_ONLY;
|
| + else if (trial_group == "OnlineCheckOnly")
|
| + return SafeSitesState::ONLINE_CHECK_ONLY;
|
| + else
|
| + return SafeSitesState::ENABLED;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +namespace supervised_users {
|
| +
|
| +bool IsSafeSitesBlacklistEnabled() {
|
| + SafeSitesState state = GetState();
|
| + return state == SafeSitesState::ENABLED ||
|
| + state == SafeSitesState::BLACKLIST_ONLY;
|
| +}
|
| +
|
| +bool IsSafeSitesOnlineCheckEnabled() {
|
| + SafeSitesState state = GetState();
|
| + return state == SafeSitesState::ENABLED ||
|
| + state == SafeSitesState::ONLINE_CHECK_ONLY;
|
| +}
|
| +
|
| +} // namespace supervised_users
|
|
|