profile_management_switches.cc revision 0529e5d033099cbfc42635f6f6183833b09dff6e
10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "components/signin/core/common/profile_management_switches.h"
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/command_line.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/metrics/field_trial.h"
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "components/signin/core/common/signin_switches.h"
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace {
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char kNewProfileManagementFieldTrialName[] = "NewProfileManagement";
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool CheckProfileManagementFlag(std::string command_switch, bool active_state) {
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Individiual flag settings take precedence.
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (CommandLine::ForCurrentProcess()->HasSwitch(command_switch)) {
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return true;
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // --new-profile-management flag always affects all switches.
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (CommandLine::ForCurrentProcess()->HasSwitch(
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        switches::kNewProfileManagement)) {
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return active_state;
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // NewProfileManagement experiment acts like above flag.
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  std::string trial_type =
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::FieldTrialList::FindFullName(kNewProfileManagementFieldTrialName);
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (!trial_type.empty()) {
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    if (trial_type == "Enabled")
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return active_state;
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    if (trial_type == "Disabled")
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return !active_state;
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return false;
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}  // namespace
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace switches {
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool IsEnableWebBasedSignin() {
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return CheckProfileManagementFlag(switches::kEnableWebBasedSignin, false);
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochbool IsFastUserSwitching() {
490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  bool use_mirror_promo_menu =
500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      CommandLine::ForCurrentProcess()->HasSwitch(switches::kNewAvatarMenu) &&
510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      !IsNewProfileManagement();
520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  return CommandLine::ForCurrentProcess()->HasSwitch(
530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      switches::kFastUserSwitching) || use_mirror_promo_menu;
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochbool IsGoogleProfileInfo() {
570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  return CheckProfileManagementFlag(switches::kGoogleProfileInfo, true);
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochbool IsNewAvatarMenu() {
61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  bool is_new_avatar_menu =
62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      CommandLine::ForCurrentProcess()->HasSwitch(switches::kNewAvatarMenu);
63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  return is_new_avatar_menu || IsNewProfileManagement();
64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
65a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochbool IsNewProfileManagement() {
670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  return CheckProfileManagementFlag(switches::kNewProfileManagement, true);
680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
70a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochbool IsNewProfileManagementPreviewEnabled() {
71a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  bool is_new_avatar_menu =
72a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      CommandLine::ForCurrentProcess()->HasSwitch(switches::kNewAvatarMenu);
73a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  return is_new_avatar_menu && IsNewProfileManagement();
74a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
75a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}  // namespace switches
77