blob: 8c9c2277f11ea89cdcff8ac281e24cb550b06121 [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 "build/build_config.h"
#include "build/buildflag.h"
#include "build/chromeos_buildflags.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",
#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_ENABLED_BY_DEFAULT
#endif
};
const base::Feature kSendTabToSelfManageDevicesLink{
"SendTabToSelfManageDevicesLink",
#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_ENABLED_BY_DEFAULT
#endif
};
const base::Feature kSendTabToSelfV2{
"SendTabToSelfV2",
#if defined(OS_ANDROID) || defined(OS_IOS)
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_ENABLED_BY_DEFAULT
#endif
};
bool IsReceivingEnabledByUserOnThisDevice(PrefService* prefs) {
// TODO(crbug.com/1015322): SyncPrefs is used directly instead of methods in
// SyncService due to a dependency of SyncServiceImpl 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