Commit 718f54dd authored by Richard Knoll's avatar Richard Knoll Committed by Commit Bot

[Nearby] Add mojo type traits for ShareTarget

Also adds device type and name to the ShareTarget mojo struct to pass
them along to the UI. ShareTarget is converted to a struct as we need to
modify the fields when deserializing from mojo.

Bug: 1108367
Change-Id: I1e9e38cad39b6a3b9f4ac8de528c92ed1a06c3a0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2314356Reviewed-by: default avatarAlex Gough <ajgo@chromium.org>
Reviewed-by: default avatarAlex Chau <alexchau@chromium.org>
Commit-Queue: Richard Knoll <knollr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#791468}
parent 3bf6fa17
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "base/test/mock_callback.h" #include "base/test/mock_callback.h"
#include "chrome/browser/nearby_sharing/mock_nearby_sharing_service.h" #include "chrome/browser/nearby_sharing/mock_nearby_sharing_service.h"
#include "chrome/browser/nearby_sharing/share_target.h" #include "chrome/browser/nearby_sharing/share_target.h"
#include "chrome/browser/nearby_sharing/share_target_builder.h"
#include "content/public/test/browser_task_environment.h" #include "content/public/test/browser_task_environment.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -21,12 +20,14 @@ class NearbyConfirmationManagerTest : public testing::Test { ...@@ -21,12 +20,14 @@ class NearbyConfirmationManagerTest : public testing::Test {
MockNearbySharingService& sharing_service() { return sharing_service_; } MockNearbySharingService& sharing_service() { return sharing_service_; }
const ShareTarget& share_target() const { return share_target_; }
NearbyConfirmationManager& manager() { return manager_; } NearbyConfirmationManager& manager() { return manager_; }
private: private:
content::BrowserTaskEnvironment task_environment_; content::BrowserTaskEnvironment task_environment_;
MockNearbySharingService sharing_service_; MockNearbySharingService sharing_service_;
ShareTarget share_target_ = ShareTargetBuilder().build(); ShareTarget share_target_;
NearbyConfirmationManager manager_{&sharing_service_, share_target_}; NearbyConfirmationManager manager_{&sharing_service_, share_target_};
}; };
...@@ -35,8 +36,9 @@ class NearbyConfirmationManagerTest : public testing::Test { ...@@ -35,8 +36,9 @@ class NearbyConfirmationManagerTest : public testing::Test {
TEST_F(NearbyConfirmationManagerTest, Accept_Success) { TEST_F(NearbyConfirmationManagerTest, Accept_Success) {
EXPECT_CALL(sharing_service(), Accept(testing::_, testing::_)) EXPECT_CALL(sharing_service(), Accept(testing::_, testing::_))
.WillOnce(testing::Invoke( .WillOnce(testing::Invoke(
[](const ShareTarget&, [&](const ShareTarget& target,
NearbySharingService::StatusCodesCallback callback) { NearbySharingService::StatusCodesCallback callback) {
EXPECT_EQ(share_target().id, target.id);
std::move(callback).Run(NearbySharingService::StatusCodes::kOk); std::move(callback).Run(NearbySharingService::StatusCodes::kOk);
})); }));
base::MockCallback<NearbyConfirmationManager::AcceptCallback> callback; base::MockCallback<NearbyConfirmationManager::AcceptCallback> callback;
...@@ -48,8 +50,9 @@ TEST_F(NearbyConfirmationManagerTest, Accept_Success) { ...@@ -48,8 +50,9 @@ TEST_F(NearbyConfirmationManagerTest, Accept_Success) {
TEST_F(NearbyConfirmationManagerTest, Accept_Error) { TEST_F(NearbyConfirmationManagerTest, Accept_Error) {
EXPECT_CALL(sharing_service(), Accept(testing::_, testing::_)) EXPECT_CALL(sharing_service(), Accept(testing::_, testing::_))
.WillOnce(testing::Invoke( .WillOnce(testing::Invoke(
[](const ShareTarget&, [&](const ShareTarget& target,
NearbySharingService::StatusCodesCallback callback) { NearbySharingService::StatusCodesCallback callback) {
EXPECT_EQ(share_target().id, target.id);
std::move(callback).Run(NearbySharingService::StatusCodes::kError); std::move(callback).Run(NearbySharingService::StatusCodes::kError);
})); }));
base::MockCallback<NearbyConfirmationManager::AcceptCallback> callback; base::MockCallback<NearbyConfirmationManager::AcceptCallback> callback;
...@@ -61,8 +64,9 @@ TEST_F(NearbyConfirmationManagerTest, Accept_Error) { ...@@ -61,8 +64,9 @@ TEST_F(NearbyConfirmationManagerTest, Accept_Error) {
TEST_F(NearbyConfirmationManagerTest, Reject_Success) { TEST_F(NearbyConfirmationManagerTest, Reject_Success) {
EXPECT_CALL(sharing_service(), Reject(testing::_, testing::_)) EXPECT_CALL(sharing_service(), Reject(testing::_, testing::_))
.WillOnce(testing::Invoke( .WillOnce(testing::Invoke(
[](const ShareTarget&, [&](const ShareTarget& target,
NearbySharingService::StatusCodesCallback callback) { NearbySharingService::StatusCodesCallback callback) {
EXPECT_EQ(share_target().id, target.id);
std::move(callback).Run(NearbySharingService::StatusCodes::kOk); std::move(callback).Run(NearbySharingService::StatusCodes::kOk);
})); }));
base::MockCallback<NearbyConfirmationManager::RejectCallback> callback; base::MockCallback<NearbyConfirmationManager::RejectCallback> callback;
...@@ -74,8 +78,9 @@ TEST_F(NearbyConfirmationManagerTest, Reject_Success) { ...@@ -74,8 +78,9 @@ TEST_F(NearbyConfirmationManagerTest, Reject_Success) {
TEST_F(NearbyConfirmationManagerTest, Reject_Error) { TEST_F(NearbyConfirmationManagerTest, Reject_Error) {
EXPECT_CALL(sharing_service(), Reject(testing::_, testing::_)) EXPECT_CALL(sharing_service(), Reject(testing::_, testing::_))
.WillOnce(testing::Invoke( .WillOnce(testing::Invoke(
[](const ShareTarget&, [&](const ShareTarget& target,
NearbySharingService::StatusCodesCallback callback) { NearbySharingService::StatusCodesCallback callback) {
EXPECT_EQ(share_target().id, target.id);
std::move(callback).Run(NearbySharingService::StatusCodes::kError); std::move(callback).Run(NearbySharingService::StatusCodes::kError);
})); }));
base::MockCallback<NearbyConfirmationManager::RejectCallback> callback; base::MockCallback<NearbyConfirmationManager::RejectCallback> callback;
......
...@@ -95,25 +95,25 @@ int GetTextAttachmentsStringId(const std::vector<TextAttachment>& texts) { ...@@ -95,25 +95,25 @@ int GetTextAttachmentsStringId(const std::vector<TextAttachment>& texts) {
} }
base::string16 GetAttachmentsString(const ShareTarget& share_target) { base::string16 GetAttachmentsString(const ShareTarget& share_target) {
size_t file_count = share_target.file_attachments().size(); size_t file_count = share_target.file_attachments.size();
size_t text_count = share_target.text_attachments().size(); size_t text_count = share_target.text_attachments.size();
int resource_id = IDS_NEARBY_UNKNOWN_ATTACHMENTS; int resource_id = IDS_NEARBY_UNKNOWN_ATTACHMENTS;
if (file_count > 0 && text_count == 0) if (file_count > 0 && text_count == 0)
resource_id = GetFileAttachmentsStringId(share_target.file_attachments()); resource_id = GetFileAttachmentsStringId(share_target.file_attachments);
if (text_count > 0 && file_count == 0) if (text_count > 0 && file_count == 0)
resource_id = GetTextAttachmentsStringId(share_target.text_attachments()); resource_id = GetTextAttachmentsStringId(share_target.text_attachments);
return l10n_util::GetPluralStringFUTF16(resource_id, text_count + file_count); return l10n_util::GetPluralStringFUTF16(resource_id, text_count + file_count);
} }
base::string16 GetProgressNotificationTitle(const ShareTarget& share_target) { base::string16 GetProgressNotificationTitle(const ShareTarget& share_target) {
int resource_id = share_target.is_incoming() int resource_id = share_target.is_incoming
? IDS_NEARBY_NOTIFICATION_RECEIVE_PROGRESS_TITLE ? IDS_NEARBY_NOTIFICATION_RECEIVE_PROGRESS_TITLE
: IDS_NEARBY_NOTIFICATION_SEND_PROGRESS_TITLE; : IDS_NEARBY_NOTIFICATION_SEND_PROGRESS_TITLE;
base::string16 attachments = GetAttachmentsString(share_target); base::string16 attachments = GetAttachmentsString(share_target);
base::string16 device_name = base::ASCIIToUTF16(share_target.device_name()); base::string16 device_name = base::ASCIIToUTF16(share_target.device_name);
return l10n_util::GetStringFUTF16(resource_id, attachments, device_name); return l10n_util::GetStringFUTF16(resource_id, attachments, device_name);
} }
...@@ -121,7 +121,7 @@ base::string16 GetProgressNotificationTitle(const ShareTarget& share_target) { ...@@ -121,7 +121,7 @@ base::string16 GetProgressNotificationTitle(const ShareTarget& share_target) {
base::string16 GetConnectionRequestNotificationMessage( base::string16 GetConnectionRequestNotificationMessage(
const ShareTarget& share_target) { const ShareTarget& share_target) {
base::string16 attachments = GetAttachmentsString(share_target); base::string16 attachments = GetAttachmentsString(share_target);
base::string16 device_name = base::ASCIIToUTF16(share_target.device_name()); base::string16 device_name = base::ASCIIToUTF16(share_target.device_name);
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_NEARBY_NOTIFICATION_CONNECTION_REQUEST_MESSAGE, device_name, IDS_NEARBY_NOTIFICATION_CONNECTION_REQUEST_MESSAGE, device_name,
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include "chrome/app/vector_icons/vector_icons.h" #include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/browser_features.h" #include "chrome/browser/browser_features.h"
#include "chrome/browser/nearby_sharing/share_target.h" #include "chrome/browser/nearby_sharing/share_target.h"
#include "chrome/browser/nearby_sharing/share_target_builder.h"
#include "chrome/browser/nearby_sharing/transfer_metadata.h" #include "chrome/browser/nearby_sharing/transfer_metadata.h"
#include "chrome/browser/nearby_sharing/transfer_metadata_builder.h" #include "chrome/browser/nearby_sharing/transfer_metadata_builder.h"
#include "chrome/browser/notifications/notification_display_service_tester.h" #include "chrome/browser/notifications/notification_display_service_tester.h"
...@@ -114,7 +113,7 @@ class NearbyNotificationManagerProgressNotificationTest ...@@ -114,7 +113,7 @@ class NearbyNotificationManagerProgressNotificationTest
} // namespace } // namespace
TEST_F(NearbyNotificationManagerTest, ShowProgress_ShowsNotification) { TEST_F(NearbyNotificationManagerTest, ShowProgress_ShowsNotification) {
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
TransferMetadata transfer_metadata = TransferMetadataBuilder().build(); TransferMetadata transfer_metadata = TransferMetadataBuilder().build();
manager()->ShowProgress(share_target, transfer_metadata); manager()->ShowProgress(share_target, transfer_metadata);
...@@ -145,7 +144,7 @@ TEST_F(NearbyNotificationManagerTest, ShowProgress_ShowsNotification) { ...@@ -145,7 +144,7 @@ TEST_F(NearbyNotificationManagerTest, ShowProgress_ShowsNotification) {
TEST_F(NearbyNotificationManagerTest, ShowProgress_ShowsProgress) { TEST_F(NearbyNotificationManagerTest, ShowProgress_ShowsProgress) {
double progress = 0.75; double progress = 0.75;
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
TransferMetadata transfer_metadata = TransferMetadata transfer_metadata =
TransferMetadataBuilder().set_progress(progress).build(); TransferMetadataBuilder().set_progress(progress).build();
...@@ -160,7 +159,7 @@ TEST_F(NearbyNotificationManagerTest, ShowProgress_ShowsProgress) { ...@@ -160,7 +159,7 @@ TEST_F(NearbyNotificationManagerTest, ShowProgress_ShowsProgress) {
} }
TEST_F(NearbyNotificationManagerTest, ShowProgress_UpdatesProgress) { TEST_F(NearbyNotificationManagerTest, ShowProgress_UpdatesProgress) {
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
TransferMetadataBuilder transfer_metadata_builder; TransferMetadataBuilder transfer_metadata_builder;
transfer_metadata_builder.set_progress(0.75); transfer_metadata_builder.set_progress(0.75);
...@@ -183,17 +182,16 @@ TEST_P(NearbyNotificationManagerProgressNotificationTest, Test) { ...@@ -183,17 +182,16 @@ TEST_P(NearbyNotificationManagerProgressNotificationTest, Test) {
bool is_incoming = std::get<1>(GetParam()); bool is_incoming = std::get<1>(GetParam());
std::string device_name = "device"; std::string device_name = "device";
ShareTargetBuilder share_target_builder; ShareTarget share_target;
share_target_builder.set_device_name(device_name); share_target.device_name = device_name;
share_target_builder.set_is_incoming(is_incoming); share_target.is_incoming = is_incoming;
for (TextAttachment::Type type : param.text_attachments) for (TextAttachment::Type type : param.text_attachments)
share_target_builder.add_attachment(CreateTextAttachment(type)); share_target.text_attachments.push_back(CreateTextAttachment(type));
for (FileAttachment::Type type : param.file_attachments) for (FileAttachment::Type type : param.file_attachments)
share_target_builder.add_attachment(CreateFileAttachment(type)); share_target.file_attachments.push_back(CreateFileAttachment(type));
ShareTarget share_target = share_target_builder.build();
TransferMetadata transfer_metadata = TransferMetadataBuilder().build(); TransferMetadata transfer_metadata = TransferMetadataBuilder().build();
manager()->ShowProgress(share_target, transfer_metadata); manager()->ShowProgress(share_target, transfer_metadata);
...@@ -222,11 +220,10 @@ INSTANTIATE_TEST_SUITE_P( ...@@ -222,11 +220,10 @@ INSTANTIATE_TEST_SUITE_P(
TEST_F(NearbyNotificationManagerTest, ShowConnectionRequest_ShowsNotification) { TEST_F(NearbyNotificationManagerTest, ShowConnectionRequest_ShowsNotification) {
std::string device_name = "device"; std::string device_name = "device";
ShareTargetBuilder share_target_builder; ShareTarget share_target;
share_target_builder.set_device_name(device_name); share_target.device_name = device_name;
share_target_builder.add_attachment( share_target.file_attachments.push_back(
CreateFileAttachment(FileAttachment::Type::kImage)); CreateFileAttachment(FileAttachment::Type::kImage));
ShareTarget share_target = share_target_builder.build();
manager()->ShowConnectionRequest(share_target); manager()->ShowConnectionRequest(share_target);
......
...@@ -19,13 +19,7 @@ NearbyPerSessionDiscoveryManager::NearbyPerSessionDiscoveryManager( ...@@ -19,13 +19,7 @@ NearbyPerSessionDiscoveryManager::NearbyPerSessionDiscoveryManager(
: nearby_sharing_service_(nearby_sharing_service) {} : nearby_sharing_service_(nearby_sharing_service) {}
NearbyPerSessionDiscoveryManager::~NearbyPerSessionDiscoveryManager() { NearbyPerSessionDiscoveryManager::~NearbyPerSessionDiscoveryManager() {
if (!is_registered_) UnregisterSendSurface();
return;
NearbySharingService::StatusCodes result =
nearby_sharing_service_->UnregisterSendSurface(this, this);
if (result != NearbySharingService::StatusCodes::kOk)
NS_LOG(WARNING) << "Failed to unregister send surface";
} }
void NearbyPerSessionDiscoveryManager::OnTransferUpdate( void NearbyPerSessionDiscoveryManager::OnTransferUpdate(
...@@ -56,46 +50,44 @@ void NearbyPerSessionDiscoveryManager::OnTransferUpdate( ...@@ -56,46 +50,44 @@ void NearbyPerSessionDiscoveryManager::OnTransferUpdate(
void NearbyPerSessionDiscoveryManager::OnShareTargetDiscovered( void NearbyPerSessionDiscoveryManager::OnShareTargetDiscovered(
ShareTarget share_target) { ShareTarget share_target) {
base::UnguessableToken share_target_id = share_target.id(); base::InsertOrAssign(discovered_share_targets_, share_target.id,
auto target = nearby_share::mojom::ShareTarget::New(share_target_id); share_target);
share_target_listener_->OnShareTargetDiscovered(share_target);
base::InsertOrAssign(discovered_share_targets_, share_target_id,
std::move(share_target));
share_target_listener_->OnShareTargetDiscovered(std::move(target));
} }
void NearbyPerSessionDiscoveryManager::OnShareTargetLost( void NearbyPerSessionDiscoveryManager::OnShareTargetLost(
ShareTarget share_target) { ShareTarget share_target) {
base::UnguessableToken share_target_id = share_target.id(); discovered_share_targets_.erase(share_target.id);
auto target = nearby_share::mojom::ShareTarget::New(share_target.id()); share_target_listener_->OnShareTargetLost(share_target);
discovered_share_targets_.erase(share_target_id);
share_target_listener_->OnShareTargetLost(std::move(target));
} }
void NearbyPerSessionDiscoveryManager::StartDiscovery( void NearbyPerSessionDiscoveryManager::StartDiscovery(
mojo::PendingRemote<nearby_share::mojom::ShareTargetListener> listener, mojo::PendingRemote<nearby_share::mojom::ShareTargetListener> listener,
StartDiscoveryCallback callback) { StartDiscoveryCallback callback) {
DCHECK(!is_registered_); DCHECK(!share_target_listener_.is_bound());
NearbySharingService::StatusCodes result =
nearby_sharing_service_->RegisterSendSurface(this, this); if (nearby_sharing_service_->RegisterSendSurface(this, this) !=
if (result != NearbySharingService::StatusCodes::kOk) { NearbySharingService::StatusCodes::kOk) {
NS_LOG(WARNING) << "Failed to register send surface"; NS_LOG(WARNING) << "Failed to register send surface";
std::move(callback).Run(/*success=*/false); std::move(callback).Run(/*success=*/false);
return; return;
} }
is_registered_ = true;
share_target_listener_.Bind(std::move(listener)); share_target_listener_.Bind(std::move(listener));
// |share_target_listener_| owns the callbacks and is guaranteed to be
// destroyed before |this|, therefore making base::Unretained() safe to use.
share_target_listener_.set_disconnect_handler(
base::BindOnce(&NearbyPerSessionDiscoveryManager::UnregisterSendSurface,
base::Unretained(this)));
std::move(callback).Run(/*success=*/true); std::move(callback).Run(/*success=*/true);
} }
void NearbyPerSessionDiscoveryManager::SelectShareTarget( void NearbyPerSessionDiscoveryManager::SelectShareTarget(
nearby_share::mojom::ShareTargetPtr share_target, const base::UnguessableToken& share_target_id,
SelectShareTargetCallback callback) { SelectShareTargetCallback callback) {
DCHECK(!select_share_target_callback_); DCHECK(!select_share_target_callback_);
base::UnguessableToken share_target_id = share_target->id;
auto iter = discovered_share_targets_.find(share_target_id); auto iter = discovered_share_targets_.find(share_target_id);
if (iter == discovered_share_targets_.end()) { if (iter == discovered_share_targets_.end()) {
NS_LOG(VERBOSE) << "Unknown share target selected: id=" << share_target_id; NS_LOG(VERBOSE) << "Unknown share target selected: id=" << share_target_id;
...@@ -125,3 +117,15 @@ void NearbyPerSessionDiscoveryManager::OnSend( ...@@ -125,3 +117,15 @@ void NearbyPerSessionDiscoveryManager::OnSend(
.Run(nearby_share::mojom::SelectShareTargetResult::kError, .Run(nearby_share::mojom::SelectShareTargetResult::kError,
/*token=*/base::nullopt, mojo::NullRemote()); /*token=*/base::nullopt, mojo::NullRemote());
} }
void NearbyPerSessionDiscoveryManager::UnregisterSendSurface() {
if (!share_target_listener_.is_bound())
return;
share_target_listener_.reset();
if (nearby_sharing_service_->UnregisterSendSurface(this, this) !=
NearbySharingService::StatusCodes::kOk) {
NS_LOG(WARNING) << "Failed to unregister send surface";
}
}
...@@ -39,7 +39,7 @@ class NearbyPerSessionDiscoveryManager ...@@ -39,7 +39,7 @@ class NearbyPerSessionDiscoveryManager
void StartDiscovery( void StartDiscovery(
mojo::PendingRemote<nearby_share::mojom::ShareTargetListener> listener, mojo::PendingRemote<nearby_share::mojom::ShareTargetListener> listener,
StartDiscoveryCallback callback) override; StartDiscoveryCallback callback) override;
void SelectShareTarget(nearby_share::mojom::ShareTargetPtr share_target, void SelectShareTarget(const base::UnguessableToken& share_target_id,
SelectShareTargetCallback callback) override; SelectShareTargetCallback callback) override;
private: private:
...@@ -48,8 +48,10 @@ class NearbyPerSessionDiscoveryManager ...@@ -48,8 +48,10 @@ class NearbyPerSessionDiscoveryManager
// multiple times as the transfer progresses. // multiple times as the transfer progresses.
void OnSend(NearbySharingService::StatusCodes status); void OnSend(NearbySharingService::StatusCodes status);
// Unregisters this class from the NearbySharingService.
void UnregisterSendSurface();
NearbySharingService* nearby_sharing_service_; NearbySharingService* nearby_sharing_service_;
bool is_registered_ = false;
mojo::Remote<nearby_share::mojom::ShareTargetListener> share_target_listener_; mojo::Remote<nearby_share::mojom::ShareTargetListener> share_target_listener_;
SelectShareTargetCallback select_share_target_callback_; SelectShareTargetCallback select_share_target_callback_;
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "base/test/mock_callback.h" #include "base/test/mock_callback.h"
#include "chrome/browser/nearby_sharing/mock_nearby_sharing_service.h" #include "chrome/browser/nearby_sharing/mock_nearby_sharing_service.h"
#include "chrome/browser/nearby_sharing/share_target.h" #include "chrome/browser/nearby_sharing/share_target.h"
#include "chrome/browser/nearby_sharing/share_target_builder.h"
#include "chrome/browser/nearby_sharing/transfer_metadata.h" #include "chrome/browser/nearby_sharing/transfer_metadata.h"
#include "chrome/browser/nearby_sharing/transfer_metadata_builder.h" #include "chrome/browser/nearby_sharing/transfer_metadata_builder.h"
#include "chrome/browser/ui/webui/nearby_share/nearby_share.mojom.h" #include "chrome/browser/ui/webui/nearby_share/nearby_share.mojom.h"
...@@ -21,7 +20,7 @@ namespace { ...@@ -21,7 +20,7 @@ namespace {
using testing::_; using testing::_;
MATCHER_P(MatchesTarget, target, "") { MATCHER_P(MatchesTarget, target, "") {
return arg->id == target.id(); return arg.id == target.id;
} }
class MockShareTargetListener class MockShareTargetListener
...@@ -35,14 +34,8 @@ class MockShareTargetListener ...@@ -35,14 +34,8 @@ class MockShareTargetListener
} }
// nearby_share::mojom::ShareTargetListener: // nearby_share::mojom::ShareTargetListener:
MOCK_METHOD(void, MOCK_METHOD(void, OnShareTargetDiscovered, (const ShareTarget&), (override));
OnShareTargetDiscovered, MOCK_METHOD(void, OnShareTargetLost, (const ShareTarget&), (override));
(nearby_share::mojom::ShareTargetPtr),
(override));
MOCK_METHOD(void,
OnShareTargetLost,
(nearby_share::mojom::ShareTargetPtr),
(override));
private: private:
mojo::Receiver<ShareTargetListener> receiver_{this}; mojo::Receiver<ShareTargetListener> receiver_{this};
...@@ -112,7 +105,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnShareTargetDiscovered) { ...@@ -112,7 +105,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnShareTargetDiscovered) {
MockShareTargetListener listener; MockShareTargetListener listener;
manager().StartDiscovery(listener.Bind(), base::DoNothing()); manager().StartDiscovery(listener.Bind(), base::DoNothing());
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
base::RunLoop run_loop; base::RunLoop run_loop;
EXPECT_CALL(listener, OnShareTargetDiscovered(MatchesTarget(share_target))) EXPECT_CALL(listener, OnShareTargetDiscovered(MatchesTarget(share_target)))
...@@ -127,7 +120,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnShareTargetLost) { ...@@ -127,7 +120,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnShareTargetLost) {
MockShareTargetListener listener; MockShareTargetListener listener;
manager().StartDiscovery(listener.Bind(), base::DoNothing()); manager().StartDiscovery(listener.Bind(), base::DoNothing());
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
base::RunLoop run_loop; base::RunLoop run_loop;
EXPECT_CALL(listener, OnShareTargetLost(MatchesTarget(share_target))) EXPECT_CALL(listener, OnShareTargetLost(MatchesTarget(share_target)))
...@@ -145,15 +138,14 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_Invalid) { ...@@ -145,15 +138,14 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_Invalid) {
Run(nearby_share::mojom::SelectShareTargetResult::kInvalidShareTarget, Run(nearby_share::mojom::SelectShareTargetResult::kInvalidShareTarget,
testing::Eq(base::nullopt), testing::IsFalse())); testing::Eq(base::nullopt), testing::IsFalse()));
auto share_target = nearby_share::mojom::ShareTarget::New(); manager().SelectShareTarget({}, callback.Get());
manager().SelectShareTarget(std::move(share_target), callback.Get());
} }
TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_SendSuccess) { TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_SendSuccess) {
// Setup share target // Setup share target
MockShareTargetListener listener; MockShareTargetListener listener;
manager().StartDiscovery(listener.Bind(), base::DoNothing()); manager().StartDiscovery(listener.Bind(), base::DoNothing());
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
manager().OnShareTargetDiscovered(share_target); manager().OnShareTargetDiscovered(share_target);
// We don't expect the callback to be called until OnTransferUpdate(). // We don't expect the callback to be called until OnTransferUpdate().
...@@ -165,19 +157,18 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_SendSuccess) { ...@@ -165,19 +157,18 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_SendSuccess) {
.WillOnce(testing::Invoke( .WillOnce(testing::Invoke(
[&share_target](const ShareTarget& target, std::string text, [&share_target](const ShareTarget& target, std::string text,
NearbySharingService::StatusCodesCallback callback) { NearbySharingService::StatusCodesCallback callback) {
EXPECT_EQ(share_target.id(), target.id()); EXPECT_EQ(share_target.id, target.id);
std::move(callback).Run(NearbySharingService::StatusCodes::kOk); std::move(callback).Run(NearbySharingService::StatusCodes::kOk);
})); }));
manager().SelectShareTarget( manager().SelectShareTarget(share_target.id, callback.Get());
nearby_share::mojom::ShareTarget::New(share_target.id()), callback.Get());
} }
TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_SendError) { TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_SendError) {
// Setup share target // Setup share target
MockShareTargetListener listener; MockShareTargetListener listener;
manager().StartDiscovery(listener.Bind(), base::DoNothing()); manager().StartDiscovery(listener.Bind(), base::DoNothing());
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
manager().OnShareTargetDiscovered(share_target); manager().OnShareTargetDiscovered(share_target);
// Expect an error if NearbySharingService::Send*() fails. // Expect an error if NearbySharingService::Send*() fails.
...@@ -191,19 +182,18 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_SendError) { ...@@ -191,19 +182,18 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, SelectShareTarget_SendError) {
.WillOnce(testing::Invoke( .WillOnce(testing::Invoke(
[&share_target](const ShareTarget& target, std::string text, [&share_target](const ShareTarget& target, std::string text,
NearbySharingService::StatusCodesCallback callback) { NearbySharingService::StatusCodesCallback callback) {
EXPECT_EQ(share_target.id(), target.id()); EXPECT_EQ(share_target.id, target.id);
std::move(callback).Run(NearbySharingService::StatusCodes::kError); std::move(callback).Run(NearbySharingService::StatusCodes::kError);
})); }));
manager().SelectShareTarget( manager().SelectShareTarget(share_target.id, callback.Get());
nearby_share::mojom::ShareTarget::New(share_target.id()), callback.Get());
} }
TEST_F(NearbyPerSessionDiscoveryManagerTest, OnTransferUpdate_WaitRemote) { TEST_F(NearbyPerSessionDiscoveryManagerTest, OnTransferUpdate_WaitRemote) {
// Setup share target // Setup share target
MockShareTargetListener listener; MockShareTargetListener listener;
manager().StartDiscovery(listener.Bind(), base::DoNothing()); manager().StartDiscovery(listener.Bind(), base::DoNothing());
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
manager().OnShareTargetDiscovered(share_target); manager().OnShareTargetDiscovered(share_target);
// Expect success without confirmation manager and token. // Expect success without confirmation manager and token.
...@@ -211,8 +201,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnTransferUpdate_WaitRemote) { ...@@ -211,8 +201,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnTransferUpdate_WaitRemote) {
EXPECT_CALL(callback, Run(nearby_share::mojom::SelectShareTargetResult::kOk, EXPECT_CALL(callback, Run(nearby_share::mojom::SelectShareTargetResult::kOk,
testing::Eq(base::nullopt), testing::IsFalse())); testing::Eq(base::nullopt), testing::IsFalse()));
manager().SelectShareTarget( manager().SelectShareTarget(share_target.id, callback.Get());
nearby_share::mojom::ShareTarget::New(share_target.id()), callback.Get());
auto metadata = auto metadata =
TransferMetadataBuilder() TransferMetadataBuilder()
...@@ -225,7 +214,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnTransferUpdate_WaitLocal) { ...@@ -225,7 +214,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnTransferUpdate_WaitLocal) {
// Setup share target // Setup share target
MockShareTargetListener listener; MockShareTargetListener listener;
manager().StartDiscovery(listener.Bind(), base::DoNothing()); manager().StartDiscovery(listener.Bind(), base::DoNothing());
ShareTarget share_target = ShareTargetBuilder().build(); ShareTarget share_target;
manager().OnShareTargetDiscovered(share_target); manager().OnShareTargetDiscovered(share_target);
std::string token = "Test Token"; std::string token = "Test Token";
...@@ -235,8 +224,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnTransferUpdate_WaitLocal) { ...@@ -235,8 +224,7 @@ TEST_F(NearbyPerSessionDiscoveryManagerTest, OnTransferUpdate_WaitLocal) {
EXPECT_CALL(callback, Run(nearby_share::mojom::SelectShareTargetResult::kOk, EXPECT_CALL(callback, Run(nearby_share::mojom::SelectShareTargetResult::kOk,
testing::Eq(token), testing::IsTrue())); testing::Eq(token), testing::IsTrue()));
manager().SelectShareTarget( manager().SelectShareTarget(share_target.id, callback.Get());
nearby_share::mojom::ShareTarget::New(share_target.id()), callback.Get());
auto metadata = auto metadata =
TransferMetadataBuilder() TransferMetadataBuilder()
......
...@@ -655,7 +655,7 @@ void NearbySharingServiceImpl::OnIncomingTransferUpdate( ...@@ -655,7 +655,7 @@ void NearbySharingServiceImpl::OnIncomingTransferUpdate(
IncomingShareTargetInfo& NearbySharingServiceImpl::GetIncomingShareTargetInfo( IncomingShareTargetInfo& NearbySharingServiceImpl::GetIncomingShareTargetInfo(
const ShareTarget& share_target) { const ShareTarget& share_target) {
return incoming_share_target_info_map_[share_target.id()]; return incoming_share_target_info_map_[share_target.id];
} }
NearbyConnection* NearbySharingServiceImpl::GetIncomingConnection( NearbyConnection* NearbySharingServiceImpl::GetIncomingConnection(
...@@ -665,7 +665,7 @@ NearbyConnection* NearbySharingServiceImpl::GetIncomingConnection( ...@@ -665,7 +665,7 @@ NearbyConnection* NearbySharingServiceImpl::GetIncomingConnection(
OutgoingShareTargetInfo& NearbySharingServiceImpl::GetOutgoingShareTargetInfo( OutgoingShareTargetInfo& NearbySharingServiceImpl::GetOutgoingShareTargetInfo(
ShareTarget share_target) { ShareTarget share_target) {
return outgoing_share_target_info_map_[share_target.id()]; return outgoing_share_target_info_map_[share_target.id];
} }
void NearbySharingServiceImpl::ClearOutgoingShareTargetInfoMap() { void NearbySharingServiceImpl::ClearOutgoingShareTargetInfoMap() {
......
...@@ -6,23 +6,24 @@ ...@@ -6,23 +6,24 @@
#include <utility> #include <utility>
ShareTarget::ShareTarget() = default;
ShareTarget::ShareTarget(std::string device_name, ShareTarget::ShareTarget(std::string device_name,
GURL image_url, GURL image_url,
Type type, nearby_share::mojom::ShareTargetType type,
std::vector<TextAttachment> text_attachments, std::vector<TextAttachment> text_attachments,
std::vector<FileAttachment> file_attachments, std::vector<FileAttachment> file_attachments,
bool is_incoming, bool is_incoming,
base::Optional<std::string> full_name, base::Optional<std::string> full_name,
bool is_known) bool is_known)
: id_(base::UnguessableToken::Create()), : device_name(std::move(device_name)),
device_name_(std::move(device_name)), image_url(std::move(image_url)),
image_url_(std::move(image_url)), type(type),
type_(type), text_attachments(std::move(text_attachments)),
text_attachments_(std::move(text_attachments)), file_attachments(std::move(file_attachments)),
file_attachments_(std::move(file_attachments)), is_incoming(is_incoming),
is_incoming_(is_incoming), full_name(std::move(full_name)),
full_name_(std::move(full_name)), is_known(is_known) {}
is_known_(is_known) {}
ShareTarget::ShareTarget(const ShareTarget&) = default; ShareTarget::ShareTarget(const ShareTarget&) = default;
......
...@@ -12,16 +12,16 @@ ...@@ -12,16 +12,16 @@
#include "base/unguessable_token.h" #include "base/unguessable_token.h"
#include "chrome/browser/nearby_sharing/file_attachment.h" #include "chrome/browser/nearby_sharing/file_attachment.h"
#include "chrome/browser/nearby_sharing/text_attachment.h" #include "chrome/browser/nearby_sharing/text_attachment.h"
#include "chrome/browser/ui/webui/nearby_share/nearby_share.mojom-shared.h"
#include "url/gurl.h" #include "url/gurl.h"
// A remote device. // A remote device.
class ShareTarget { struct ShareTarget {
public: public:
enum class Type { kUnknown, kPhone, kTablet, kLaptop, kMaxValue = kLaptop }; ShareTarget();
ShareTarget(std::string device_name, ShareTarget(std::string device_name,
GURL image_url, GURL image_url,
Type type, nearby_share::mojom::ShareTargetType type,
std::vector<TextAttachment> text_attachments, std::vector<TextAttachment> text_attachments,
std::vector<FileAttachment> file_attachments, std::vector<FileAttachment> file_attachments,
bool is_incoming, bool is_incoming,
...@@ -33,36 +33,18 @@ class ShareTarget { ...@@ -33,36 +33,18 @@ class ShareTarget {
ShareTarget& operator=(ShareTarget&&); ShareTarget& operator=(ShareTarget&&);
~ShareTarget(); ~ShareTarget();
base::UnguessableToken id() const { return id_; } base::UnguessableToken id = base::UnguessableToken::Create();
const std::string& device_name() const { return device_name_; } std::string device_name;
// Uri that points to an image of the ShareTarget, if one exists.
// Returns a Uri that points to an image of the ShareTarget, if one exists. base::Optional<GURL> image_url;
const base::Optional<GURL>& image_url() const { return image_url_; } nearby_share::mojom::ShareTargetType type =
nearby_share::mojom::ShareTargetType::kUnknown;
Type type() const { return type_; } std::vector<TextAttachment> text_attachments;
const std::vector<TextAttachment>& text_attachments() const { std::vector<FileAttachment> file_attachments;
return text_attachments_; bool is_incoming = false;
} base::Optional<std::string> full_name;
const std::vector<FileAttachment>& file_attachments() const { // True if local device has the PublicCertificate this target is advertising.
return file_attachments_; bool is_known = false;
}
bool is_incoming() const { return is_incoming_; }
const base::Optional<std::string>& full_name() const { return full_name_; }
// Returns True if local device has the PublicCertificate the remote device is
// advertising.
bool is_known() const { return is_known_; }
private:
base::UnguessableToken id_;
std::string device_name_;
base::Optional<GURL> image_url_;
Type type_;
std::vector<TextAttachment> text_attachments_;
std::vector<FileAttachment> file_attachments_;
bool is_incoming_;
base::Optional<std::string> full_name_;
bool is_known_;
}; };
#endif // CHROME_BROWSER_NEARBY_SHARING_SHARE_TARGET_H_ #endif // CHROME_BROWSER_NEARBY_SHARING_SHARE_TARGET_H_
// Copyright 2020 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 "chrome/browser/nearby_sharing/share_target_builder.h"
ShareTargetBuilder::ShareTargetBuilder() = default;
ShareTargetBuilder::~ShareTargetBuilder() = default;
ShareTargetBuilder& ShareTargetBuilder::set_device_name(
const std::string& device_name) {
device_name_ = device_name;
return *this;
}
ShareTargetBuilder& ShareTargetBuilder::set_is_incoming(bool is_incoming) {
is_incoming_ = is_incoming;
return *this;
}
ShareTargetBuilder& ShareTargetBuilder::add_attachment(
TextAttachment attachment) {
text_attachments_.push_back(std::move(attachment));
return *this;
}
ShareTargetBuilder& ShareTargetBuilder::add_attachment(
FileAttachment attachment) {
file_attachments_.push_back(std::move(attachment));
return *this;
}
ShareTarget ShareTargetBuilder::build() const {
return ShareTarget(device_name_,
/*image_url=*/GURL(), ShareTarget::Type::kPhone,
text_attachments_, file_attachments_, is_incoming_,
/*full_name=*/base::nullopt,
/*is_known=*/false);
}
// Copyright 2020 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 CHROME_BROWSER_NEARBY_SHARING_SHARE_TARGET_BUILDER_H_
#define CHROME_BROWSER_NEARBY_SHARING_SHARE_TARGET_BUILDER_H_
#include <string>
#include <vector>
#include "chrome/browser/nearby_sharing/file_attachment.h"
#include "chrome/browser/nearby_sharing/share_target.h"
#include "chrome/browser/nearby_sharing/text_attachment.h"
class ShareTargetBuilder {
public:
ShareTargetBuilder();
~ShareTargetBuilder();
ShareTargetBuilder& set_device_name(const std::string& device_name);
ShareTargetBuilder& set_is_incoming(bool is_incoming);
ShareTargetBuilder& add_attachment(TextAttachment attachment);
ShareTargetBuilder& add_attachment(FileAttachment attachment);
ShareTarget build() const;
private:
std::string device_name_;
bool is_incoming_ = false;
std::vector<TextAttachment> text_attachments_;
std::vector<FileAttachment> file_attachments_;
};
#endif // CHROME_BROWSER_NEARBY_SHARING_SHARE_TARGET_BUILDER_H_
...@@ -48,11 +48,9 @@ Polymer({ ...@@ -48,11 +48,9 @@ Polymer({
/** @private */ /** @private */
onNextTap_() { onNextTap_() {
// TODO(knollr): Use the selected device after discovering it. // TODO(knollr): Use the selected device after discovering it.
const shareTarget = { const shareTargetId = {high: 0, low: 17};
id: /** @type {!mojoBase.mojom.UnguessableToken} */ ({high: 0, low: 17}),
};
getDiscoveryManager().selectShareTarget(shareTarget).then(response => { getDiscoveryManager().selectShareTarget(shareTargetId).then(response => {
const {result, token, confirmationManager} = response; const {result, token, confirmationManager} = response;
if (result !== nearbyShare.mojom.SelectShareTargetResult.kOk) { if (result !== nearbyShare.mojom.SelectShareTargetResult.kOk) {
// TODO(knollr): Show error. // TODO(knollr): Show error.
......
...@@ -8,4 +8,17 @@ mojom("mojom") { ...@@ -8,4 +8,17 @@ mojom("mojom") {
sources = [ "nearby_share.mojom" ] sources = [ "nearby_share.mojom" ]
public_deps = [ "//mojo/public/mojom/base" ] public_deps = [ "//mojo/public/mojom/base" ]
cpp_typemaps = [
{
types = [
{
mojom = "nearby_share.mojom.ShareTarget"
cpp = "::ShareTarget"
},
]
traits_headers = [ "nearby_share_mojom_traits.h" ]
traits_sources = [ "nearby_share_mojom_traits.cc" ]
},
]
} }
...@@ -2,5 +2,7 @@ file://chrome/browser/nearby_sharing/OWNERS ...@@ -2,5 +2,7 @@ file://chrome/browser/nearby_sharing/OWNERS
per-file *.mojom=set noparent per-file *.mojom=set noparent
per-file *.mojom=file://ipc/SECURITY_OWNERS per-file *.mojom=file://ipc/SECURITY_OWNERS
per-file *_mojom_traits*.*=set noparent
per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
# COMPONENT: UI>Browser>Sharing>Nearby # COMPONENT: UI>Browser>Sharing>Nearby
...@@ -6,11 +6,27 @@ module nearby_share.mojom; ...@@ -6,11 +6,27 @@ module nearby_share.mojom;
import "mojo/public/mojom/base/unguessable_token.mojom"; import "mojo/public/mojom/base/unguessable_token.mojom";
// Describes the type of device for a share target.
enum ShareTargetType {
// Unknown device type.
kUnknown,
// A phone.
kPhone,
// A tablet.
kTablet,
// A laptop.
kLaptop,
};
// Describes a nearby device that is able to receive data via Nearby Share. // Describes a nearby device that is able to receive data via Nearby Share.
struct ShareTarget { struct ShareTarget {
// Unique identifier during the current discovery session. The same physical // Unique identifier during the current discovery session. The same physical
// device might have a different value each time StartDiscovery() is called. // device might have a different value each time StartDiscovery() is called.
mojo_base.mojom.UnguessableToken id; mojo_base.mojom.UnguessableToken id;
// User defined name of this share target.
string name;
// Device type of this share target.
ShareTargetType type;
}; };
// Result of selecting a share target. // Result of selecting a share target.
...@@ -29,10 +45,10 @@ enum SelectShareTargetResult { ...@@ -29,10 +45,10 @@ enum SelectShareTargetResult {
// is implemented in UI surfaces and called from the browser process. // is implemented in UI surfaces and called from the browser process.
interface ShareTargetListener { interface ShareTargetListener {
// Reports a nearby device found via Nearby Share. // Reports a nearby device found via Nearby Share.
OnShareTargetDiscovered(ShareTarget shareTarget); OnShareTargetDiscovered(ShareTarget share_target);
// Reports that a previously discovered device is no longer available. // Reports that a previously discovered device is no longer available.
OnShareTargetLost(ShareTarget shareTarget); OnShareTargetLost(ShareTarget share_target);
}; };
// Manager interface for nearby device discovery. Implemented on the browser // Manager interface for nearby device discovery. Implemented on the browser
...@@ -43,12 +59,12 @@ interface DiscoveryManager { ...@@ -43,12 +59,12 @@ interface DiscoveryManager {
StartDiscovery(pending_remote<ShareTargetListener> listener) StartDiscovery(pending_remote<ShareTargetListener> listener)
=> (bool success); => (bool success);
// Select a previously discovered |shareTarget| to send data to. If the // Select a previously discovered |share_target_id| to send data to. If the
// selected target requires an additional confirmation of a shared connection // selected target requires an additional confirmation of a shared connection
// id by the user it will return a valid ConfirmationManager interface to be // id by the user it will return a valid ConfirmationManager interface to be
// used to accept or reject the transfer. |token| will contain the string to // used to accept or reject the transfer. |token| will contain the string to
// show to the user in that case. // show to the user in that case.
SelectShareTarget(ShareTarget shareTarget) SelectShareTarget(mojo_base.mojom.UnguessableToken share_target_id)
=> (SelectShareTargetResult result, => (SelectShareTargetResult result,
string? token, string? token,
pending_remote<ConfirmationManager>? confirmation_manager); pending_remote<ConfirmationManager>? confirmation_manager);
......
// Copyright 2020 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 "chrome/browser/ui/webui/nearby_share/nearby_share_mojom_traits.h"
#include "base/notreached.h"
namespace mojo {
// static
base::UnguessableToken
StructTraits<nearby_share::mojom::ShareTargetDataView, ShareTarget>::id(
const ShareTarget& share_target) {
return share_target.id;
}
// static
std::string StructTraits<nearby_share::mojom::ShareTargetDataView,
ShareTarget>::name(const ShareTarget& share_target) {
return share_target.device_name;
}
// static
nearby_share::mojom::ShareTargetType
StructTraits<nearby_share::mojom::ShareTargetDataView, ShareTarget>::type(
const ShareTarget& share_target) {
return share_target.type;
}
// static
bool StructTraits<nearby_share::mojom::ShareTargetDataView, ShareTarget>::Read(
nearby_share::mojom::ShareTargetDataView data,
ShareTarget* out) {
return data.ReadId(&out->id) && data.ReadName(&out->device_name) &&
data.ReadType(&out->type);
}
} // namespace mojo
// Copyright 2020 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 CHROME_BROWSER_UI_WEBUI_NEARBY_SHARE_NEARBY_SHARE_MOJOM_TRAITS_H_
#define CHROME_BROWSER_UI_WEBUI_NEARBY_SHARE_NEARBY_SHARE_MOJOM_TRAITS_H_
#include <string>
#include "chrome/browser/nearby_sharing/share_target.h"
#include "chrome/browser/ui/webui/nearby_share/nearby_share.mojom.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
namespace mojo {
template <>
struct StructTraits<nearby_share::mojom::ShareTargetDataView, ShareTarget> {
static base::UnguessableToken id(const ShareTarget& share_target);
static std::string name(const ShareTarget& share_target);
static nearby_share::mojom::ShareTargetType type(
const ShareTarget& share_target);
static bool Read(nearby_share::mojom::ShareTargetDataView data,
ShareTarget* out);
};
} // namespace mojo
#endif // CHROME_BROWSER_UI_WEBUI_NEARBY_SHARE_NEARBY_SHARE_MOJOM_TRAITS_H_
...@@ -3668,8 +3668,6 @@ test("unit_tests") { ...@@ -3668,8 +3668,6 @@ test("unit_tests") {
"../browser/nearby_sharing/nearby_per_session_discovery_manager_unittest.cc", "../browser/nearby_sharing/nearby_per_session_discovery_manager_unittest.cc",
"../browser/nearby_sharing/nearby_process_manager_unittest.cc", "../browser/nearby_sharing/nearby_process_manager_unittest.cc",
"../browser/nearby_sharing/nearby_sharing_service_impl_unittest.cc", "../browser/nearby_sharing/nearby_sharing_service_impl_unittest.cc",
"../browser/nearby_sharing/share_target_builder.cc",
"../browser/nearby_sharing/share_target_builder.h",
"../browser/nearby_sharing/transfer_metadata_builder.cc", "../browser/nearby_sharing/transfer_metadata_builder.cc",
"../browser/nearby_sharing/transfer_metadata_builder.h", "../browser/nearby_sharing/transfer_metadata_builder.h",
"../browser/nearby_sharing/webrtc_signaling_messenger_unittest.cc", "../browser/nearby_sharing/webrtc_signaling_messenger_unittest.cc",
......
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