| Index: chrome/browser/background_fetch/background_fetch_client_impl_unittest.cc
|
| diff --git a/chrome/browser/background_fetch/background_fetch_client_impl_unittest.cc b/chrome/browser/background_fetch/background_fetch_client_impl_unittest.cc
|
| index 471a417c07655195d3972d0de0c1a226571f6046..66dd47d07a88fc5eb2620e8ac8e881c186c8eab0 100644
|
| --- a/chrome/browser/background_fetch/background_fetch_client_impl_unittest.cc
|
| +++ b/chrome/browser/background_fetch/background_fetch_client_impl_unittest.cc
|
| @@ -8,11 +8,16 @@
|
| #include "base/threading/thread_task_runner_handle.h"
|
| #include "chrome/browser/background_fetch/background_fetch_client_factory.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| +#include "components/offline_items_collection/core/offline_content_provider.h"
|
| #include "components/offline_items_collection/core/offline_item.h"
|
| #include "content/public/browser/background_fetch_client.h"
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +using offline_items_collection::ContentId;
|
| +using offline_items_collection::OfflineContentProvider;
|
| +using offline_items_collection::OfflineItem;
|
| +
|
| namespace {
|
|
|
| const char kRegistrationId[] = "1234:www.example.com:game_data";
|
| @@ -42,6 +47,31 @@ class FakeBackgroundFetchDelegate
|
| std::string expected_id_;
|
| };
|
|
|
| +class FakeBackgroundFetchObserver : public OfflineContentProvider::Observer {
|
| + public:
|
| + FakeBackgroundFetchObserver() = default;
|
| + ~FakeBackgroundFetchObserver() override = default;
|
| +
|
| + // OfflineContentProvider::Observer implementation.
|
| + void OnItemsAvailable(OfflineContentProvider* provider) override {
|
| + provider_ = provider;
|
| + }
|
| +
|
| + void OnItemsAdded(
|
| + const OfflineContentProvider::OfflineItemList& items) override {
|
| + added_items_ = items;
|
| + }
|
| +
|
| + void OnItemRemoved(const ContentId& id) override { removed_item_ = id; }
|
| +
|
| + void OnItemUpdated(const OfflineItem& item) override { updated_item_ = item; }
|
| +
|
| + OfflineContentProvider* provider_ = nullptr;
|
| + OfflineContentProvider::OfflineItemList added_items_;
|
| + ContentId removed_item_;
|
| + OfflineItem updated_item_;
|
| +};
|
| +
|
| } // namespace
|
|
|
| class BackgroundFetchClientTest : public ::testing::Test {
|
| @@ -61,7 +91,7 @@ TEST_F(BackgroundFetchClientTest, CancelDownloadTest) {
|
| FakeBackgroundFetchDelegate delegate(kRegistrationId);
|
| client->SetDelegate(&delegate);
|
|
|
| - offline_items_collection::ContentId id(kNamespace, kRegistrationId);
|
| + ContentId id(kNamespace, kRegistrationId);
|
| ASSERT_NO_FATAL_FAILURE(client->CancelDownload(id));
|
|
|
| client->SetDelegate(nullptr);
|
| @@ -74,7 +104,7 @@ TEST_F(BackgroundFetchClientTest, PauseDownloadTest) {
|
| FakeBackgroundFetchDelegate delegate(kRegistrationId);
|
| client->SetDelegate(&delegate);
|
|
|
| - offline_items_collection::ContentId id(kNamespace, kRegistrationId);
|
| + ContentId id(kNamespace, kRegistrationId);
|
| ASSERT_NO_FATAL_FAILURE(client->PauseDownload(id));
|
|
|
| client->SetDelegate(nullptr);
|
| @@ -87,9 +117,65 @@ TEST_F(BackgroundFetchClientTest, ResumeDownloadTest) {
|
| FakeBackgroundFetchDelegate delegate(kRegistrationId);
|
| client->SetDelegate(&delegate);
|
|
|
| - offline_items_collection::ContentId id(kNamespace, kRegistrationId);
|
| + ContentId id(kNamespace, kRegistrationId);
|
| ASSERT_NO_FATAL_FAILURE(client->ResumeDownload(id));
|
|
|
| client->SetDelegate(nullptr);
|
| ASSERT_NO_FATAL_FAILURE(client->ResumeDownload(id));
|
| }
|
| +
|
| +TEST_F(BackgroundFetchClientTest, AddObserverImmediateNotificationTest) {
|
| + BackgroundFetchClientImpl* client = static_cast<BackgroundFetchClientImpl*>(
|
| + profile_.GetBackgroundFetchClient());
|
| + FakeBackgroundFetchDelegate delegate(kRegistrationId);
|
| + client->SetDelegate(&delegate);
|
| +
|
| + // The delegate is already available, so AddObserver should trigger an
|
| + // immediate OnItemsAvailable call.
|
| + FakeBackgroundFetchObserver observer;
|
| + client->AddObserver(&observer);
|
| + EXPECT_EQ(client, observer.provider_);
|
| +}
|
| +
|
| +TEST_F(BackgroundFetchClientTest, AddObserverDelayedNotificationTest) {
|
| + BackgroundFetchClientImpl* client = static_cast<BackgroundFetchClientImpl*>(
|
| + profile_.GetBackgroundFetchClient());
|
| +
|
| + // The observer should not get a OnItemsAvailable call since there is no
|
| + // connected delegate.
|
| + FakeBackgroundFetchObserver observer;
|
| + client->AddObserver(&observer);
|
| + EXPECT_EQ(nullptr, observer.provider_);
|
| +
|
| + // Adding a delegate should trigger the OnItemsAvailable call.
|
| + FakeBackgroundFetchDelegate delegate(kRegistrationId);
|
| + client->SetDelegate(&delegate);
|
| + EXPECT_EQ(client, observer.provider_);
|
| +}
|
| +
|
| +TEST_F(BackgroundFetchClientTest, AddDownloadTest) {
|
| + BackgroundFetchClientImpl* client = static_cast<BackgroundFetchClientImpl*>(
|
| + profile_.GetBackgroundFetchClient());
|
| + FakeBackgroundFetchDelegate delegate(kRegistrationId);
|
| + client->SetDelegate(&delegate);
|
| +
|
| + FakeBackgroundFetchObserver observer;
|
| + client->AddObserver(&observer);
|
| +
|
| + client->AddDownload(GURL("http://www.example.com"), kRegistrationId,
|
| + "download_title", 1024);
|
| + ASSERT_EQ(1U, observer.added_items_.size());
|
| + OfflineItem item = observer.added_items_[0];
|
| + EXPECT_EQ("download_title", item.title);
|
| + EXPECT_EQ(1024, item.total_size_bytes);
|
| + EXPECT_FALSE(item.is_openable);
|
| + EXPECT_EQ(GURL("http://www.example.com"), item.page_url);
|
| + EXPECT_FALSE(item.is_off_the_record);
|
| + EXPECT_TRUE(item.is_transient);
|
| + EXPECT_EQ(0, item.percent_completed);
|
| + EXPECT_EQ(offline_items_collection::OfflineItemState::IN_PROGRESS,
|
| + item.state);
|
| + EXPECT_TRUE(item.is_resumable);
|
| + EXPECT_EQ(kRegistrationId, item.id.id);
|
| + EXPECT_EQ(kNamespace, item.id.name_space);
|
| +}
|
|
|