[sync] Add methods to sync_client_utils to query local data and upload

This CL adds util methods to sync_client_utils for use by SyncClient
implementations while allowing common tests for ios and non-ios.

Bug: 1451508
Change-Id: I07ab092f7b1a02ebf4b58288b380d68378218756
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4827062
Reviewed-by: Marc Treib <[email protected]>
Commit-Queue: Ankush Singh <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1190296}
diff --git a/components/browser_sync/BUILD.gn b/components/browser_sync/BUILD.gn
index 132ecc7..cb17d96 100644
--- a/components/browser_sync/BUILD.gn
+++ b/components/browser_sync/BUILD.gn
@@ -17,6 +17,8 @@
     "signin_confirmation_helper.h",
     "sync_api_component_factory_impl.cc",
     "sync_api_component_factory_impl.h",
+    "sync_client_utils.cc",
+    "sync_client_utils.h",
   ]
 
   public_deps = [ "//components/sync" ]
diff --git a/components/browser_sync/sync_client_utils.cc b/components/browser_sync/sync_client_utils.cc
new file mode 100644
index 0000000..1c147f1
--- /dev/null
+++ b/components/browser_sync/sync_client_utils.cc
@@ -0,0 +1,28 @@
+// Copyright 2023 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/browser_sync/sync_client_utils.h"
+
+#include "base/functional/callback.h"
+#include "base/notreached.h"
+#include "components/sync/service/local_data_description.h"
+
+namespace browser_sync::sync_client_utils {
+
+void GetLocalDataDescriptions(
+    syncer::ModelTypeSet types,
+    base::OnceCallback<void(
+        std::map<syncer::ModelType, syncer::LocalDataDescription>)> callback,
+    DataTypeModels local_and_account_models) {
+  // TODO(crbug.com/1451508): Implement this.
+  NOTIMPLEMENTED();
+}
+
+void TriggerLocalDataMigration(syncer::ModelTypeSet types,
+                               DataTypeModels local_and_account_models) {
+  // TODO(crbug.com/1451508): Implement this.
+  NOTIMPLEMENTED();
+}
+
+}  // namespace browser_sync::sync_client_utils
diff --git a/components/browser_sync/sync_client_utils.h b/components/browser_sync/sync_client_utils.h
new file mode 100644
index 0000000..bf2c179
--- /dev/null
+++ b/components/browser_sync/sync_client_utils.h
@@ -0,0 +1,58 @@
+// Copyright 2023 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_BROWSER_SYNC_SYNC_CLIENT_UTILS_H_
+#define COMPONENTS_BROWSER_SYNC_SYNC_CLIENT_UTILS_H_
+
+#include <map>
+
+#include "base/functional/callback_forward.h"
+#include "components/sync/base/model_type.h"
+
+namespace password_manager {
+class PasswordStoreInterface;
+}  // namespace password_manager
+
+namespace bookmarks {
+class BookmarkModel;
+}  // namespace bookmarks
+
+namespace reading_list {
+class DualReadingListModel;
+}  // namespace reading_list
+
+namespace syncer {
+struct LocalDataDescription;
+}  // namespace syncer
+
+namespace browser_sync::sync_client_utils {
+// A struct to handle passing local and account stores/models to the util
+// methods.
+struct DataTypeModels {
+  // For PASSWORDS.
+  raw_ptr<password_manager::PasswordStoreInterface> profile_password_store =
+      nullptr;
+  raw_ptr<password_manager::PasswordStoreInterface> account_password_store =
+      nullptr;
+
+  // For BOOKMARKS.
+  raw_ptr<bookmarks::BookmarkModel> local_bookmark_model = nullptr;
+  raw_ptr<bookmarks::BookmarkModel> account_bookmark_model = nullptr;
+
+  // For READING_LIST.
+  raw_ptr<reading_list::DualReadingListModel> dual_reading_list_model = nullptr;
+};
+
+void GetLocalDataDescriptions(
+    syncer::ModelTypeSet types,
+    base::OnceCallback<void(
+        std::map<syncer::ModelType, syncer::LocalDataDescription>)> callback,
+    DataTypeModels local_and_account_models);
+
+void TriggerLocalDataMigration(syncer::ModelTypeSet types,
+                               DataTypeModels local_and_account_models);
+
+}  // namespace browser_sync::sync_client_utils
+
+#endif  // COMPONENTS_BROWSER_SYNC_SYNC_CLIENT_UTILS_H_