| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/sharing/sharing_handler_registry_impl.h" |
| |
| #include <memory> |
| |
| #include "components/sharing_message/mock_sharing_message_handler.h" |
| #include "components/sharing_message/sharing_device_registration.h" |
| #include "content/public/test/browser_task_environment.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace { |
| |
| class FakeSharingDeviceRegistration : public SharingDeviceRegistration { |
| public: |
| FakeSharingDeviceRegistration() |
| : SharingDeviceRegistration(/*pref_service=*/nullptr, |
| /*sharing_sync_preference=*/nullptr, |
| /*vapid_key_manager=*/nullptr, |
| /*instance_id_driver=*/nullptr, |
| /*sync_service=*/nullptr) {} |
| ~FakeSharingDeviceRegistration() override = default; |
| |
| bool IsSharedClipboardSupported() const override { |
| return shared_clipboard_supported_; |
| } |
| |
| void SetIsSharedClipboardSupported(bool supported) { |
| shared_clipboard_supported_ = supported; |
| } |
| |
| private: |
| bool shared_clipboard_supported_ = false; |
| }; |
| |
| class SharingHandlerRegistryImplTest : public testing::Test { |
| public: |
| SharingHandlerRegistryImplTest() = default; |
| ~SharingHandlerRegistryImplTest() override = default; |
| |
| std::unique_ptr<SharingHandlerRegistryImpl> CreateHandlerRegistry() { |
| return std::make_unique<SharingHandlerRegistryImpl>( |
| /*profile=*/nullptr, &sharing_device_registration_, |
| /*message_sender=*/nullptr, /*device_source=*/nullptr, |
| /*sms_fetcher=*/nullptr); |
| } |
| |
| protected: |
| content::BrowserTaskEnvironment task_environment_; |
| FakeSharingDeviceRegistration sharing_device_registration_; |
| }; |
| |
| } // namespace |
| |
| #if !BUILDFLAG(IS_ANDROID) |
| TEST_F(SharingHandlerRegistryImplTest, SharedClipboard_IsAdded) { |
| sharing_device_registration_.SetIsSharedClipboardSupported(true); |
| auto handler_registry = CreateHandlerRegistry(); |
| EXPECT_TRUE(handler_registry->GetSharingHandler( |
| components_sharing_message::SharingMessage::kSharedClipboardMessage)); |
| |
| // Default handlers cannot be removed. |
| handler_registry->UnregisterSharingHandler( |
| components_sharing_message::SharingMessage::kSharedClipboardMessage); |
| EXPECT_TRUE(handler_registry->GetSharingHandler( |
| components_sharing_message::SharingMessage::kSharedClipboardMessage)); |
| } |
| |
| TEST_F(SharingHandlerRegistryImplTest, SharedClipboard_NotAdded) { |
| sharing_device_registration_.SetIsSharedClipboardSupported(false); |
| auto handler_registry = CreateHandlerRegistry(); |
| EXPECT_FALSE(handler_registry->GetSharingHandler( |
| components_sharing_message::SharingMessage::kSharedClipboardMessage)); |
| } |
| #endif // !BUILDFLAG(IS_ANDROID) |
| |
| TEST_F(SharingHandlerRegistryImplTest, SharedClipboard_AddRemoveManually) { |
| sharing_device_registration_.SetIsSharedClipboardSupported(false); |
| auto handler_registry = CreateHandlerRegistry(); |
| EXPECT_FALSE(handler_registry->GetSharingHandler( |
| components_sharing_message::SharingMessage::kSharedClipboardMessage)); |
| |
| handler_registry->RegisterSharingHandler( |
| std::make_unique<MockSharingMessageHandler>(), |
| components_sharing_message::SharingMessage::kSharedClipboardMessage); |
| EXPECT_TRUE(handler_registry->GetSharingHandler( |
| components_sharing_message::SharingMessage::kSharedClipboardMessage)); |
| |
| handler_registry->UnregisterSharingHandler( |
| components_sharing_message::SharingMessage::kSharedClipboardMessage); |
| EXPECT_FALSE(handler_registry->GetSharingHandler( |
| components_sharing_message::SharingMessage::kSharedClipboardMessage)); |
| } |