Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(433)

Unified Diff: components/offline_pages/downloads/download_notifying_observer_unittest.cc

Issue 2260963003: [Offline pages] Enabling notifications for pages saved later (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing missed TODO Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/offline_pages/downloads/download_notifying_observer_unittest.cc
diff --git a/components/offline_pages/downloads/download_notifying_observer_unittest.cc b/components/offline_pages/downloads/download_notifying_observer_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3606f57a5cd0110789784ec2cb7aaf5ffe39e62d
--- /dev/null
+++ b/components/offline_pages/downloads/download_notifying_observer_unittest.cc
@@ -0,0 +1,231 @@
+// Copyright 2016 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 "components/offline_pages/downloads/download_notifying_observer.h"
+
+#include "base/memory/ptr_util.h"
+#include "components/offline_pages/background/save_page_request.h"
+#include "components/offline_pages/client_namespace_constants.h"
+#include "components/offline_pages/downloads/offline_page_download_notifier.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace offline_pages {
+
+namespace {
+static const int64_t kTestOfflineId = 42L;
+static const char kTestUrl[] = "http://foo.com/bar";
+static const char kTestGuid[] = "cccccccc-cccc-4ccc-0ccc-ccccccccccc1";
+static const ClientId kTestClientId(kDownloadNamespace, kTestGuid);
+static const base::Time kTestCreationTime = base::Time::Now();
+static const bool kTestUserRequested = true;
+
+enum class LastNotificationType {
+ NONE,
+ DOWNLOAD_SUCCESSFUL,
+ DOWNLOAD_FAILED,
+ DOWNLOAD_PROGRESS,
+ DOWNLOAD_PAUSED,
+ DOWNLOAD_INTERRUPTED,
+ DOWNLOAD_CANCELED,
+};
+
+class TestNotifier : public OfflinePageDownloadNotifier {
+ public:
+ TestNotifier();
+ ~TestNotifier() override;
+
+ // OfflinePageDownloadNotifier implementation:
+ void NotifyDownloadSuccessful(const DownloadUIItem& item) override;
+ void NotifyDownloadFailed(const DownloadUIItem& item) override;
+ void NotifyDownloadProgress(const DownloadUIItem& item) override;
+ void NotifyDownloadPaused(const DownloadUIItem& item) override;
+ void NotifyDownloadInterrupted(const DownloadUIItem& item) override;
+ void NotifyDownloadCanceled(const DownloadUIItem& item) override;
+
+ void Reset();
+
+ LastNotificationType last_notification_type() const {
+ return last_notification_type_;
+ }
+
+ DownloadUIItem* download_item() const { return download_item_.get(); }
+
+ private:
+ LastNotificationType last_notification_type_;
+ std::unique_ptr<DownloadUIItem> download_item_;
+};
+
+TestNotifier::TestNotifier()
+ : last_notification_type_(LastNotificationType::NONE) {}
+
+TestNotifier::~TestNotifier() {}
+
+void TestNotifier::NotifyDownloadSuccessful(const DownloadUIItem& item) {
+ last_notification_type_ = LastNotificationType::DOWNLOAD_SUCCESSFUL;
+ download_item_.reset(new DownloadUIItem(item));
+}
+
+void TestNotifier::NotifyDownloadFailed(const DownloadUIItem& item) {
+ last_notification_type_ = LastNotificationType::DOWNLOAD_FAILED;
+ download_item_.reset(new DownloadUIItem(item));
+}
+
+void TestNotifier::NotifyDownloadProgress(const DownloadUIItem& item) {
+ last_notification_type_ = LastNotificationType::DOWNLOAD_PROGRESS;
+ download_item_.reset(new DownloadUIItem(item));
+}
+
+void TestNotifier::NotifyDownloadPaused(const DownloadUIItem& item) {
+ last_notification_type_ = LastNotificationType::DOWNLOAD_PAUSED;
+ download_item_.reset(new DownloadUIItem(item));
+}
+
+void TestNotifier::NotifyDownloadInterrupted(const DownloadUIItem& item) {
+ last_notification_type_ = LastNotificationType::DOWNLOAD_INTERRUPTED;
+ download_item_.reset(new DownloadUIItem(item));
+}
+
+void TestNotifier::NotifyDownloadCanceled(const DownloadUIItem& item) {
+ last_notification_type_ = LastNotificationType::DOWNLOAD_CANCELED;
+ download_item_.reset(new DownloadUIItem(item));
+}
+
+void TestNotifier::Reset() {
+ last_notification_type_ = LastNotificationType::NONE;
+ download_item_.reset(nullptr);
+}
+
+} // namespace
+
+class DownloadNotifyingObserverTest : public testing::Test {
+ public:
+ DownloadNotifyingObserverTest();
+ ~DownloadNotifyingObserverTest() override;
+
+ // testing::Test implementation:
+ void SetUp() override;
+
+ TestNotifier* notifier() const { return notifier_; }
+ DownloadNotifyingObserver* observer() { return observer_.get(); }
+
+ private:
+ TestNotifier* notifier_;
+ std::unique_ptr<DownloadNotifyingObserver> observer_;
+};
+
+DownloadNotifyingObserverTest::DownloadNotifyingObserverTest() {}
+
+DownloadNotifyingObserverTest::~DownloadNotifyingObserverTest() {}
+
+void DownloadNotifyingObserverTest::SetUp() {
+ std::unique_ptr<TestNotifier> notifier(new TestNotifier);
+ notifier_ = notifier.get();
+ observer_.reset(new DownloadNotifyingObserver(std::move(notifier)));
+}
+
+TEST_F(DownloadNotifyingObserverTest, OnAdded) {
+ SavePageRequest request(kTestOfflineId, GURL(kTestUrl), kTestClientId,
+ kTestCreationTime, kTestUserRequested);
+ observer()->OnAdded(request);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_PROGRESS,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+}
+
+TEST_F(DownloadNotifyingObserverTest, OnChangedToPaused) {
+ SavePageRequest request(kTestOfflineId, GURL(kTestUrl), kTestClientId,
+ kTestCreationTime, kTestUserRequested);
+ request.set_request_state(SavePageRequest::RequestState::PAUSED);
+ observer()->OnChanged(request);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_PAUSED,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+}
+
+TEST_F(DownloadNotifyingObserverTest, OnChangedToAvailable) {
+ SavePageRequest request(kTestOfflineId, GURL(kTestUrl), kTestClientId,
+ kTestCreationTime, kTestUserRequested);
+ request.set_request_state(SavePageRequest::RequestState::AVAILABLE);
+ observer()->OnChanged(request);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_PROGRESS,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+}
+
+TEST_F(DownloadNotifyingObserverTest, OnCompletedSuccess) {
+ SavePageRequest request(kTestOfflineId, GURL(kTestUrl), kTestClientId,
+ kTestCreationTime, kTestUserRequested);
+ observer()->OnCompleted(request, RequestNotifier::SavePageStatus::SUCCESS);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_SUCCESSFUL,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+}
+
+TEST_F(DownloadNotifyingObserverTest, OnCompletedCanceled) {
+ SavePageRequest request(kTestOfflineId, GURL(kTestUrl), kTestClientId,
+ kTestCreationTime, kTestUserRequested);
+ observer()->OnCompleted(request, RequestNotifier::SavePageStatus::REMOVED);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_CANCELED,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+}
+
+TEST_F(DownloadNotifyingObserverTest, OnCompletedFailure) {
+ SavePageRequest request(kTestOfflineId, GURL(kTestUrl), kTestClientId,
+ kTestCreationTime, kTestUserRequested);
+ observer()->OnCompleted(request,
+ RequestNotifier::SavePageStatus::PRERENDER_FAILURE);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_FAILED,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+
+ notifier()->Reset();
+ observer()->OnCompleted(request,
+ RequestNotifier::SavePageStatus::FOREGROUND_CANCELED);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_FAILED,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+
+ notifier()->Reset();
+ observer()->OnCompleted(request,
+ RequestNotifier::SavePageStatus::SAVE_FAILED);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_FAILED,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+
+ notifier()->Reset();
+ observer()->OnCompleted(request, RequestNotifier::SavePageStatus::EXPIRED);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_FAILED,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+
+ notifier()->Reset();
+ observer()->OnCompleted(
+ request, RequestNotifier::SavePageStatus::RETRY_COUNT_EXCEEDED);
+ EXPECT_EQ(LastNotificationType::DOWNLOAD_FAILED,
+ notifier()->last_notification_type());
+ EXPECT_EQ(kTestGuid, notifier()->download_item()->guid);
+ EXPECT_EQ(GURL(kTestUrl), notifier()->download_item()->url);
+ EXPECT_EQ(kTestCreationTime, notifier()->download_item()->start_time);
+}
+
+} // namespace offline_pages

Powered by Google App Engine
This is Rietveld 408576698