diff --git a/sharing/certificates/fake_nearby_share_certificate_manager.h b/sharing/certificates/fake_nearby_share_certificate_manager.h index fd1cdac3..ffc5951a 100644 --- a/sharing/certificates/fake_nearby_share_certificate_manager.h +++ b/sharing/certificates/fake_nearby_share_certificate_manager.h @@ -102,6 +102,7 @@ class FakeNearbyShareCertificateManager : public NearbyShareCertificateManager { void ClearPublicCertificates(std::function callback) override; void SetVendorId(int32_t vendor_id) override {} std::string Dump() const override { return ""; } + bool UsingIdentityRpc() override { return true; } // Make protected methods from base class public in this fake class. using NearbyShareCertificateManager::NotifyPrivateCertificatesChanged; diff --git a/sharing/certificates/nearby_share_certificate_manager.h b/sharing/certificates/nearby_share_certificate_manager.h index 5caf5c6f..1573078b 100644 --- a/sharing/certificates/nearby_share_certificate_manager.h +++ b/sharing/certificates/nearby_share_certificate_manager.h @@ -133,6 +133,9 @@ class NearbyShareCertificateManager { // Dump certificates ID information for troubleshooting. virtual std::string Dump() const = 0; + // Returns true if configured to use Identity RPC. + virtual bool UsingIdentityRpc() = 0; + protected: virtual void OnStart() = 0; virtual void OnStop() = 0; diff --git a/sharing/certificates/nearby_share_certificate_manager_impl.cc b/sharing/certificates/nearby_share_certificate_manager_impl.cc index 9771c22f..d6f38494 100644 --- a/sharing/certificates/nearby_share_certificate_manager_impl.cc +++ b/sharing/certificates/nearby_share_certificate_manager_impl.cc @@ -280,9 +280,7 @@ NearbyShareCertificateManagerImpl::NearbyShareCertificateManagerImpl( })), executor_(context->CreateSequencedTaskRunner()) { local_device_data_manager_->AddObserver(this); - if (!NearbyFlags::GetInstance().GetBoolFlag( - sharing::config_package_nearby::nearby_sharing_feature:: - kCallNearbyIdentityApi)) { + if (!UsingIdentityRpc()) { contact_manager_->AddObserver(this); } } @@ -325,6 +323,10 @@ void NearbyShareCertificateManagerImpl::CertificateDownloadContext:: }); } +bool NearbyShareCertificateManagerImpl::UsingIdentityRpc() { + return local_device_data_manager_->UsingIdentityRpc(); +} + void NearbyShareCertificateManagerImpl::CertificateDownloadContext:: QuerySharedCredentialsFetchNextPage() { page_number_++; @@ -439,9 +441,7 @@ void NearbyShareCertificateManagerImpl::DownloadPublicCertificates() { absl::bind_front(&NearbyShareCertificateManagerImpl:: OnPublicCertificatesDownloadSuccess, this)); - if (NearbyFlags::GetInstance().GetBoolFlag( - config_package_nearby::nearby_sharing_feature:: - kCallNearbyIdentityApi)) { + if (UsingIdentityRpc()) { context->QuerySharedCredentialsFetchNextPage(); } else { context->FetchNextPage(); @@ -479,9 +479,7 @@ void NearbyShareCertificateManagerImpl::UploadLocalDeviceCertificates() { << " local device certificates."; bool upload_certificates_result = false; absl::Notification notification; - if (NearbyFlags::GetInstance().GetBoolFlag( - config_package_nearby::nearby_sharing_feature:: - kCallNearbyIdentityApi)) { + if (local_device_data_manager_->UsingIdentityRpc()) { LOG(INFO) << __func__ << ": [Call Identity API] PublishDevice: upload " << public_certs.size() << " local device certificates."; local_device_data_manager_->PublishDevice( @@ -511,10 +509,7 @@ void NearbyShareCertificateManagerImpl::UploadLocalDeviceCertificates() { // TODO(b/373780923): add Unit test for the two RPC calls and add a cap to // the number of time you can keep calling PublishDevice due to contacts // changes (it could indicate a server bug). - if (call_publish_device_after_certs_regen_ && - NearbyFlags::GetInstance().GetBoolFlag( - config_package_nearby::nearby_sharing_feature:: - kCallNearbyIdentityApi)) { + if (call_publish_device_after_certs_regen_ && UsingIdentityRpc()) { LOG(INFO) << __func__ << ": [Call Identity API] Another call to PublishDevice after " "regenerating all Private certificates: "; diff --git a/sharing/certificates/nearby_share_certificate_manager_impl.h b/sharing/certificates/nearby_share_certificate_manager_impl.h index 16449d41..a9a18881 100644 --- a/sharing/certificates/nearby_share_certificate_manager_impl.h +++ b/sharing/certificates/nearby_share_certificate_manager_impl.h @@ -177,6 +177,8 @@ class NearbyShareCertificateManagerImpl // Dump certs information. std::string Dump() const override; + bool UsingIdentityRpc() override; + // Used by the private certificate expiration scheduler to determine the next // private certificate expiration time. Returns base::Time::Min() if // certificates are missing. This function never returns absl::nullopt. diff --git a/sharing/certificates/nearby_share_certificate_manager_impl_test.cc b/sharing/certificates/nearby_share_certificate_manager_impl_test.cc index d94ad06f..afab6484 100644 --- a/sharing/certificates/nearby_share_certificate_manager_impl_test.cc +++ b/sharing/certificates/nearby_share_certificate_manager_impl_test.cc @@ -132,6 +132,8 @@ class NearbyShareCertificateManagerImplTest // Set default device data. local_device_data_manager_->SetDeviceName( GetNearbyShareTestMetadata().device_name()); + // Disable Identity API. + local_device_data_manager_->SetUsingIdentityRpc(false); SetBluetoothMacAddress(kTestUnparsedBluetoothMacAddress); SetMockBluetoothAddress(kTestUnparsedBluetoothMacAddress); @@ -173,7 +175,6 @@ class NearbyShareCertificateManagerImplTest cert_manager_->RemoveObserver(this); NearbyShareSchedulerFactory::SetFactoryForTesting(nullptr); NearbyShareCertificateStorageImpl::Factory::SetFactoryForTesting(nullptr); - NearbyFlags::GetInstance().ResetOverridedValues(); } void SetBluetoothMacAddress(absl::string_view bluetooth_mac_address) { @@ -775,18 +776,16 @@ TEST_F(NearbyShareCertificateManagerImplTest, } TEST_F(NearbyShareCertificateManagerImplTest, QuerySharedCredentialsSuccess) { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_sharing_feature::kCallNearbyIdentityApi, - true); + // Enable Identity API. + local_device_data_manager_->SetUsingIdentityRpc(true); ASSERT_NO_FATAL_FAILURE(QuerySharedCredentialsFlow( /*num_pages=*/2, DownloadPublicCertificatesResult::kSuccess)); } TEST_F(NearbyShareCertificateManagerImplTest, QuerySharedCredentialsRPCFailure) { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_sharing_feature::kCallNearbyIdentityApi, - true); + // Enable Identity API. + local_device_data_manager_->SetUsingIdentityRpc(true); ASSERT_NO_FATAL_FAILURE(QuerySharedCredentialsFlow( /*num_pages=*/2, DownloadPublicCertificatesResult::kHttpError)); } @@ -824,9 +823,8 @@ TEST_F(NearbyShareCertificateManagerImplTest, TEST_F(NearbyShareCertificateManagerImplTest, RefreshPrivateCertificates_PublishDevice_NoCertificates_UploadSuccess) { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_sharing_feature::kCallNearbyIdentityApi, - true); + // Enable Identity API. + local_device_data_manager_->SetUsingIdentityRpc(true); cert_store_->ReplacePrivateCertificates({}); HandlePrivateCertificateRefresh(/*expect_private_cert_refresh=*/true, @@ -837,9 +835,8 @@ TEST_F(NearbyShareCertificateManagerImplTest, TEST_F(NearbyShareCertificateManagerImplTest, RefreshPrivateCertificates_PublishDevice_ForceUploadSuccess) { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_sharing_feature::kCallNearbyIdentityApi, - true); + // Enable Identity API. + local_device_data_manager_->SetUsingIdentityRpc(true); // All private certificates are valid. cert_store_->ReplacePrivateCertificates(private_certificates_); cert_manager_->PrivateCertificateRefresh(/*force_upload=*/true); @@ -858,9 +855,8 @@ TEST_F(NearbyShareCertificateManagerImplTest, TEST_F(NearbyShareCertificateManagerImplTest, RefreshPrivateCertificates_NotLoggedIn_DoesNotCallPublishDevice) { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_sharing_feature::kCallNearbyIdentityApi, - true); + // Enable Identity API. + local_device_data_manager_->SetUsingIdentityRpc(true); fake_account_manager_.SetAccount(std::nullopt); // All private certificates are valid. cert_store_->ReplacePrivateCertificates({}); @@ -1052,9 +1048,8 @@ TEST_F(NearbyShareCertificateManagerImplTest, TEST_F( NearbyShareCertificateManagerImplTest, RefreshPrivateCertificates_NotLoggedIn_DisablesPrivateCertExpirationTimer) { - NearbyFlags::GetInstance().OverrideBoolFlagValue( - config_package_nearby::nearby_sharing_feature::kCallNearbyIdentityApi, - true); + // Enable Identity API. + local_device_data_manager_->SetUsingIdentityRpc(true); fake_account_manager_.SetAccount(std::nullopt); // All private certificates are valid. cert_store_->ReplacePrivateCertificates({}); diff --git a/sharing/contacts/nearby_share_contact_manager_impl.cc b/sharing/contacts/nearby_share_contact_manager_impl.cc index ff8a4539..7e834985 100644 --- a/sharing/contacts/nearby_share_contact_manager_impl.cc +++ b/sharing/contacts/nearby_share_contact_manager_impl.cc @@ -175,9 +175,7 @@ NearbyShareContactManagerImpl::NearbyShareContactManagerImpl( prefs::kNearbySharingSchedulerContactDownloadAndUploadName, [&] { DownloadContacts(); })), executor_(context->CreateSequencedTaskRunner()), - use_identity_api_(NearbyFlags::GetInstance().GetBoolFlag( - config_package_nearby::nearby_sharing_feature:: - kCallNearbyIdentityApi)) {} + use_identity_api_(local_device_data_manager_->UsingIdentityRpc()) {} NearbyShareContactManagerImpl::~NearbyShareContactManagerImpl() = default; diff --git a/sharing/contacts/nearby_share_contact_manager_impl_test.cc b/sharing/contacts/nearby_share_contact_manager_impl_test.cc index 8c36cc06..5b04b93f 100644 --- a/sharing/contacts/nearby_share_contact_manager_impl_test.cc +++ b/sharing/contacts/nearby_share_contact_manager_impl_test.cc @@ -166,6 +166,7 @@ class NearbyShareContactManagerImplTest NearbyShareContactManagerImplTest() : local_device_data_manager_(kTestDefaultDeviceName) { local_device_data_manager_.set_is_sync_mode(true); + local_device_data_manager_.SetUsingIdentityRpc(false); } ~NearbyShareContactManagerImplTest() override = default; diff --git a/sharing/local_device_data/fake_nearby_share_local_device_data_manager.h b/sharing/local_device_data/fake_nearby_share_local_device_data_manager.h index 960cfbe4..2cb63146 100644 --- a/sharing/local_device_data/fake_nearby_share_local_device_data_manager.h +++ b/sharing/local_device_data/fake_nearby_share_local_device_data_manager.h @@ -18,7 +18,6 @@ #include #include -#include #include #include @@ -123,6 +122,11 @@ class FakeNearbyShareLocalDeviceDataManager std::vector certificates, bool is_second_call, PublishDeviceCallback callback) override; + bool UsingIdentityRpc() override { return using_identity_rpc_; } + void SetUsingIdentityRpc(bool using_identity_rpc) { + using_identity_rpc_ = using_identity_rpc; + } + // Make protected observer-notification methods from the base class public in // this fake class. using NearbyShareLocalDeviceDataManager::NotifyLocalDeviceDataChanged; @@ -176,6 +180,7 @@ class FakeNearbyShareLocalDeviceDataManager bool upload_contact_result_ = false; bool upload_certificate_result_ = false; bool publish_device_result_ = false; + bool using_identity_rpc_ = true; }; } // namespace sharing diff --git a/sharing/local_device_data/nearby_share_local_device_data_manager.h b/sharing/local_device_data/nearby_share_local_device_data_manager.h index 0f7b7bc3..f834151d 100644 --- a/sharing/local_device_data/nearby_share_local_device_data_manager.h +++ b/sharing/local_device_data/nearby_share_local_device_data_manager.h @@ -104,6 +104,9 @@ class NearbyShareLocalDeviceDataManager { std::vector certificates, bool force_update_contacts, PublishDeviceCallback callback) = 0; + // Returns true if configured to use Identity RPC. + virtual bool UsingIdentityRpc() = 0; + protected: void NotifyLocalDeviceDataChanged(bool did_device_name_change, bool did_full_name_change, diff --git a/sharing/local_device_data/nearby_share_local_device_data_manager_impl.cc b/sharing/local_device_data/nearby_share_local_device_data_manager_impl.cc index f886b7fa..0814a6df 100644 --- a/sharing/local_device_data/nearby_share_local_device_data_manager_impl.cc +++ b/sharing/local_device_data/nearby_share_local_device_data_manager_impl.cc @@ -233,6 +233,11 @@ void NearbyShareLocalDeviceDataManagerImpl::UploadContacts( }); }); } + +bool NearbyShareLocalDeviceDataManagerImpl::UsingIdentityRpc() { + return nearby_identity_client_ != nullptr; +} + void NearbyShareLocalDeviceDataManagerImpl::PublishDevice( std::vector certificates, bool force_update_contacts, PublishDeviceCallback callback) { diff --git a/sharing/local_device_data/nearby_share_local_device_data_manager_impl.h b/sharing/local_device_data/nearby_share_local_device_data_manager_impl.h index 7145f6ac..c6962acb 100644 --- a/sharing/local_device_data/nearby_share_local_device_data_manager_impl.h +++ b/sharing/local_device_data/nearby_share_local_device_data_manager_impl.h @@ -90,6 +90,8 @@ class NearbyShareLocalDeviceDataManagerImpl std::vector certificates, bool force_update_contacts, PublishDeviceCallback callback) override; + bool UsingIdentityRpc() override; + // Creates a default device name of the form "'s ." // For example, "Josh's Chromebook." If a given name cannot be found, returns // just the device type. If the resulting name is too long the user's name diff --git a/sharing/nearby_sharing_service_impl.cc b/sharing/nearby_sharing_service_impl.cc index 4a0bb3f1..bba5708b 100644 --- a/sharing/nearby_sharing_service_impl.cc +++ b/sharing/nearby_sharing_service_impl.cc @@ -651,9 +651,7 @@ void NearbySharingServiceImpl::RegisterReceiveSurface( << background_receive_callbacks_map_.size(); if (IsVisibleInBackground(settings_->GetVisibility())) { - if (NearbyFlags::GetInstance().GetBoolFlag( - config_package_nearby::nearby_sharing_feature:: - kCallNearbyIdentityApi)) { + if (certificate_manager_->UsingIdentityRpc()) { // The Identity API does not support contact manager which triggers // Certificate refresh in DownloadContacts. Force upload explicitly. VLOG(1) << __func__