mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 14:46:12 -04:00
Create PairingClient.
PiperOrigin-RevId: 883360595
This commit is contained in:
committed by
Copybara-Service
parent
25ac6a21ab
commit
03fe80f0b8
+20
-2
@@ -50,6 +50,7 @@ cc_library(
|
||||
visibility = [
|
||||
"//location/nearby/apps/better_together/windows/nearby_share:__subpackages__",
|
||||
"//location/nearby/cpp/sharing:__subpackages__",
|
||||
"//location/nearby/sharing/lib:__subpackages__",
|
||||
"//location/nearby/sharing/sdk/quick_share_server:__pkg__",
|
||||
"//location/nearby/testing/nearby_native:__subpackages__",
|
||||
"//sharing:__subpackages__",
|
||||
@@ -88,6 +89,7 @@ cc_library(
|
||||
visibility = [
|
||||
"//location/nearby/apps/better_together/windows/nearby_share:__subpackages__",
|
||||
"//location/nearby/cpp/sharing:__subpackages__",
|
||||
"//location/nearby/sharing/lib:__subpackages__",
|
||||
"//location/nearby/sharing/sdk/quick_share_server:__pkg__",
|
||||
"//location/nearby/testing/nearby_native:__subpackages__",
|
||||
"//sharing:__subpackages__",
|
||||
@@ -120,6 +122,7 @@ cc_library(
|
||||
visibility = [
|
||||
"//location/nearby/apps/better_together/windows/nearby_share:__subpackages__",
|
||||
"//location/nearby/cpp/sharing:__subpackages__",
|
||||
"//location/nearby/sharing/lib:__subpackages__",
|
||||
"//location/nearby/sharing/sdk/quick_share_server:__pkg__",
|
||||
"//location/nearby/testing/nearby_native:__subpackages__",
|
||||
"//sharing:__subpackages__",
|
||||
@@ -270,6 +273,9 @@ cc_library(
|
||||
name = "outgoing_targets_manager",
|
||||
srcs = ["outgoing_targets_manager.cc"],
|
||||
hdrs = ["outgoing_targets_manager.h"],
|
||||
visibility = [
|
||||
"//location/nearby/sharing/lib:__subpackages__",
|
||||
],
|
||||
deps = [
|
||||
":share_session",
|
||||
":thread_timer",
|
||||
@@ -353,6 +359,7 @@ cc_library(
|
||||
],
|
||||
visibility = [
|
||||
"//location/nearby/cpp/sharing:__subpackages__",
|
||||
"//location/nearby/sharing/lib:__subpackages__",
|
||||
"//location/nearby/sharing/sdk/quick_share_server:__pkg__",
|
||||
"//location/nearby/testing/nearby_native:__subpackages__",
|
||||
"//sharing:__subpackages__",
|
||||
@@ -440,22 +447,32 @@ cc_library(
|
||||
":attachments",
|
||||
":connection_types",
|
||||
":nearby_sharing_service",
|
||||
":outgoing_targets_manager",
|
||||
":share_session",
|
||||
":transfer_metadata",
|
||||
":types",
|
||||
"//internal/base",
|
||||
"//internal/base:file_path",
|
||||
"//internal/platform:types",
|
||||
"//internal/test",
|
||||
"//location/nearby/sharing/lib/rpc:fake_nearby_share_client",
|
||||
"//location/nearby/sharing/lib/rpc:sharing_rpc_client",
|
||||
"//location/nearby/sharing/lib/sync:sync_manager",
|
||||
"//sharing/analytics",
|
||||
"//sharing/certificates",
|
||||
"//sharing/common:enum",
|
||||
"//sharing/internal/api:platform",
|
||||
"//sharing/internal/public:logging",
|
||||
"//sharing/local_device_data",
|
||||
"//sharing/internal/test:nearby_test",
|
||||
"//sharing/proto:enums_cc_proto",
|
||||
"@com_google_absl//absl/algorithm:container",
|
||||
"@com_google_absl//absl/base:core_headers",
|
||||
"@com_google_absl//absl/container:flat_hash_map",
|
||||
"@com_google_absl//absl/container:flat_hash_set",
|
||||
"@com_google_absl//absl/functional:any_invocable",
|
||||
"@com_google_absl//absl/strings",
|
||||
"@com_google_absl//absl/synchronization",
|
||||
"@com_google_absl//absl/time",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1001,10 +1018,11 @@ cc_test(
|
||||
":test_support",
|
||||
":transfer_metadata",
|
||||
":types",
|
||||
"//internal/base:file_path",
|
||||
"//internal/platform/implementation:platform_impl",
|
||||
"//internal/test",
|
||||
"//sharing/analytics",
|
||||
"//sharing/certificates",
|
||||
"//sharing/certificates:test_support",
|
||||
"@com_github_protobuf_matchers//protobuf-matchers",
|
||||
"@com_google_absl//absl/strings:string_view",
|
||||
"@com_google_googletest//:gtest_main",
|
||||
|
||||
@@ -19,12 +19,17 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "location/nearby/sharing/lib/sync/sync_manager.h"
|
||||
#include "absl/functional/any_invocable.h"
|
||||
#include "internal/base/observer_list.h"
|
||||
#include "internal/platform/clock.h"
|
||||
#include "sharing/advertisement.h"
|
||||
#include "sharing/attachment_container.h"
|
||||
#include "sharing/local_device_data/nearby_share_local_device_data_manager.h"
|
||||
#include "sharing/certificates/nearby_share_certificate_manager.h"
|
||||
#include "sharing/nearby_sharing_service.h"
|
||||
#include "sharing/nearby_sharing_settings.h"
|
||||
#include "sharing/outgoing_share_session.h"
|
||||
#include "sharing/outgoing_targets_manager.h"
|
||||
#include "sharing/share_target.h"
|
||||
#include "sharing/share_target_discovered_callback.h"
|
||||
#include "sharing/transfer_metadata.h"
|
||||
@@ -34,6 +39,22 @@
|
||||
namespace nearby {
|
||||
namespace sharing {
|
||||
|
||||
FakeNearbySharingService::FakeNearbySharingService()
|
||||
: service_thread_(&clock_, /*count=*/1),
|
||||
analytics_recorder_(/*vendor_id=*/0, /*event_logger=*/nullptr),
|
||||
sync_manager_(std::make_unique<SyncManager>(&identity_rpc_client_,
|
||||
&preference_manager_)),
|
||||
outgoing_targets_manager_(std::make_unique<OutgoingTargetsManager>(
|
||||
&clock_, &service_thread_, &connections_manager_,
|
||||
&analytics_recorder_,
|
||||
[this](const ShareTarget& target) {
|
||||
FireShareTargetDiscovered(target);
|
||||
},
|
||||
[this](const ShareTarget& target) { FireShareTargetUpdated(target); },
|
||||
[this](const ShareTarget& target) { FireShareTargetLost(target); },
|
||||
/*transfer_update_callback=*/
|
||||
[](OutgoingShareSession&, const TransferMetadata&) {})) {}
|
||||
|
||||
void FakeNearbySharingService::AddObserver(Observer* observer) {
|
||||
observers_.AddObserver(observer);
|
||||
}
|
||||
@@ -54,7 +75,7 @@ void FakeNearbySharingService::RegisterSendSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
ShareTargetDiscoveredCallback* discovery_callback, SendSurfaceState state,
|
||||
Advertisement::BlockedVendorId blocked_vendor_id, bool disable_wifi_hotspot,
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
if (state == SendSurfaceState::kForeground) {
|
||||
foreground_send_surface_map_.insert(
|
||||
{transfer_callback,
|
||||
@@ -73,7 +94,7 @@ void FakeNearbySharingService::RegisterSendSurface(
|
||||
// Unregisters the current send surface.
|
||||
void FakeNearbySharingService::UnregisterSendSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
foreground_send_surface_map_.erase(transfer_callback);
|
||||
background_send_surface_map_.erase(transfer_callback);
|
||||
|
||||
@@ -84,7 +105,7 @@ void FakeNearbySharingService::UnregisterSendSurface(
|
||||
void FakeNearbySharingService::RegisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback, ReceiveSurfaceState state,
|
||||
Advertisement::BlockedVendorId vendor_id,
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
if (state == ReceiveSurfaceState::kForeground) {
|
||||
foreground_receive_transfer_callbacks_.AddObserver(transfer_callback);
|
||||
} else {
|
||||
@@ -97,7 +118,7 @@ void FakeNearbySharingService::RegisterReceiveSurface(
|
||||
// Unregisters the current receive surface.
|
||||
void FakeNearbySharingService::UnregisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
foreground_receive_transfer_callbacks_.RemoveObserver(transfer_callback);
|
||||
background_receive_transfer_callbacks_.RemoveObserver(transfer_callback);
|
||||
status_codes_callback(StatusCodes::kOk);
|
||||
@@ -105,7 +126,7 @@ void FakeNearbySharingService::UnregisterReceiveSurface(
|
||||
|
||||
// Unregisters all foreground receive surfaces.
|
||||
void FakeNearbySharingService::ClearForegroundReceiveSurfaces(
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
status_codes_callback(StatusCodes::kOk);
|
||||
}
|
||||
|
||||
@@ -148,11 +169,6 @@ std::string FakeNearbySharingService::Dump() const { return ""; }
|
||||
|
||||
NearbyShareSettings* FakeNearbySharingService::GetSettings() { return nullptr; }
|
||||
|
||||
NearbyShareLocalDeviceDataManager*
|
||||
FakeNearbySharingService::GetLocalDeviceDataManager() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
NearbyShareContactManager* FakeNearbySharingService::GetContactManager() {
|
||||
return nullptr;
|
||||
}
|
||||
@@ -166,6 +182,14 @@ AccountManager* FakeNearbySharingService::GetAccountManager() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Clock& FakeNearbySharingService::GetClock() { return clock_; }
|
||||
|
||||
SyncManager& FakeNearbySharingService::sync_manager() { return *sync_manager_; }
|
||||
|
||||
OutgoingTargetsManager& FakeNearbySharingService::outgoing_targets_manager() {
|
||||
return *outgoing_targets_manager_;
|
||||
}
|
||||
|
||||
void FakeNearbySharingService::FireHighVisibilityChangeRequested() {
|
||||
for (auto& observer : observers_.GetObservers()) {
|
||||
observer->OnHighVisibilityChangeRequested();
|
||||
@@ -229,28 +253,31 @@ void FakeNearbySharingService::FireReceiveTransferUpdate(
|
||||
|
||||
// Fire discovery events.
|
||||
void FakeNearbySharingService::FireShareTargetDiscovered(
|
||||
SendSurfaceState state, ShareTarget share_target) {
|
||||
if (state == SendSurfaceState::kForeground) {
|
||||
for (auto& entry : foreground_send_surface_map_) {
|
||||
entry.second.OnShareTargetDiscovered(share_target);
|
||||
}
|
||||
} else {
|
||||
for (auto& entry : background_send_surface_map_) {
|
||||
entry.second.OnShareTargetDiscovered(share_target);
|
||||
}
|
||||
ShareTarget share_target) {
|
||||
for (auto& entry : foreground_send_surface_map_) {
|
||||
entry.second.OnShareTargetDiscovered(share_target);
|
||||
}
|
||||
for (auto& entry : background_send_surface_map_) {
|
||||
entry.second.OnShareTargetDiscovered(share_target);
|
||||
}
|
||||
}
|
||||
|
||||
void FakeNearbySharingService::FireShareTargetLost(SendSurfaceState state,
|
||||
ShareTarget share_target) {
|
||||
if (state == SendSurfaceState::kForeground) {
|
||||
for (auto& entry : foreground_send_surface_map_) {
|
||||
entry.second.OnShareTargetLost(share_target);
|
||||
}
|
||||
} else {
|
||||
for (auto& entry : background_send_surface_map_) {
|
||||
entry.second.OnShareTargetLost(share_target);
|
||||
}
|
||||
void FakeNearbySharingService::FireShareTargetUpdated(
|
||||
ShareTarget share_target) {
|
||||
for (auto& entry : foreground_send_surface_map_) {
|
||||
entry.second.OnShareTargetUpdated(share_target);
|
||||
}
|
||||
for (auto& entry : background_send_surface_map_) {
|
||||
entry.second.OnShareTargetUpdated(share_target);
|
||||
}
|
||||
}
|
||||
|
||||
void FakeNearbySharingService::FireShareTargetLost(ShareTarget share_target) {
|
||||
for (auto& entry : foreground_send_surface_map_) {
|
||||
entry.second.OnShareTargetLost(share_target);
|
||||
}
|
||||
for (auto& entry : background_send_surface_map_) {
|
||||
entry.second.OnShareTargetLost(share_target);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,11 +20,16 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "location/nearby/sharing/lib/rpc/sharing_rpc_client.h"
|
||||
#include "absl/container/flat_hash_map.h"
|
||||
#include "absl/functional/any_invocable.h"
|
||||
#include "absl/time/time.h"
|
||||
#include "internal/base/observer_list.h"
|
||||
#include "internal/platform/clock.h"
|
||||
#include "sharing/advertisement.h"
|
||||
#include "sharing/attachment_container.h"
|
||||
#include "sharing/local_device_data/nearby_share_local_device_data_manager.h"
|
||||
#include "sharing/certificates/nearby_share_certificate_manager.h"
|
||||
#include "sharing/internal/api/preference_manager.h"
|
||||
#include "sharing/nearby_sharing_service.h"
|
||||
#include "sharing/nearby_sharing_settings.h"
|
||||
#include "sharing/share_target.h"
|
||||
@@ -32,12 +37,21 @@
|
||||
#include "sharing/transfer_metadata.h"
|
||||
#include "sharing/transfer_update_callback.h"
|
||||
#include "sharing/wrapped_share_target_discovered_callback.h"
|
||||
#include "internal/test/fake_clock.h"
|
||||
#include "internal/test/fake_task_runner.h"
|
||||
#include "location/nearby/sharing/lib/rpc/fake_nearby_share_client.h"
|
||||
#include "location/nearby/sharing/lib/sync/sync_manager.h"
|
||||
#include "sharing/analytics/analytics_recorder.h"
|
||||
#include "sharing/fake_nearby_connections_manager.h"
|
||||
#include "sharing/internal/test/fake_preference_manager.h"
|
||||
#include "sharing/outgoing_targets_manager.h"
|
||||
|
||||
namespace nearby {
|
||||
namespace sharing {
|
||||
|
||||
class FakeNearbySharingService : public NearbySharingService {
|
||||
public:
|
||||
FakeNearbySharingService();
|
||||
~FakeNearbySharingService() override = default;
|
||||
|
||||
void AddObserver(Observer* observer) override;
|
||||
@@ -54,27 +68,27 @@ class FakeNearbySharingService : public NearbySharingService {
|
||||
ShareTargetDiscoveredCallback* discovery_callback, SendSurfaceState state,
|
||||
Advertisement::BlockedVendorId blocked_vendor_id,
|
||||
bool disable_wifi_hotspot,
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
|
||||
// Unregisters the current send surface.
|
||||
void UnregisterSendSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
|
||||
// Registers a receiver surface for handling payload transfer status.
|
||||
void RegisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback, ReceiveSurfaceState state,
|
||||
Advertisement::BlockedVendorId vendor_id,
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
|
||||
// Unregisters the current receive surface.
|
||||
void UnregisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
|
||||
// Unregisters all foreground receive surfaces.
|
||||
void ClearForegroundReceiveSurfaces(
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
|
||||
// Returns true if there is an ongoing file transfer.
|
||||
bool IsTransferring() const override;
|
||||
@@ -104,12 +118,39 @@ class FakeNearbySharingService : public NearbySharingService {
|
||||
status_codes_callback) override;
|
||||
|
||||
std::string Dump() const override;
|
||||
bool IsBluetoothPresent() const override { return true; }
|
||||
bool IsBluetoothPowered() const override { return true; }
|
||||
bool IsExtendedAdvertisingSupported() const override { return true; }
|
||||
bool IsLanConnected() const override { return true; }
|
||||
std::string GetQrCodeUrl() const override { return ""; }
|
||||
void SetVisibility(
|
||||
proto::DeviceVisibility visibility, absl::Duration expiration,
|
||||
absl::AnyInvocable<void(StatusCodes status_code) &&> callback) override {}
|
||||
void UpdateFilePathsInProgress(bool update_file_paths) override {}
|
||||
|
||||
NearbyShareSettings* GetSettings() override;
|
||||
NearbyShareLocalDeviceDataManager* GetLocalDeviceDataManager() override;
|
||||
NearbyShareContactManager* GetContactManager() override;
|
||||
NearbyShareCertificateManager* GetCertificateManager() override;
|
||||
AccountManager* GetAccountManager() override;
|
||||
Clock& GetClock() override;
|
||||
void SetAlternateServiceUuidForDiscovery(
|
||||
uint16_t alternate_service_uuid) override {}
|
||||
SyncManager& sync_manager() override;
|
||||
OutgoingTargetsManager& outgoing_targets_manager() override;
|
||||
|
||||
nearby::sharing::api::IdentityRpcClient& fake_identity_rpc_client() {
|
||||
return identity_rpc_client_;
|
||||
}
|
||||
nearby::sharing::api::PreferenceManager& fake_preference_manager() {
|
||||
return preference_manager_;
|
||||
}
|
||||
FakeNearbyConnectionsManager& fake_nearby_connections_manager() {
|
||||
return connections_manager_;
|
||||
}
|
||||
FakeTaskRunner& fake_task_runner() { return service_thread_; }
|
||||
analytics::AnalyticsRecorder& analytics_recorder() {
|
||||
return analytics_recorder_;
|
||||
}
|
||||
|
||||
// Fake methods to support test scenarios.
|
||||
|
||||
@@ -130,9 +171,9 @@ class FakeNearbySharingService : public NearbySharingService {
|
||||
TransferMetadata transfer_metadata);
|
||||
|
||||
// Fire discovery events.
|
||||
void FireShareTargetDiscovered(SendSurfaceState state,
|
||||
ShareTarget share_target);
|
||||
void FireShareTargetLost(SendSurfaceState state, ShareTarget share_target);
|
||||
void FireShareTargetDiscovered(ShareTarget share_target);
|
||||
void FireShareTargetUpdated(ShareTarget share_target);
|
||||
void FireShareTargetLost(ShareTarget share_target);
|
||||
|
||||
private:
|
||||
ObserverList<Observer> observers_;
|
||||
@@ -147,6 +188,14 @@ class FakeNearbySharingService : public NearbySharingService {
|
||||
background_send_surface_map_;
|
||||
ObserverList<TransferUpdateCallback> foreground_receive_transfer_callbacks_;
|
||||
ObserverList<TransferUpdateCallback> background_receive_transfer_callbacks_;
|
||||
FakeClock clock_;
|
||||
FakeTaskRunner service_thread_;
|
||||
FakeNearbyConnectionsManager connections_manager_;
|
||||
analytics::AnalyticsRecorder analytics_recorder_;
|
||||
FakePreferenceManager preference_manager_;
|
||||
FakeNearbyIdentityClient identity_rpc_client_;
|
||||
std::unique_ptr<SyncManager> sync_manager_;
|
||||
std::unique_ptr<OutgoingTargetsManager> outgoing_targets_manager_;
|
||||
};
|
||||
|
||||
} // namespace sharing
|
||||
|
||||
@@ -20,14 +20,15 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "location/nearby/sharing/lib/sync/sync_manager.h"
|
||||
#include "absl/functional/any_invocable.h"
|
||||
#include "absl/time/time.h"
|
||||
#include "internal/platform/clock.h"
|
||||
#include "sharing/advertisement.h"
|
||||
#include "sharing/attachment_container.h"
|
||||
#include "sharing/certificates/nearby_share_certificate_manager.h"
|
||||
#include "sharing/local_device_data/nearby_share_local_device_data_manager.h"
|
||||
#include "sharing/nearby_sharing_settings.h"
|
||||
#include "sharing/outgoing_targets_manager.h"
|
||||
#include "sharing/share_target_discovered_callback.h"
|
||||
#include "sharing/transfer_update_callback.h"
|
||||
|
||||
@@ -140,28 +141,28 @@ class NearbySharingService {
|
||||
ShareTargetDiscoveredCallback* discovery_callback, SendSurfaceState state,
|
||||
Advertisement::BlockedVendorId blocked_vendor_id,
|
||||
bool disable_wifi_hotspot,
|
||||
std::function<void(StatusCodes)> status_codes_callback) = 0;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) = 0;
|
||||
|
||||
// Unregisters the current send surface.
|
||||
virtual void UnregisterSendSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) = 0;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) = 0;
|
||||
|
||||
// Registers a receiver surface for handling payload transfer status, and
|
||||
// advertises the vendor ID specified by |vendor_id|.
|
||||
virtual void RegisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback, ReceiveSurfaceState state,
|
||||
Advertisement::BlockedVendorId vendor_id,
|
||||
std::function<void(StatusCodes)> status_codes_callback) = 0;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) = 0;
|
||||
|
||||
// Unregisters the current receive surface.
|
||||
virtual void UnregisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) = 0;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) = 0;
|
||||
|
||||
// Unregisters all foreground receive surfaces.
|
||||
virtual void ClearForegroundReceiveSurfaces(
|
||||
std::function<void(StatusCodes)> status_codes_callback) = 0;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) = 0;
|
||||
|
||||
// Returns true if there is an ongoing file transfer.
|
||||
virtual bool IsTransferring() const = 0;
|
||||
@@ -215,13 +216,14 @@ class NearbySharingService {
|
||||
virtual void UpdateFilePathsInProgress(bool update_file_paths) = 0;
|
||||
|
||||
virtual NearbyShareSettings* GetSettings() = 0;
|
||||
virtual NearbyShareLocalDeviceDataManager* GetLocalDeviceDataManager() = 0;
|
||||
virtual NearbyShareContactManager* GetContactManager() = 0;
|
||||
virtual NearbyShareCertificateManager* GetCertificateManager() = 0;
|
||||
virtual AccountManager* GetAccountManager() = 0;
|
||||
virtual Clock& GetClock() = 0;
|
||||
virtual void SetAlternateServiceUuidForDiscovery(
|
||||
uint16_t alternate_service_uuid) = 0;
|
||||
virtual SyncManager& sync_manager() = 0;
|
||||
virtual OutgoingTargetsManager& outgoing_targets_manager() = 0;
|
||||
};
|
||||
|
||||
} // namespace nearby::sharing
|
||||
|
||||
@@ -430,16 +430,16 @@ void NearbySharingServiceImpl::RegisterSendSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
ShareTargetDiscoveredCallback* discovery_callback, SendSurfaceState state,
|
||||
BlockedVendorId blocked_vendor_id, bool disable_wifi_hotspot,
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
RunOnNearbySharingServiceThread(
|
||||
"api_register_send_surface",
|
||||
[this, transfer_callback, discovery_callback, state, blocked_vendor_id,
|
||||
disable_wifi_hotspot,
|
||||
status_codes_callback = std::move(status_codes_callback)]() {
|
||||
status_codes_callback = std::move(status_codes_callback)]() mutable {
|
||||
if (state != SendSurfaceState::kForeground &&
|
||||
state != SendSurfaceState::kBackground) {
|
||||
LOG(ERROR) << "Invalid SendSurfaceState: " << static_cast<int>(state);
|
||||
std::move(status_codes_callback)(StatusCodes::kInvalidArgument);
|
||||
status_codes_callback(StatusCodes::kInvalidArgument);
|
||||
return;
|
||||
}
|
||||
DCHECK(transfer_callback);
|
||||
@@ -456,7 +456,7 @@ void NearbySharingServiceImpl::RegisterSendSurface(
|
||||
background_send_surface_map_.contains(transfer_callback)) {
|
||||
VLOG(1) << "RegisterSendSurface failed. Already registered for a "
|
||||
"different state.";
|
||||
std::move(status_codes_callback)(StatusCodes::kInvalidArgument);
|
||||
status_codes_callback(StatusCodes::kInvalidArgument);
|
||||
return;
|
||||
}
|
||||
BlockedVendorId sending_id = GetSendingVendorId();
|
||||
@@ -464,7 +464,7 @@ void NearbySharingServiceImpl::RegisterSendSurface(
|
||||
LOG(INFO) << "RegisterSendSurface failed. Already registered to "
|
||||
"block a different vendor ID "
|
||||
<< static_cast<uint32_t>(sending_id);
|
||||
std::move(status_codes_callback)(StatusCodes::kInvalidArgument);
|
||||
status_codes_callback(StatusCodes::kInvalidArgument);
|
||||
return;
|
||||
}
|
||||
WrappedShareTargetDiscoveredCallback wrapped_callback(
|
||||
@@ -483,8 +483,7 @@ void NearbySharingServiceImpl::RegisterSendSurface(
|
||||
VLOG(1)
|
||||
<< "Ignore registering (and unregistering if registered) send "
|
||||
"surface because we're currently receiving files.";
|
||||
std::move(status_codes_callback)(
|
||||
StatusCodes::kTransferAlreadyInProgress);
|
||||
status_codes_callback(StatusCodes::kTransferAlreadyInProgress);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -538,17 +537,17 @@ void NearbySharingServiceImpl::RegisterSendSurface(
|
||||
<< background_send_surface_map_.size();
|
||||
|
||||
InvalidateSendSurfaceState();
|
||||
std::move(status_codes_callback)(StatusCodes::kOk);
|
||||
status_codes_callback(StatusCodes::kOk);
|
||||
});
|
||||
}
|
||||
|
||||
void NearbySharingServiceImpl::UnregisterSendSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
RunOnNearbySharingServiceThread(
|
||||
"api_unregister_send_surface",
|
||||
[this, transfer_callback,
|
||||
status_codes_callback = std::move(status_codes_callback)]() {
|
||||
status_codes_callback = std::move(status_codes_callback)]() mutable {
|
||||
StatusCodes status_codes =
|
||||
InternalUnregisterSendSurface(transfer_callback);
|
||||
|
||||
@@ -557,23 +556,23 @@ void NearbySharingServiceImpl::UnregisterSendSurface(
|
||||
<< ", background_send_surface_map_:"
|
||||
<< background_send_surface_map_.size();
|
||||
|
||||
std::move(status_codes_callback)(status_codes);
|
||||
status_codes_callback(status_codes);
|
||||
});
|
||||
}
|
||||
|
||||
void NearbySharingServiceImpl::RegisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback, ReceiveSurfaceState state,
|
||||
BlockedVendorId vendor_id,
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
RunOnNearbySharingServiceThread(
|
||||
"api_register_receive_surface",
|
||||
[this, transfer_callback, state, vendor_id,
|
||||
status_codes_callback = std::move(status_codes_callback)]() {
|
||||
status_codes_callback = std::move(status_codes_callback)]() mutable {
|
||||
if (state != ReceiveSurfaceState::kForeground &&
|
||||
state != ReceiveSurfaceState::kBackground) {
|
||||
LOG(ERROR) << "Invalid ReceiveSurfaceState: "
|
||||
<< static_cast<int>(state);
|
||||
std::move(status_codes_callback)(StatusCodes::kInvalidArgument);
|
||||
status_codes_callback(StatusCodes::kInvalidArgument);
|
||||
return;
|
||||
}
|
||||
DCHECK(transfer_callback);
|
||||
@@ -591,14 +590,14 @@ void NearbySharingServiceImpl::RegisterReceiveSurface(
|
||||
if (GetReceiveCallbacksMapFromState(state).contains(
|
||||
transfer_callback)) {
|
||||
VLOG(1) << "transfer callback already registered, ignoring";
|
||||
std::move(status_codes_callback)(StatusCodes::kOk);
|
||||
status_codes_callback(StatusCodes::kOk);
|
||||
return;
|
||||
}
|
||||
if (foreground_receive_callbacks_map_.contains(transfer_callback) ||
|
||||
background_receive_callbacks_map_.contains(transfer_callback)) {
|
||||
LOG(ERROR) << ": transfer callback already registered but for a "
|
||||
"different state.";
|
||||
std::move(status_codes_callback)(StatusCodes::kInvalidArgument);
|
||||
status_codes_callback(StatusCodes::kInvalidArgument);
|
||||
return;
|
||||
}
|
||||
if (ShouldBlockSurfaceRegistration(vendor_id,
|
||||
@@ -609,7 +608,7 @@ void NearbySharingServiceImpl::RegisterReceiveSurface(
|
||||
<< static_cast<uint32_t>(vendor_id)
|
||||
<< " because the current vendor_id is "
|
||||
<< static_cast<uint32_t>(GetReceivingVendorId());
|
||||
std::move(status_codes_callback)(StatusCodes::kInvalidArgument);
|
||||
status_codes_callback(StatusCodes::kInvalidArgument);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -652,33 +651,34 @@ void NearbySharingServiceImpl::RegisterReceiveSurface(
|
||||
certificate_manager_->ForceUploadPrivateCertificates();
|
||||
}
|
||||
InvalidateReceiveSurfaceState();
|
||||
std::move(status_codes_callback)(StatusCodes::kOk);
|
||||
status_codes_callback(StatusCodes::kOk);
|
||||
});
|
||||
}
|
||||
|
||||
void NearbySharingServiceImpl::UnregisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
RunOnNearbySharingServiceThread(
|
||||
"api_unregister_receive_surface",
|
||||
[this, transfer_callback,
|
||||
status_codes_callback = std::move(status_codes_callback)]() {
|
||||
status_codes_callback = std::move(status_codes_callback)]() mutable {
|
||||
StatusCodes status_codes =
|
||||
InternalUnregisterReceiveSurface(transfer_callback);
|
||||
VLOG(1) << "UnregisterReceiveSurface: foreground_receive_callbacks_:"
|
||||
<< foreground_receive_callbacks_map_.size()
|
||||
<< ", background_receive_callbacks_:"
|
||||
<< background_receive_callbacks_map_.size();
|
||||
std::move(status_codes_callback)(status_codes);
|
||||
status_codes_callback(status_codes);
|
||||
return;
|
||||
});
|
||||
}
|
||||
|
||||
void NearbySharingServiceImpl::ClearForegroundReceiveSurfaces(
|
||||
std::function<void(StatusCodes)> status_codes_callback) {
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) {
|
||||
RunOnNearbySharingServiceThread(
|
||||
"api_clear_foreground_receive_surfaces",
|
||||
[this, status_codes_callback = std::move(status_codes_callback)]() {
|
||||
[this,
|
||||
status_codes_callback = std::move(status_codes_callback)]() mutable {
|
||||
std::vector<TransferUpdateCallback*> fg_receivers;
|
||||
for (const auto& callback : foreground_receive_callbacks_map_) {
|
||||
fg_receivers.push_back(callback.first);
|
||||
@@ -689,7 +689,7 @@ void NearbySharingServiceImpl::ClearForegroundReceiveSurfaces(
|
||||
if (InternalUnregisterReceiveSurface(callback) != StatusCodes::kOk)
|
||||
status = StatusCodes::kError;
|
||||
}
|
||||
std::move(status_codes_callback)(status);
|
||||
status_codes_callback(status);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -976,11 +976,6 @@ NearbyShareSettings* NearbySharingServiceImpl::GetSettings() {
|
||||
return settings_.get();
|
||||
}
|
||||
|
||||
NearbyShareLocalDeviceDataManager*
|
||||
NearbySharingServiceImpl::GetLocalDeviceDataManager() {
|
||||
return local_device_data_manager_.get();
|
||||
}
|
||||
|
||||
NearbyShareContactManager* NearbySharingServiceImpl::GetContactManager() {
|
||||
return contact_manager_.get();
|
||||
}
|
||||
|
||||
@@ -122,19 +122,19 @@ class NearbySharingServiceImpl
|
||||
ShareTargetDiscoveredCallback* discovery_callback, SendSurfaceState state,
|
||||
Advertisement::BlockedVendorId blocked_vendor_id,
|
||||
bool disable_wifi_hotspot,
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
void UnregisterSendSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
void RegisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback, ReceiveSurfaceState state,
|
||||
Advertisement::BlockedVendorId vendor_id,
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
void UnregisterReceiveSurface(
|
||||
TransferUpdateCallback* transfer_callback,
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
void ClearForegroundReceiveSurfaces(
|
||||
std::function<void(StatusCodes)> status_codes_callback) override;
|
||||
absl::AnyInvocable<void(StatusCodes)> status_codes_callback) override;
|
||||
bool IsTransferring() const override;
|
||||
bool IsScanning() const override;
|
||||
bool IsBluetoothPresent() const override;
|
||||
@@ -159,7 +159,6 @@ class NearbySharingServiceImpl
|
||||
proto::DeviceVisibility visibility, absl::Duration expiration,
|
||||
absl::AnyInvocable<void(StatusCodes status_code) &&> callback) override;
|
||||
NearbyShareSettings* GetSettings() override;
|
||||
NearbyShareLocalDeviceDataManager* GetLocalDeviceDataManager() override;
|
||||
NearbyShareContactManager* GetContactManager() override;
|
||||
NearbyShareCertificateManager* GetCertificateManager() override;
|
||||
AccountManager* GetAccountManager() override;
|
||||
@@ -168,6 +167,10 @@ class NearbySharingServiceImpl
|
||||
uint16_t alternate_service_uuid) override {
|
||||
alternate_service_uuid_ = alternate_service_uuid;
|
||||
}
|
||||
SyncManager& sync_manager() override { return sync_manager_; }
|
||||
OutgoingTargetsManager& outgoing_targets_manager() override {
|
||||
return outgoing_targets_manager_;
|
||||
}
|
||||
|
||||
// NearbyConnectionsManager::IncomingConnectionListener:
|
||||
void OnIncomingConnection(absl::string_view endpoint_id,
|
||||
|
||||
@@ -342,4 +342,19 @@ void OutgoingTargetsManager::ForEachShareTarget(
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::string> OutgoingTargetsManager::GetBindingIds(
|
||||
int64_t share_target_id) {
|
||||
std::vector<std::string> binding_ids;
|
||||
auto session_it = outgoing_share_session_map_.find(share_target_id);
|
||||
if (session_it == outgoing_share_session_map_.end()) {
|
||||
return {};
|
||||
}
|
||||
std::optional<NearbyShareDecryptedPublicCertificate> certificate =
|
||||
session_it->second.certificate();
|
||||
if (certificate.has_value()) {
|
||||
return {certificate->binding_id()};
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
} // namespace nearby::sharing
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/base/nullability.h"
|
||||
#include "absl/container/flat_hash_map.h"
|
||||
@@ -94,6 +95,8 @@ class OutgoingTargetsManager {
|
||||
void ForEachShareTarget(
|
||||
absl::AnyInvocable<void(const ShareTarget&)> callback);
|
||||
|
||||
std::vector<std::string> GetBindingIds(int64_t share_target_id);
|
||||
|
||||
private:
|
||||
// If an existing target matching either endpoint_id or share_target.device_id
|
||||
// is found, the existing share target id is returned.
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#include "internal/test/fake_task_runner.h"
|
||||
#include "sharing/analytics/analytics_recorder.h"
|
||||
#include "sharing/attachment_container.h"
|
||||
#include "sharing/certificates/nearby_share_decrypted_public_certificate.h"
|
||||
#include "sharing/certificates/test_util.h"
|
||||
#include "sharing/fake_nearby_connections_manager.h"
|
||||
#include "sharing/nearby_connection_impl.h"
|
||||
#include "sharing/nearby_connections_types.h"
|
||||
@@ -781,5 +783,36 @@ TEST_F(OutgoingTargetsManagerTest, AllTargetsLostConnectedSessionsNotClosed) {
|
||||
nullptr);
|
||||
}
|
||||
|
||||
TEST_F(OutgoingTargetsManagerTest, GetBindingIds_NonExistentTarget) {
|
||||
EXPECT_TRUE(outgoing_targets_manager_.GetBindingIds(1234).empty());
|
||||
}
|
||||
|
||||
TEST_F(OutgoingTargetsManagerTest, GetBindingIds_NoCertificate) {
|
||||
constexpr int kShareTargetId = 1234;
|
||||
constexpr absl::string_view kEndpointId = "endpoint_id";
|
||||
ShareTarget target;
|
||||
target.id = kShareTargetId;
|
||||
|
||||
outgoing_targets_manager_.OnShareTargetDiscovered(
|
||||
target, kEndpointId, /*certificate=*/std::nullopt);
|
||||
|
||||
EXPECT_TRUE(outgoing_targets_manager_.GetBindingIds(kShareTargetId).empty());
|
||||
}
|
||||
|
||||
TEST_F(OutgoingTargetsManagerTest, GetBindingIds_WithCertificate) {
|
||||
constexpr int kShareTargetId = 1234;
|
||||
constexpr absl::string_view kEndpointId = "endpoint_id";
|
||||
ShareTarget target;
|
||||
target.id = kShareTargetId;
|
||||
NearbyShareDecryptedPublicCertificate cert =
|
||||
GetNearbyShareTestDecryptedPublicCertificate();
|
||||
|
||||
outgoing_targets_manager_.OnShareTargetDiscovered(target, kEndpointId, cert);
|
||||
|
||||
std::vector<std::string> binding_ids =
|
||||
outgoing_targets_manager_.GetBindingIds(kShareTargetId);
|
||||
EXPECT_THAT(binding_ids, ElementsAre(cert.binding_id()));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace nearby::sharing
|
||||
|
||||
Reference in New Issue
Block a user