chromium/components/sync_device_info/local_device_info_util.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_
#define COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_

#include <string>

#include "base/functional/callback_forward.h"
#include "components/sync_device_info/device_info.h"

namespace sync_pb {
enum SyncEnums_DeviceType : int;
}  // namespace sync_pb

namespace syncer {

// Contains device specific names to be used by DeviceInfo. These are specific
// to the local device only. DeviceInfoSyncBridge uses either |model_name| or
// |personalizable_name| for the |client_name| depending on the current
// SyncMode. Only fully synced clients will use the personalizable name.
struct LocalDeviceNameInfo {};

sync_pb::SyncEnums_DeviceType GetLocalDeviceType();

DeviceInfo::OsType GetLocalDeviceOSType();

DeviceInfo::FormFactor GetLocalDeviceFormFactor();

// Returns the personalizable device name. This may contain
// personally-identifiable information - e.g. Alex's MacbookPro.
std::string GetPersonalizableDeviceNameBlocking();

void GetLocalDeviceNameInfo(
    base::OnceCallback<void(LocalDeviceNameInfo)> callback);

}  // namespace syncer

#endif  // COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_