1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/ntp_snippets/offline_pages/offline_pages_test_utils.h"
6 
7 #include <iterator>
8 #include <string>
9 #include <utility>
10 #include <vector>
11 
12 #include "base/guid.h"
13 #include "base/strings/string_number_conversions.h"
14 #include "base/strings/utf_string_conversions.h"
15 
16 using offline_pages::ClientId;
17 using offline_pages::MultipleOfflinePageItemCallback;
18 using offline_pages::OfflinePageItem;
19 using offline_pages::PageCriteria;
20 using offline_pages::StubOfflinePageModel;
21 
22 namespace ntp_snippets {
23 namespace test {
24 
25 FakeOfflinePageModel::FakeOfflinePageModel() = default;
26 
27 FakeOfflinePageModel::~FakeOfflinePageModel() = default;
28 
GetAllPages(MultipleOfflinePageItemCallback callback)29 void FakeOfflinePageModel::GetAllPages(
30     MultipleOfflinePageItemCallback callback) {
31   std::move(callback).Run(items_);
32 }
33 
GetPagesWithCriteria(const PageCriteria & criteria,MultipleOfflinePageItemCallback callback)34 void FakeOfflinePageModel::GetPagesWithCriteria(
35     const PageCriteria& criteria,
36     MultipleOfflinePageItemCallback callback) {
37   MultipleOfflinePageItemResult filtered_result;
38   for (auto& item : items_) {
39     if (offline_pages::MeetsCriteria(criteria, item))
40       filtered_result.emplace_back(item);
41   }
42   std::move(callback).Run(filtered_result);
43 }
44 
items()45 const std::vector<OfflinePageItem>& FakeOfflinePageModel::items() {
46   return items_;
47 }
48 
mutable_items()49 std::vector<OfflinePageItem>* FakeOfflinePageModel::mutable_items() {
50   return &items_;
51 }
52 
CreateDummyOfflinePageItem(int id,const offline_pages::ClientId & client_id)53 OfflinePageItem CreateDummyOfflinePageItem(
54     int id,
55     const offline_pages::ClientId& client_id) {
56   std::string id_string = base::NumberToString(id);
57   return OfflinePageItem(
58       GURL("http://dummy.com/" + id_string), id, client_id,
59       base::FilePath::FromUTF8Unsafe("some/folder/test" + id_string + ".mhtml"),
60       0, base::Time::Now());
61 }
62 
CreateDummyOfflinePageItem(int id,const std::string & name_space)63 OfflinePageItem CreateDummyOfflinePageItem(int id,
64                                            const std::string& name_space) {
65   return CreateDummyOfflinePageItem(id,
66                                     ClientId(name_space, base::GenerateGUID()));
67 }
68 
CaptureDismissedSuggestions(std::vector<ContentSuggestion> * captured_suggestions,std::vector<ContentSuggestion> dismissed_suggestions)69 void CaptureDismissedSuggestions(
70     std::vector<ContentSuggestion>* captured_suggestions,
71     std::vector<ContentSuggestion> dismissed_suggestions) {
72   std::move(dismissed_suggestions.begin(), dismissed_suggestions.end(),
73             std::back_inserter(*captured_suggestions));
74 }
75 
76 }  // namespace test
77 }  // namespace ntp_snippets
78