blob: dbf81e728f8e5e505c0b08eedcf24a4239e7e7d4 [file] [log] [blame]
// Copyright 2019 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 "components/send_tab_to_self/features.h"
#include "base/feature_list.h"
#include "components/sync/base/sync_prefs.h"
#include "components/sync/base/user_selectable_type.h"
namespace send_tab_to_self {
const base::Feature kSendTabToSelfWhenSignedIn{
"SendTabToSelfWhenSignedIn", base::FEATURE_DISABLED_BY_DEFAULT};
bool IsReceivingEnabledByUserOnThisDevice(PrefService* prefs) {
// TODO(crbug.com/1015322): SyncPrefs is used directly instead of methods in
// SyncService due to a dependency of ProfileSyncService on
// DeviceInfoSyncService. IsReceivingEnabledByUserOnThisDevice is ultimately
// used by DeviceInfoSyncClient which is owned by DeviceInfoSyncService.
syncer::SyncPrefs sync_prefs(prefs);
if (sync_prefs.IsFirstSetupComplete()) {
// Sync-the-feature was fully setup. Regardless of
// kSendTabToSelfWhenSignedIn, the user-configurable bits should be
// respected in this state.
return sync_prefs.IsSyncRequested() &&
sync_prefs.GetSelectedTypes().Has(syncer::UserSelectableType::kTabs);
}
// Sync-the-feature is disabled or the consent is missing (e.g. sync setup in
// progress). If kSendTabToSelfWhenSignedIn is disabled, receiving shouldn't
// be allowed in this state. If kSendTabToSelfWhenSignedIn is enabled, the
// method can return true without actually checking whether the user is
// signed-in: if they are not, sync-the-transport won't run and receiving tabs
// would be impossible anyway.
return base::FeatureList::IsEnabled(kSendTabToSelfWhenSignedIn);
}
} // namespace send_tab_to_self