Commit f2eecd43 authored by Bailey Berro's avatar Bailey Berro Committed by Chromium LUCI CQ

Introduce nearby_share.mojom.RegisterReceiveSurfaceResult

This change adds the RegisterReceiveSurfaceResult enum which is used to
provide more granular result information to RegisterReceiveSurface
callers.

Bug: 1156391
Change-Id: I6c308e71b85eab1eb52d74a9b8415a0d9231baee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2594177
Commit-Queue: Bailey Berro <baileyberro@chromium.org>
Reviewed-by: default avatarJames Vecore <vecore@google.com>
Reviewed-by: default avatarAlex Gough <ajgo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#837704}
parent 2a3d005b
...@@ -49,11 +49,31 @@ void NearbyReceiveManager::IsInHighVisibility( ...@@ -49,11 +49,31 @@ void NearbyReceiveManager::IsInHighVisibility(
void NearbyReceiveManager::RegisterForegroundReceiveSurface( void NearbyReceiveManager::RegisterForegroundReceiveSurface(
RegisterForegroundReceiveSurfaceCallback callback) { RegisterForegroundReceiveSurfaceCallback callback) {
bool success = const NearbySharingService::StatusCodes result =
NearbySharingService::StatusCodes::kOk ==
nearby_sharing_service_->RegisterReceiveSurface( nearby_sharing_service_->RegisterReceiveSurface(
this, NearbySharingService::ReceiveSurfaceState::kForeground); this, NearbySharingService::ReceiveSurfaceState::kForeground);
std::move(callback).Run(success); switch (result) {
case NearbySharingService::StatusCodes::kOk:
std::move(callback).Run(
nearby_share::mojom::RegisterReceiveSurfaceResult::kSuccess);
return;
case NearbySharingService::StatusCodes::kError:
case NearbySharingService::StatusCodes::kOutOfOrderApiCall:
case NearbySharingService::StatusCodes::kStatusAlreadyStopped:
std::move(callback).Run(
nearby_share::mojom::RegisterReceiveSurfaceResult::kFailure);
return;
case NearbySharingService::StatusCodes::kTransferAlreadyInProgress:
std::move(callback).Run(
nearby_share::mojom::RegisterReceiveSurfaceResult::
kTransferInProgress);
return;
case NearbySharingService::StatusCodes::kNoAvailableConnectionMedium:
std::move(callback).Run(
nearby_share::mojom::RegisterReceiveSurfaceResult::
kNoConnectionMedium);
return;
}
} }
void NearbyReceiveManager::UnregisterForegroundReceiveSurface( void NearbyReceiveManager::UnregisterForegroundReceiveSurface(
......
...@@ -40,6 +40,8 @@ class NearbyReceiveManagerTest : public testing::Test { ...@@ -40,6 +40,8 @@ class NearbyReceiveManagerTest : public testing::Test {
public: public:
using ReceiveSurfaceState = NearbySharingService::ReceiveSurfaceState; using ReceiveSurfaceState = NearbySharingService::ReceiveSurfaceState;
using StatusCodes = NearbySharingService::StatusCodes; using StatusCodes = NearbySharingService::StatusCodes;
using RegisterReceiveSurfaceResult =
nearby_share::mojom::RegisterReceiveSurfaceResult;
NearbyReceiveManagerTest() NearbyReceiveManagerTest()
: transfer_metadata_(TransferMetadata::Status::kAwaitingLocalConfirmation, : transfer_metadata_(TransferMetadata::Status::kAwaitingLocalConfirmation,
...@@ -110,9 +112,9 @@ class NearbyReceiveManagerTest : public testing::Test { ...@@ -110,9 +112,9 @@ class NearbyReceiveManagerTest : public testing::Test {
TEST_F(NearbyReceiveManagerTest, Enter_Exit_Success) { TEST_F(NearbyReceiveManagerTest, Enter_Exit_Success) {
ExpectRegister(); ExpectRegister();
bool success = false; RegisterReceiveSurfaceResult result = RegisterReceiveSurfaceResult::kFailure;
receive_manager_waiter_.RegisterForegroundReceiveSurface(&success); receive_manager_waiter_.RegisterForegroundReceiveSurface(&result);
EXPECT_TRUE(success); EXPECT_EQ(RegisterReceiveSurfaceResult::kSuccess, result);
ExpectUnregister(); ExpectUnregister();
bool exited = false; bool exited = false;
...@@ -123,39 +125,39 @@ TEST_F(NearbyReceiveManagerTest, Enter_Exit_Success) { ...@@ -123,39 +125,39 @@ TEST_F(NearbyReceiveManagerTest, Enter_Exit_Success) {
} }
TEST_F(NearbyReceiveManagerTest, Enter_Failed) { TEST_F(NearbyReceiveManagerTest, Enter_Failed) {
bool success = true; RegisterReceiveSurfaceResult result = RegisterReceiveSurfaceResult::kSuccess;
ExpectRegister(StatusCodes::kError); ExpectRegister(StatusCodes::kError);
receive_manager_waiter_.RegisterForegroundReceiveSurface(&success); receive_manager_waiter_.RegisterForegroundReceiveSurface(&result);
EXPECT_FALSE(success); EXPECT_EQ(RegisterReceiveSurfaceResult::kFailure, result);
ExpectUnregister(); ExpectUnregister();
} }
TEST_F(NearbyReceiveManagerTest, Multiple_Enter_Successful) { TEST_F(NearbyReceiveManagerTest, Multiple_Enter_Successful) {
bool success = false; RegisterReceiveSurfaceResult result = RegisterReceiveSurfaceResult::kFailure;
ExpectRegister(StatusCodes::kOk); ExpectRegister(StatusCodes::kOk);
receive_manager_waiter_.RegisterForegroundReceiveSurface(&success); receive_manager_waiter_.RegisterForegroundReceiveSurface(&result);
FlushMojoMessages(); FlushMojoMessages();
EXPECT_TRUE(success); EXPECT_EQ(RegisterReceiveSurfaceResult::kSuccess, result);
success = false; result = RegisterReceiveSurfaceResult::kFailure;
ExpectRegister(StatusCodes::kOk); ExpectRegister(StatusCodes::kOk);
receive_manager_waiter_.RegisterForegroundReceiveSurface(&success); receive_manager_waiter_.RegisterForegroundReceiveSurface(&result);
FlushMojoMessages(); FlushMojoMessages();
EXPECT_TRUE(success); EXPECT_EQ(RegisterReceiveSurfaceResult::kSuccess, result);
ExpectUnregister(); ExpectUnregister();
} }
TEST_F(NearbyReceiveManagerTest, Exit_Failed) { TEST_F(NearbyReceiveManagerTest, Exit_Failed) {
bool success = false; RegisterReceiveSurfaceResult result = RegisterReceiveSurfaceResult::kFailure;
ExpectRegister(); ExpectRegister();
receive_manager_waiter_.RegisterForegroundReceiveSurface(&success); receive_manager_waiter_.RegisterForegroundReceiveSurface(&result);
EXPECT_TRUE(success); EXPECT_EQ(RegisterReceiveSurfaceResult::kSuccess, result);
ExpectUnregister(StatusCodes::kError); ExpectUnregister(StatusCodes::kError);
success = false; bool exited = false;
receive_manager_waiter_.UnregisterForegroundReceiveSurface(&success); receive_manager_waiter_.UnregisterForegroundReceiveSurface(&exited);
EXPECT_FALSE(success); EXPECT_FALSE(exited);
ExpectUnregister(); ExpectUnregister();
} }
......
...@@ -131,6 +131,19 @@ enum StartDiscoveryResult { ...@@ -131,6 +131,19 @@ enum StartDiscoveryResult {
kErrorGeneric, kErrorGeneric,
}; };
// This enum represents the different possible results when registering a
// Receive Surface.
enum RegisterReceiveSurfaceResult {
// Succeeded.
kSuccess,
// Failed.
kFailure,
// Bluetooth and Wi-Fi are unavailable.
kNoConnectionMedium,
// There is already a transfer in progress.
kTransferInProgress,
};
// Manager interface for nearby device discovery. Implemented on the browser // Manager interface for nearby device discovery. Implemented on the browser
// process and used by UI surfaces. The discovery manager is also responsible // process and used by UI surfaces. The discovery manager is also responsible
// for previewing the current share with GetPayloadPreview() so the user can // for previewing the current share with GetPayloadPreview() so the user can
...@@ -196,11 +209,11 @@ interface ReceiveManager { ...@@ -196,11 +209,11 @@ interface ReceiveManager {
IsInHighVisibility() => (bool in_high_visibility); IsInHighVisibility() => (bool in_high_visibility);
// Attempt to register the receive manager as a foreground receive surface. // Attempt to register the receive manager as a foreground receive surface.
// If |success| is true, then the surface has been registered; otherwise it // If |result| is kSuccess, then the surface has been registered; otherwise it
// has not been registered. The foreground surface receives incoming // has not been registered. The foreground surface receives incoming
// shares, and once one is registered, high visibility will become active // shares, and once one is registered, high visibility will become active
// after a short while. Calling multiple times will have no additional effect. // after a short while. Calling multiple times will have no additional effect.
RegisterForegroundReceiveSurface() => (bool success); RegisterForegroundReceiveSurface() => (RegisterReceiveSurfaceResult result);
// Attempt to unregister the receive manager as a foreground receive surface. // Attempt to unregister the receive manager as a foreground receive surface.
// If |success| is true, then the surface is no longer registered; otherwise, // If |success| is true, then the surface is no longer registered; otherwise,
......
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