| // Copyright 2017 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/signin/scoped_account_consistency.h" |
| |
| #include <map> |
| #include <string> |
| #include <utility> |
| |
| #include "base/feature_list.h" |
| #include "base/logging.h" |
| #include "chrome/browser/signin/account_consistency_mode_manager.h" |
| #include "components/signin/core/browser/signin_buildflags.h" |
| |
| using signin::AccountConsistencyMethod; |
| |
| ScopedAccountConsistency::ScopedAccountConsistency( |
| AccountConsistencyMethod method) { |
| DCHECK_NE(AccountConsistencyMethod::kDisabled, method); |
| #if !BUILDFLAG(ENABLE_DICE_SUPPORT) |
| DCHECK_NE(AccountConsistencyMethod::kDice, method); |
| DCHECK_NE(AccountConsistencyMethod::kDiceMigration, method); |
| #endif |
| |
| #if BUILDFLAG(ENABLE_MIRROR) |
| DCHECK_EQ(AccountConsistencyMethod::kMirror, method); |
| return; |
| #endif |
| |
| // Set up the account consistency method. |
| std::string feature_value; |
| switch (method) { |
| case AccountConsistencyMethod::kDisabled: |
| NOTREACHED(); |
| break; |
| case AccountConsistencyMethod::kMirror: |
| feature_value = kAccountConsistencyFeatureMethodMirror; |
| break; |
| case AccountConsistencyMethod::kDiceMigration: |
| feature_value = kAccountConsistencyFeatureMethodDiceMigration; |
| break; |
| case AccountConsistencyMethod::kDice: |
| feature_value = kAccountConsistencyFeatureMethodDice; |
| break; |
| } |
| |
| std::map<std::string, std::string> feature_params; |
| feature_params[kAccountConsistencyFeatureMethodParameter] = feature_value; |
| |
| scoped_feature_list_.InitAndEnableFeatureWithParameters( |
| kAccountConsistencyFeature, feature_params); |
| } |
| |
| ScopedAccountConsistency::~ScopedAccountConsistency() {} |