| Index: chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc
|
| diff --git a/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc b/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc
|
| deleted file mode 100644
|
| index fef30f308a013ef76248f8a8901d51f955a3e680..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc
|
| +++ /dev/null
|
| @@ -1,276 +0,0 @@
|
| -// Copyright 2015 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/md_downloads/downloads_list_tracker.h"
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/files/file_path.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/stl_util.h"
|
| -#include "base/time/time.h"
|
| -#include "chrome/browser/download/download_item_model.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "content/public/test/mock_download_item.h"
|
| -#include "content/public/test/mock_download_manager.h"
|
| -#include "content/public/test/test_browser_thread.h"
|
| -#include "content/public/test/test_web_ui.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using content::DownloadItem;
|
| -using content::MockDownloadItem;
|
| -using DownloadVector = std::vector<DownloadItem*>;
|
| -using testing::_;
|
| -using testing::Return;
|
| -
|
| -namespace {
|
| -
|
| -uint64 GetId(const base::Value* value) {
|
| - const base::DictionaryValue* dict;
|
| - CHECK(value->GetAsDictionary(&dict));
|
| -
|
| - int id;
|
| - CHECK(dict->GetInteger("id", &id));
|
| - CHECK_GE(id, 0);
|
| - return static_cast<uint64>(id);
|
| -}
|
| -
|
| -std::vector<uint64> GetIds(const base::Value* value) {
|
| - CHECK(value);
|
| -
|
| - std::vector<uint64> ids;
|
| -
|
| - if (value->GetType() == base::Value::TYPE_LIST) {
|
| - const base::ListValue* list;
|
| - value->GetAsList(&list);
|
| -
|
| - for (auto* list_item : *list)
|
| - ids.push_back(GetId(list_item));
|
| - } else {
|
| - ids.push_back(GetId(value));
|
| - }
|
| -
|
| - return ids;
|
| -}
|
| -
|
| -int GetIndex(const base::Value* value) {
|
| - CHECK(value);
|
| - int index;
|
| - CHECK(value->GetAsInteger(&index));
|
| - return index;
|
| -}
|
| -
|
| -bool ShouldShowItem(const DownloadItem& item) {
|
| - DownloadItemModel model(const_cast<DownloadItem*>(&item));
|
| - return model.ShouldShowInShelf();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// A test version of DownloadsListTracker.
|
| -class TestDownloadsListTracker : public DownloadsListTracker {
|
| - public:
|
| - TestDownloadsListTracker(content::DownloadManager* manager,
|
| - content::WebUI* web_ui)
|
| - : DownloadsListTracker(manager, web_ui, base::Bind(&ShouldShowItem)) {}
|
| - ~TestDownloadsListTracker() override {}
|
| -
|
| - using DownloadsListTracker::GetItemForTesting;
|
| -
|
| - protected:
|
| - scoped_ptr<base::DictionaryValue> CreateDownloadItemValue(
|
| - content::DownloadItem* item) const override {
|
| - scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
|
| - CHECK_LE(item->GetId(), static_cast<uint64>(INT_MAX));
|
| - dict->SetInteger("id", item->GetId());
|
| - return dict.Pass();
|
| - }
|
| -};
|
| -
|
| -// A fixture to test DownloadsListTracker.
|
| -class DownloadsListTrackerTest : public testing::Test {
|
| - public:
|
| - DownloadsListTrackerTest()
|
| - : ui_thread_(content::BrowserThread::UI, &message_loop_) {}
|
| - ~DownloadsListTrackerTest() override {
|
| - for (auto* mock_item : mock_items_)
|
| - testing::Mock::VerifyAndClear(mock_item);
|
| - STLDeleteElements(&mock_items_);
|
| - }
|
| -
|
| - // testing::Test:
|
| - void SetUp() override {
|
| - ON_CALL(manager_, GetBrowserContext()).WillByDefault(Return(&profile_));
|
| - ON_CALL(manager_, GetAllDownloads(_)).WillByDefault(
|
| - testing::Invoke(this, &DownloadsListTrackerTest::GetAllDownloads));
|
| - }
|
| -
|
| - MockDownloadItem* CreateMock(uint64 id, const base::Time& started) {
|
| - MockDownloadItem* new_item = new testing::NiceMock<MockDownloadItem>();
|
| - mock_items_.push_back(new_item);
|
| -
|
| - ON_CALL(*new_item, GetId()).WillByDefault(Return(id));
|
| - ON_CALL(*new_item, GetStartTime()).WillByDefault(Return(started));
|
| -
|
| - return new_item;
|
| - }
|
| -
|
| - MockDownloadItem* CreateNextItem() {
|
| - return CreateMock(mock_items_.size(), base::Time::UnixEpoch() +
|
| - base::TimeDelta::FromHours(mock_items_.size()));
|
| - }
|
| -
|
| - void CreateTracker() {
|
| - tracker_.reset(new TestDownloadsListTracker(manager(), web_ui()));
|
| - }
|
| -
|
| - content::DownloadManager* manager() { return &manager_; }
|
| - content::TestWebUI* web_ui() { return &web_ui_; }
|
| - TestDownloadsListTracker* tracker() { return tracker_.get(); }
|
| -
|
| - private:
|
| - void GetAllDownloads(DownloadVector* result) {
|
| - for (auto* mock_item : mock_items_)
|
| - result->push_back(mock_item);
|
| - }
|
| -
|
| - // NOTE: The initialization order of these members matters.
|
| - base::MessageLoopForUI message_loop_;
|
| - content::TestBrowserThread ui_thread_;
|
| - TestingProfile profile_;
|
| -
|
| - testing::NiceMock<content::MockDownloadManager> manager_;
|
| - content::TestWebUI web_ui_;
|
| - scoped_ptr<TestDownloadsListTracker> tracker_;
|
| -
|
| - std::vector<MockDownloadItem*> mock_items_;
|
| -};
|
| -
|
| -TEST_F(DownloadsListTrackerTest, SetSearchTerms) {
|
| - CreateTracker();
|
| -
|
| - const base::ListValue empty_terms;
|
| - EXPECT_FALSE(tracker()->SetSearchTerms(empty_terms));
|
| -
|
| - base::ListValue search_terms;
|
| - search_terms.AppendString("search");
|
| - EXPECT_TRUE(tracker()->SetSearchTerms(search_terms));
|
| -
|
| - EXPECT_FALSE(tracker()->SetSearchTerms(search_terms));
|
| -
|
| - EXPECT_TRUE(tracker()->SetSearchTerms(empty_terms));
|
| -
|
| - // Notifying the page is left up to the handler in this case.
|
| - EXPECT_TRUE(web_ui()->call_data().empty());
|
| -}
|
| -
|
| -TEST_F(DownloadsListTrackerTest, StartCallsInsertItems) {
|
| - DownloadItem* first_item = CreateNextItem();
|
| -
|
| - CreateTracker();
|
| - ASSERT_TRUE(tracker()->GetItemForTesting(0));
|
| - EXPECT_TRUE(web_ui()->call_data().empty());
|
| -
|
| - tracker()->Start();
|
| - ASSERT_FALSE(web_ui()->call_data().empty());
|
| -
|
| - EXPECT_EQ("downloads.Manager.insertItems",
|
| - web_ui()->call_data()[0]->function_name());
|
| - EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1()));
|
| -
|
| - std::vector<uint64> ids = GetIds(web_ui()->call_data()[0]->arg2());
|
| - ASSERT_FALSE(ids.empty());
|
| - EXPECT_EQ(first_item->GetId(), ids[0]);
|
| -}
|
| -
|
| -// The page is in a loading state until it gets an insertItems call. Ensure that
|
| -// happens even without downloads.
|
| -TEST_F(DownloadsListTrackerTest, EmptyGetAllItemsStillCallsInsertItems) {
|
| - CreateTracker();
|
| -
|
| - ASSERT_FALSE(tracker()->GetItemForTesting(0));
|
| - ASSERT_TRUE(web_ui()->call_data().empty());
|
| -
|
| - tracker()->Start();
|
| -
|
| - ASSERT_FALSE(web_ui()->call_data().empty());
|
| - EXPECT_EQ("downloads.Manager.insertItems",
|
| - web_ui()->call_data()[0]->function_name());
|
| - ASSERT_TRUE(web_ui()->call_data()[0]->arg2());
|
| - EXPECT_TRUE(GetIds(web_ui()->call_data()[0]->arg2()).empty());
|
| -}
|
| -
|
| -TEST_F(DownloadsListTrackerTest, OnDownloadCreatedCallsInsertItems) {
|
| - CreateTracker();
|
| - tracker()->Start();
|
| - web_ui()->ClearTrackedCalls();
|
| -
|
| - ASSERT_FALSE(tracker()->GetItemForTesting(0));
|
| - DownloadItem* first_item = CreateNextItem();
|
| - tracker()->OnDownloadCreated(manager(), first_item);
|
| -
|
| - ASSERT_FALSE(web_ui()->call_data().empty());
|
| - EXPECT_EQ("downloads.Manager.insertItems",
|
| - web_ui()->call_data()[0]->function_name());
|
| - EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1()));
|
| -
|
| - std::vector<uint64> ids = GetIds(web_ui()->call_data()[0]->arg2());
|
| - ASSERT_FALSE(ids.empty());
|
| - EXPECT_EQ(first_item->GetId(), ids[0]);
|
| -}
|
| -
|
| -TEST_F(DownloadsListTrackerTest, OnDownloadRemovedCallsRemoveItem) {
|
| - DownloadItem* first_item = CreateNextItem();
|
| -
|
| - CreateTracker();
|
| - tracker()->Start();
|
| - web_ui()->ClearTrackedCalls();
|
| -
|
| - EXPECT_TRUE(tracker()->GetItemForTesting(0));
|
| - tracker()->OnDownloadRemoved(manager(), first_item);
|
| - EXPECT_FALSE(tracker()->GetItemForTesting(0));
|
| -
|
| - ASSERT_FALSE(web_ui()->call_data().empty());
|
| -
|
| - EXPECT_EQ("downloads.Manager.removeItem",
|
| - web_ui()->call_data()[0]->function_name());
|
| - EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1()));
|
| -}
|
| -
|
| -TEST_F(DownloadsListTrackerTest, OnDownloadUpdatedCallsRemoveItem) {
|
| - DownloadItem* first_item = CreateNextItem();
|
| -
|
| - CreateTracker();
|
| - tracker()->Start();
|
| - web_ui()->ClearTrackedCalls();
|
| -
|
| - EXPECT_TRUE(tracker()->GetItemForTesting(0));
|
| -
|
| - DownloadItemModel(first_item).SetShouldShowInShelf(false);
|
| - tracker()->OnDownloadUpdated(manager(), first_item);
|
| -
|
| - EXPECT_FALSE(tracker()->GetItemForTesting(0));
|
| -
|
| - ASSERT_FALSE(web_ui()->call_data().empty());
|
| -
|
| - EXPECT_EQ("downloads.Manager.removeItem",
|
| - web_ui()->call_data()[0]->function_name());
|
| - EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1()));
|
| -}
|
| -
|
| -TEST_F(DownloadsListTrackerTest, StartExcludesHiddenItems) {
|
| - DownloadItem* first_item = CreateNextItem();
|
| - DownloadItemModel(first_item).SetShouldShowInShelf(false);
|
| -
|
| - CreateTracker();
|
| - tracker()->Start();
|
| -
|
| - ASSERT_FALSE(web_ui()->call_data().empty());
|
| -
|
| - EXPECT_EQ("downloads.Manager.insertItems",
|
| - web_ui()->call_data()[0]->function_name());
|
| - EXPECT_TRUE(GetIds(web_ui()->call_data()[0]->arg2()).empty());
|
| -}
|
|
|