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

Side by Side Diff: chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc

Issue 1961083002: Updates to PrerenderingOffliner and PrerenderingLoader interfaces to push PrerenderManager knowledge (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed some petewil feedback. Created 4 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
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 "chrome/browser/android/offline_pages/prerendering_offliner.h"
6
7 #include <memory>
8
9 #include "base/bind.h"
10 #include "chrome/browser/android/offline_pages/prerendering_loader.h"
11 #include "components/offline_pages/background/offliner.h"
12 #include "components/offline_pages/background/save_page_request.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace offline_pages {
16
17 // Mock Loader for testing the Offliner calls.
18 class MockPrerenderingLoader : public PrerenderingLoader {
fgorski 2016/05/09 20:38:32 can you put this in the anonymous namespace too?
dougarnett 2016/05/09 22:25:11 Done.
19 public:
20 explicit MockPrerenderingLoader(content::BrowserContext* browser_context)
21 : PrerenderingLoader(browser_context), mock_loading_(false) {}
22 ~MockPrerenderingLoader() override {}
23
24 bool LoadPage(const GURL& url, const LoadPageCallback& callback) override {
25 mock_loading_ = true;
26 return mock_loading_;
27 }
28
29 void StopLoading() override { mock_loading_ = false; }
30
31 bool mock_loading() const { return mock_loading_; }
32
33 private:
34 bool mock_loading_;
35
36 DISALLOW_COPY_AND_ASSIGN(MockPrerenderingLoader);
37 };
38
39 // Test subclass that injects loader.
40 class TestPrerenderingOffliner : public PrerenderingOffliner {
fgorski 2016/05/09 20:38:32 ditto for namespace.
fgorski 2016/05/09 20:38:32 When you have SetLoaderForTesting I don't think th
dougarnett 2016/05/09 22:25:11 Done.
dougarnett 2016/05/09 22:25:11 Done.
41 public:
42 TestPrerenderingOffliner(content::BrowserContext* browser_context,
43 const OfflinerPolicy* policy,
44 OfflinePageModel* offline_page_model,
45 PrerenderingLoader* loader)
46 : PrerenderingOffliner(browser_context,
47 policy,
48 offline_page_model,
49 loader) {}
50
51 private:
52 DISALLOW_COPY_AND_ASSIGN(TestPrerenderingOffliner);
53 };
54
55 namespace {
56 const int64_t kRequestId = 7;
57 const GURL kHttpUrl("http://tunafish.com");
58 const GURL kFileUrl("file://sailfish.png");
59 const ClientId kClientId("AsyncLoading", "88");
60 } // namespace
61
62 class PrerenderingOfflinerTest : public testing::Test {
63 public:
64 PrerenderingOfflinerTest();
65 ~PrerenderingOfflinerTest() override;
66
67 void SetUp() override;
68
69 PrerenderingOffliner* offliner() const { return offliner_.get(); }
70 Offliner::CompletionCallback callback() {
71 return base::Bind(&PrerenderingOfflinerTest::OnCompletion,
72 base::Unretained(this));
73 }
74
75 bool loading() const { return loader_->mock_loading(); }
76 Offliner::CompletionStatus completion_status() { return completion_status_; }
77
78 private:
79 void OnCompletion(const SavePageRequest& request,
80 Offliner::CompletionStatus status);
81
82 std::unique_ptr<PrerenderingOffliner> offliner_;
83 std::unique_ptr<MockPrerenderingLoader> loader_;
fgorski 2016/05/09 20:38:32 this frees the loader memory or the second time. P
dougarnett 2016/05/09 22:25:11 reworked
84 Offliner::CompletionStatus completion_status_;
85
86 DISALLOW_COPY_AND_ASSIGN(PrerenderingOfflinerTest);
87 };
88
89 PrerenderingOfflinerTest::PrerenderingOfflinerTest() {}
90
91 PrerenderingOfflinerTest::~PrerenderingOfflinerTest() {}
92
93 void PrerenderingOfflinerTest::SetUp() {
94 loader_.reset(new MockPrerenderingLoader(nullptr));
fgorski 2016/05/09 20:38:32 simply create a unique ptr and move it into the of
dougarnett 2016/05/09 22:25:11 Done.
95 offliner_.reset(
96 new TestPrerenderingOffliner(nullptr, nullptr, nullptr, loader_.get()));
97 }
98
99 void PrerenderingOfflinerTest::OnCompletion(const SavePageRequest& request,
100 Offliner::CompletionStatus status) {
101 completion_status_ = status;
102 }
103
104 // Tests initiate loading.
105 TEST_F(PrerenderingOfflinerTest, LoadAndSaveBadUrl) {
106 base::Time creation_time = base::Time::Now();
107 SavePageRequest request(kRequestId, kFileUrl, kClientId, creation_time);
108 EXPECT_FALSE(offliner()->LoadAndSave(request, callback()));
109 EXPECT_FALSE(loading());
110 }
111
112 // Tests initiate loading.
113 TEST_F(PrerenderingOfflinerTest, LoadAndSaveStartsLoading) {
114 base::Time creation_time = base::Time::Now();
115 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time);
116 EXPECT_TRUE(offliner()->LoadAndSave(request, callback()));
117 EXPECT_TRUE(loading());
118 }
119
120 // Tests cancels loading.
121 TEST_F(PrerenderingOfflinerTest, CancelLoading) {
122 base::Time creation_time = base::Time::Now();
123 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time);
124 EXPECT_TRUE(offliner()->LoadAndSave(request, callback()));
125 EXPECT_TRUE(loading());
126
127 offliner()->Cancel();
128 EXPECT_FALSE(loading());
129 }
130
131 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698