Commit 9f48ffb4 authored by Mikel Astiz's avatar Mikel Astiz Committed by Commit Bot

Merge get_session_name logic into device_info code

There's no need to keep this code under sync/base after the last
refactorings, so we can shrink base libraries, which many build targets
depend on.

Bug: 922971
Change-Id: Ib033a694c9bdd732a3e4346fb63121f540235e60
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1564129Reviewed-by: default avatarMikel Astiz <mastiz@chromium.org>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Reviewed-by: default avatarJeffrey Cohen <jeffreycohen@chromium.org>
Reviewed-by: default avatarSatoru Takabayashi <satorux@chromium.org>
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#658980}
parent fc4f927b
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "components/send_tab_to_self/features.h" #include "components/send_tab_to_self/features.h"
#include "components/send_tab_to_self/proto/send_tab_to_self.pb.h" #include "components/send_tab_to_self/proto/send_tab_to_self.pb.h"
#include "components/send_tab_to_self/target_device_info.h" #include "components/send_tab_to_self/target_device_info.h"
#include "components/sync/base/get_session_name.h"
#include "components/sync/model/entity_change.h" #include "components/sync/model/entity_change.h"
#include "components/sync/model/metadata_batch.h" #include "components/sync/model/metadata_batch.h"
#include "components/sync/model/metadata_change_list.h" #include "components/sync/model/metadata_change_list.h"
...@@ -26,6 +25,7 @@ ...@@ -26,6 +25,7 @@
#include "components/sync/model/mutable_data_batch.h" #include "components/sync/model/mutable_data_batch.h"
#include "components/sync/protocol/model_type_state.pb.h" #include "components/sync/protocol/model_type_state.pb.h"
#include "components/sync_device_info/device_info_tracker.h" #include "components/sync_device_info/device_info_tracker.h"
#include "components/sync_device_info/local_device_info_util.h"
namespace send_tab_to_self { namespace send_tab_to_self {
......
...@@ -552,7 +552,6 @@ source_set("unit_tests") { ...@@ -552,7 +552,6 @@ source_set("unit_tests") {
"base/cryptographer_unittest.cc", "base/cryptographer_unittest.cc",
"base/data_type_histogram_unittest.cc", "base/data_type_histogram_unittest.cc",
"base/enum_set_unittest.cc", "base/enum_set_unittest.cc",
"base/get_session_name_unittest.cc",
"base/hash_util_unittest.cc", "base/hash_util_unittest.cc",
"base/immutable_unittest.cc", "base/immutable_unittest.cc",
"base/model_type_unittest.cc", "base/model_type_unittest.cc",
...@@ -694,11 +693,6 @@ source_set("unit_tests") { ...@@ -694,11 +693,6 @@ source_set("unit_tests") {
"//url", "//url",
] ]
if (is_chromeos) {
# Required by get_session_name_unittest.cc on Chrome OS.
deps += [ "//chromeos/constants" ]
}
if (is_ios) { if (is_ios) {
sources -= [ "engine/net/http_bridge_unittest.cc" ] sources -= [ "engine/net/http_bridge_unittest.cc" ]
} }
......
...@@ -21,16 +21,6 @@ jumbo_static_library("base") { ...@@ -21,16 +21,6 @@ jumbo_static_library("base") {
"enum_set.h", "enum_set.h",
"extensions_activity.cc", "extensions_activity.cc",
"extensions_activity.h", "extensions_activity.h",
"get_session_name.cc",
"get_session_name.h",
"get_session_name_ios.h",
"get_session_name_ios.mm",
"get_session_name_linux.cc",
"get_session_name_linux.h",
"get_session_name_mac.h",
"get_session_name_mac.mm",
"get_session_name_win.cc",
"get_session_name_win.h",
"hash_util.cc", "hash_util.cc",
"hash_util.h", "hash_util.h",
"immutable.h", "immutable.h",
...@@ -100,18 +90,6 @@ jumbo_static_library("base") { ...@@ -100,18 +90,6 @@ jumbo_static_library("base") {
"//net", "//net",
"//third_party/zlib", "//third_party/zlib",
] ]
if (is_mac) {
libs = [
"CoreFoundation.framework",
"SystemConfiguration.framework", # Required by get_session_name_mac.mm.
]
}
if (is_chromeos) {
# Required by get_session_name.cc on Chrome OS.
deps += [ "//chromeos/constants" ]
}
} }
static_library("test_support") { static_library("test_support") {
......
include_rules = [ include_rules = [
"+chromeos",
"+components/invalidation", "+components/invalidation",
"+components/os_crypt", "+components/os_crypt",
"+components/pref_registry", "+components/pref_registry",
......
// Copyright (c) 2012 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/sync/base/get_session_name.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/callback.h"
#include "base/location.h"
#include "base/strings/string_util.h"
#include "base/system/sys_info.h"
#include "base/task_runner.h"
#include "base/task_runner_util.h"
#include "base/threading/scoped_blocking_call.h"
#include "build/build_config.h"
#if defined(OS_CHROMEOS)
#include "chromeos/constants/devicetype.h"
#elif defined(OS_LINUX)
#include "components/sync/base/get_session_name_linux.h"
#elif defined(OS_IOS)
#include "components/sync/base/get_session_name_ios.h"
#elif defined(OS_MACOSX)
#include "components/sync/base/get_session_name_mac.h"
#elif defined(OS_WIN)
#include "components/sync/base/get_session_name_win.h"
#elif defined(OS_ANDROID)
#include "base/android/build_info.h"
#endif
namespace syncer {
std::string GetSessionNameBlocking() {
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
base::BlockingType::MAY_BLOCK);
std::string session_name;
#if defined(OS_CHROMEOS)
switch (chromeos::GetDeviceType()) {
case chromeos::DeviceType::kChromebase:
session_name = "Chromebase";
break;
case chromeos::DeviceType::kChromebit:
session_name = "Chromebit";
break;
case chromeos::DeviceType::kChromebook:
session_name = "Chromebook";
break;
case chromeos::DeviceType::kChromebox:
session_name = "Chromebox";
break;
case chromeos::DeviceType::kUnknown:
session_name = "Chromebook";
break;
}
#elif defined(OS_LINUX)
session_name = internal::GetHostname();
#elif defined(OS_IOS)
session_name = internal::GetComputerName();
#elif defined(OS_MACOSX)
session_name = internal::GetHardwareModelName();
#elif defined(OS_WIN)
session_name = internal::GetComputerName();
#elif defined(OS_ANDROID)
base::android::BuildInfo* android_build_info =
base::android::BuildInfo::GetInstance();
session_name = android_build_info->model();
#endif
if (session_name == "Unknown" || session_name.empty())
session_name = base::SysInfo::OperatingSystemName();
DCHECK(base::IsStringUTF8(session_name));
return session_name;
}
} // namespace syncer
// Copyright 2012 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.
#ifndef COMPONENTS_SYNC_BASE_GET_SESSION_NAME_H_
#define COMPONENTS_SYNC_BASE_GET_SESSION_NAME_H_
#include <string>
namespace syncer {
// TODO(crbug.com/922971): Move this elsewhere in components/sync/device_info.
std::string GetSessionNameBlocking();
} // namespace syncer
#endif // COMPONENTS_SYNC_BASE_GET_SESSION_NAME_H_
// Copyright 2012 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.
#ifndef COMPONENTS_SYNC_BASE_GET_SESSION_NAME_IOS_H_
#define COMPONENTS_SYNC_BASE_GET_SESSION_NAME_IOS_H_
#include <string>
namespace syncer {
namespace internal {
std::string GetComputerName();
} // namespace internal
} // namespace syncer
#endif // COMPONENTS_SYNC_BASE_GET_SESSION_NAME_IOS_H_
// Copyright (c) 2013 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.
#ifndef COMPONENTS_SYNC_BASE_GET_SESSION_NAME_LINUX_H_
#define COMPONENTS_SYNC_BASE_GET_SESSION_NAME_LINUX_H_
#include <string>
namespace syncer {
namespace internal {
std::string GetHostname();
} // namespace internal
} // namespace syncer
#endif // COMPONENTS_SYNC_BASE_GET_SESSION_NAME_LINUX_H_
// Copyright (c) 2012 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.
#ifndef COMPONENTS_SYNC_BASE_GET_SESSION_NAME_MAC_H_
#define COMPONENTS_SYNC_BASE_GET_SESSION_NAME_MAC_H_
#include <string>
namespace syncer {
namespace internal {
// Returns the Hardware model name, without trailing numbers, if
// possible. See http://www.cocoadev.com/index.pl?MacintoshModels for
// an example list of models. If an error occurs trying to read the
// model, this simply returns "Unknown".
std::string GetHardwareModelName();
} // namespace internal
} // namespace syncer
#endif // COMPONENTS_SYNC_BASE_GET_SESSION_NAME_MAC_H_
...@@ -14,7 +14,6 @@ include_rules = [ ...@@ -14,7 +14,6 @@ include_rules = [
"-components/signin/core/browser/signin_manager.h", "-components/signin/core/browser/signin_manager.h",
"-components/signin/core/browser/signin_manager_base.h", "-components/signin/core/browser/signin_manager_base.h",
"+components/sync/base", "+components/sync/base",
"+components/sync/device_info",
"+components/sync/engine", "+components/sync/engine",
"+components/sync/js", "+components/sync/js",
"+components/sync/model", "+components/sync/model",
......
...@@ -26,6 +26,11 @@ jumbo_static_library("sync_device_info") { ...@@ -26,6 +26,11 @@ jumbo_static_library("sync_device_info") {
"local_device_info_provider_impl.h", "local_device_info_provider_impl.h",
"local_device_info_util.cc", "local_device_info_util.cc",
"local_device_info_util.h", "local_device_info_util.h",
"local_device_info_util_android.cc",
"local_device_info_util_ios.mm",
"local_device_info_util_linux.cc",
"local_device_info_util_mac.mm",
"local_device_info_util_win.cc",
] ]
configs += [ "//build/config:precompiled_headers" ] configs += [ "//build/config:precompiled_headers" ]
...@@ -43,6 +48,18 @@ jumbo_static_library("sync_device_info") { ...@@ -43,6 +48,18 @@ jumbo_static_library("sync_device_info") {
] ]
configs += [ "//build/config/compiler:wexit_time_destructors" ] configs += [ "//build/config/compiler:wexit_time_destructors" ]
if (is_mac) {
libs = [
"CoreFoundation.framework",
"SystemConfiguration.framework", # Required by local_device_info_util_mac.mm.
]
}
if (is_chromeos) {
# Required by device_info_util_linux.cc on Chrome OS.
deps += [ "//chromeos/constants" ]
}
} }
source_set("unit_tests") { source_set("unit_tests") {
...@@ -52,6 +69,7 @@ source_set("unit_tests") { ...@@ -52,6 +69,7 @@ source_set("unit_tests") {
"device_info_sync_bridge_unittest.cc", "device_info_sync_bridge_unittest.cc",
"device_info_util_unittest.cc", "device_info_util_unittest.cc",
"local_device_info_provider_impl_unittest.cc", "local_device_info_provider_impl_unittest.cc",
"local_device_info_util_unittest.cc",
] ]
configs += [ "//build/config:precompiled_headers" ] configs += [ "//build/config:precompiled_headers" ]
...@@ -65,4 +83,9 @@ source_set("unit_tests") { ...@@ -65,4 +83,9 @@ source_set("unit_tests") {
"//testing/gmock", "//testing/gmock",
"//testing/gtest", "//testing/gtest",
] ]
if (is_chromeos) {
# Required by local_device_info_util_unittest.cc on Chrome OS.
deps += [ "//chromeos/constants" ]
}
} }
include_rules = [ include_rules = [
"+chromeos",
"+components/keyed_service", "+components/keyed_service",
"+components/metrics", "+components/metrics",
"+components/sync/base", "+components/sync/base",
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/location.h" #include "base/location.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "components/sync/base/get_session_name.h"
#include "components/sync/base/time.h" #include "components/sync/base/time.h"
#include "components/sync/model/data_type_activation_request.h" #include "components/sync/model/data_type_activation_request.h"
#include "components/sync/model/entity_change.h" #include "components/sync/model/entity_change.h"
...@@ -24,6 +23,7 @@ ...@@ -24,6 +23,7 @@
#include "components/sync/protocol/model_type_state.pb.h" #include "components/sync/protocol/model_type_state.pb.h"
#include "components/sync/protocol/sync.pb.h" #include "components/sync/protocol/sync.pb.h"
#include "components/sync_device_info/device_info_util.h" #include "components/sync_device_info/device_info_util.h"
#include "components/sync_device_info/local_device_info_util.h"
namespace syncer { namespace syncer {
......
...@@ -4,11 +4,18 @@ ...@@ -4,11 +4,18 @@
#include "components/sync_device_info/local_device_info_util.h" #include "components/sync_device_info/local_device_info_util.h"
#include "base/location.h"
#include "base/strings/string_util.h"
#include "base/system/sys_info.h"
#include "base/threading/scoped_blocking_call.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "ui/base/device_form_factor.h" #include "ui/base/device_form_factor.h"
namespace syncer { namespace syncer {
// Declared here but defined in platform-specific files.
std::string GetSessionNameInternal();
sync_pb::SyncEnums::DeviceType GetLocalDeviceType() { sync_pb::SyncEnums::DeviceType GetLocalDeviceType() {
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
return sync_pb::SyncEnums_DeviceType_TYPE_CROS; return sync_pb::SyncEnums_DeviceType_TYPE_CROS;
...@@ -27,4 +34,17 @@ sync_pb::SyncEnums::DeviceType GetLocalDeviceType() { ...@@ -27,4 +34,17 @@ sync_pb::SyncEnums::DeviceType GetLocalDeviceType() {
#endif #endif
} }
std::string GetSessionNameBlocking() {
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
base::BlockingType::MAY_BLOCK);
std::string session_name = GetSessionNameInternal();
if (session_name == "Unknown" || session_name.empty()) {
session_name = base::SysInfo::OperatingSystemName();
}
DCHECK(base::IsStringUTF8(session_name));
return session_name;
}
} // namespace syncer } // namespace syncer
...@@ -5,12 +5,16 @@ ...@@ -5,12 +5,16 @@
#ifndef COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_ #ifndef COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_
#define COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_ #define COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_
#include <string>
#include "components/sync/protocol/sync_enums.pb.h" #include "components/sync/protocol/sync_enums.pb.h"
namespace syncer { namespace syncer {
sync_pb::SyncEnums::DeviceType GetLocalDeviceType(); sync_pb::SyncEnums::DeviceType GetLocalDeviceType();
std::string GetSessionNameBlocking();
} // namespace syncer } // namespace syncer
#endif // COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_ #endif // COMPONENTS_SYNC_DEVICE_INFO_LOCAL_DEVICE_INFO_UTIL_H_
...@@ -2,17 +2,16 @@ ...@@ -2,17 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef COMPONENTS_SYNC_BASE_GET_SESSION_NAME_WIN_H_
#define COMPONENTS_SYNC_BASE_GET_SESSION_NAME_WIN_H_
#include <string> #include <string>
#include "base/android/build_info.h"
namespace syncer { namespace syncer {
namespace internal {
std::string GetComputerName(); std::string GetSessionNameInternal() {
base::android::BuildInfo* android_build_info =
base::android::BuildInfo::GetInstance();
return android_build_info->model();
}
} // namespace internal
} // namespace syncer } // namespace syncer
#endif // COMPONENTS_SYNC_BASE_GET_SESSION_NAME_WIN_H_
...@@ -2,18 +2,16 @@ ...@@ -2,18 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/sync/base/get_session_name_ios.h"
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#include <string>
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
namespace syncer { namespace syncer {
namespace internal {
std::string GetComputerName() { std::string GetSessionNameInternal() {
return base::SysNSStringToUTF8([[UIDevice currentDevice] name]); return base::SysNSStringToUTF8([[UIDevice currentDevice] name]);
} }
} // namespace internal
} // namespace syncer } // namespace syncer
...@@ -2,22 +2,40 @@ ...@@ -2,22 +2,40 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/sync/base/get_session_name_linux.h"
#include <limits.h> // for HOST_NAME_MAX #include <limits.h> // for HOST_NAME_MAX
#include <unistd.h> // for gethostname() #include <unistd.h> // for gethostname()
#include <string>
#include "base/linux_util.h" #include "base/linux_util.h"
#if defined(OS_CHROMEOS)
#include "chromeos/constants/devicetype.h"
#endif
namespace syncer { namespace syncer {
namespace internal {
std::string GetHostname() { std::string GetSessionNameInternal() {
#if defined(OS_CHROMEOS)
switch (chromeos::GetDeviceType()) {
case chromeos::DeviceType::kChromebase:
return "Chromebase";
case chromeos::DeviceType::kChromebit:
return "Chromebit";
case chromeos::DeviceType::kChromebook:
return "Chromebook";
case chromeos::DeviceType::kChromebox:
return "Chromebox";
case chromeos::DeviceType::kUnknown:
break;
}
return "Chromebook";
#else
char hostname[HOST_NAME_MAX]; char hostname[HOST_NAME_MAX];
if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success. if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
return hostname; return hostname;
return base::GetLinuxDistro(); return base::GetLinuxDistro();
#endif
} }
} // namespace internal
} // namespace syncer } // namespace syncer
...@@ -2,20 +2,23 @@ ...@@ -2,20 +2,23 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/sync/base/get_session_name_mac.h" #import <SystemConfiguration/SCDynamicStoreCopySpecific.h>
#include <stddef.h> #include <stddef.h>
#include <sys/sysctl.h> #include <sys/sysctl.h>
#import <SystemConfiguration/SCDynamicStoreCopySpecific.h>
#include <string>
#include "base/mac/scoped_cftyperef.h" #include "base/mac/scoped_cftyperef.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
namespace syncer { namespace syncer {
namespace internal {
std::string GetHardwareModelName() { // Returns the Hardware model name, without trailing numbers, if
// possible. See http://www.cocoadev.com/index.pl?MacintoshModels for
// an example list of models. If an error occurs trying to read the
// model, this simply returns "Unknown".
std::string GetSessionNameInternal() {
// Do not use NSHost currentHost, as it's very slow. http://crbug.com/138570 // Do not use NSHost currentHost, as it's very slow. http://crbug.com/138570
SCDynamicStoreContext context = {0, NULL, NULL, NULL}; SCDynamicStoreContext context = {0, NULL, NULL, NULL};
base::ScopedCFTypeRef<SCDynamicStoreRef> store(SCDynamicStoreCreate( base::ScopedCFTypeRef<SCDynamicStoreRef> store(SCDynamicStoreCreate(
...@@ -45,5 +48,4 @@ std::string GetHardwareModelName() { ...@@ -45,5 +48,4 @@ std::string GetHardwareModelName() {
return "Unknown"; return "Unknown";
} }
} // namespace internal
} // namespace syncer } // namespace syncer
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/sync/base/get_session_name.h" #include "components/sync_device_info/local_device_info_util.h"
#include <utility> #include <utility>
......
...@@ -2,18 +2,17 @@ ...@@ -2,18 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "components/sync/base/get_session_name_win.h"
#include <windows.h> #include <windows.h>
#include <string>
#include "base/logging.h" #include "base/logging.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
namespace syncer { namespace syncer {
namespace internal {
std::string GetComputerName() { std::string GetSessionNameInternal() {
wchar_t computer_name[MAX_COMPUTERNAME_LENGTH + 1] = {0}; wchar_t computer_name[MAX_COMPUTERNAME_LENGTH + 1] = {0};
DWORD size = base::size(computer_name); DWORD size = base::size(computer_name);
if (::GetComputerNameW(computer_name, &size)) { if (::GetComputerNameW(computer_name, &size)) {
...@@ -25,5 +24,4 @@ std::string GetComputerName() { ...@@ -25,5 +24,4 @@ std::string GetComputerName() {
return std::string(); return std::string();
} }
} // namespace internal
} // namespace syncer } // namespace syncer
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "base/pickle.h" #include "base/pickle.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event.h"
#include "components/sync/base/get_session_name.h"
#include "components/sync/base/time.h" #include "components/sync/base/time.h"
#include "components/sync/model/entity_change.h" #include "components/sync/model/entity_change.h"
#include "components/sync/model/metadata_batch.h" #include "components/sync/model/metadata_batch.h"
......
...@@ -15,11 +15,11 @@ ...@@ -15,11 +15,11 @@
#include "base/test/mock_callback.h" #include "base/test/mock_callback.h"
#include "base/test/scoped_task_environment.h" #include "base/test/scoped_task_environment.h"
#include "components/prefs/testing_pref_service.h" #include "components/prefs/testing_pref_service.h"
#include "components/sync/base/get_session_name.h"
#include "components/sync/base/hash_util.h" #include "components/sync/base/hash_util.h"
#include "components/sync/model/model_type_store_test_util.h" #include "components/sync/model/model_type_store_test_util.h"
#include "components/sync/protocol/session_specifics.pb.h" #include "components/sync/protocol/session_specifics.pb.h"
#include "components/sync/test/test_matchers.h" #include "components/sync/test/test_matchers.h"
#include "components/sync_device_info/local_device_info_util.h"
#include "components/sync_sessions/mock_sync_sessions_client.h" #include "components/sync_sessions/mock_sync_sessions_client.h"
#include "components/sync_sessions/session_sync_prefs.h" #include "components/sync_sessions/session_sync_prefs.h"
#include "components/sync_sessions/test_matchers.h" #include "components/sync_sessions/test_matchers.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment