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

Unified Diff: chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc

Issue 2637563002: [Offline Pages] Snapshotting on timeout of last retry. (Closed)
Patch Set: rebasing and a cl format Created 3 years, 10 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: chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc
diff --git a/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc b/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc
index b9a3f70ce48c1cfcdd025149306d2d4bb4e012d2..05bb49926cc582dd73758f9098f5d48e470a847c 100644
--- a/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc
+++ b/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc
@@ -16,6 +16,7 @@
#include "chrome/test/base/testing_profile.h"
#include "components/content_settings/core/common/pref_names.h"
#include "components/offline_pages/core/background/offliner.h"
+#include "components/offline_pages/core/background/offliner_policy.h"
#include "components/offline_pages/core/background/save_page_request.h"
#include "components/offline_pages/core/stub_offline_page_model.h"
#include "components/prefs/pref_service.h"
@@ -39,7 +40,9 @@ class MockPrerenderingLoader : public PrerenderingLoader {
: PrerenderingLoader(browser_context),
can_prerender_(true),
mock_loading_(false),
- mock_loaded_(false) {}
+ mock_loaded_(false),
+ mock_is_lowbar_met_(false),
+ start_snapshot_called_(false) {}
~MockPrerenderingLoader() override {}
bool LoadPage(const GURL& url, const LoadPageCallback& callback) override {
@@ -55,6 +58,9 @@ class MockPrerenderingLoader : public PrerenderingLoader {
bool IsIdle() override { return !mock_loading_ && !mock_loaded_; }
bool IsLoaded() override { return mock_loaded_; }
+ bool IsLowbarMet() override { return mock_is_lowbar_met_; }
+
+ void StartSnapshot() override { start_snapshot_called_ = true; }
void CompleteLoadingAsFailed() {
DCHECK(mock_loading_);
@@ -89,11 +95,17 @@ class MockPrerenderingLoader : public PrerenderingLoader {
void DisablePrerendering() { can_prerender_ = false; }
const LoadPageCallback& load_page_callback() { return load_page_callback_; }
+ void set_is_lowbar_met(bool is_lowbar_met) {
+ mock_is_lowbar_met_ = is_lowbar_met;
+ }
+ bool start_snapshot_called() { return start_snapshot_called_; }
private:
bool can_prerender_;
bool mock_loading_;
bool mock_loaded_;
+ bool mock_is_lowbar_met_;
+ bool start_snapshot_called_;
LoadPageCallback load_page_callback_;
DISALLOW_COPY_AND_ASSIGN(MockPrerenderingLoader);
@@ -162,6 +174,7 @@ class PrerenderingOfflinerTest : public testing::Test {
MockOfflinePageModel* model() { return model_; }
bool completion_callback_called() { return completion_callback_called_; }
Offliner::RequestStatus request_status() { return request_status_; }
+ OfflinerPolicy* policy() { return policy_; }
private:
void OnCompletion(const SavePageRequest& request,
@@ -175,6 +188,7 @@ class PrerenderingOfflinerTest : public testing::Test {
MockOfflinePageModel* model_;
bool completion_callback_called_;
Offliner::RequestStatus request_status_;
+ OfflinerPolicy* policy_;
DISALLOW_COPY_AND_ASSIGN(PrerenderingOfflinerTest);
};
@@ -188,7 +202,8 @@ PrerenderingOfflinerTest::~PrerenderingOfflinerTest() {}
void PrerenderingOfflinerTest::SetUp() {
model_ = new MockOfflinePageModel();
- offliner_.reset(new PrerenderingOffliner(profile(), nullptr, model_));
+ policy_ = new OfflinerPolicy();
+ offliner_.reset(new PrerenderingOffliner(profile(), policy_, model_));
std::unique_ptr<MockPrerenderingLoader> mock_loader(
new MockPrerenderingLoader(nullptr));
loader_ = mock_loader.get();
@@ -399,4 +414,70 @@ TEST_F(PrerenderingOfflinerTest, ForegroundTransitionIgnoredOnHighEndDevice) {
EXPECT_FALSE(loader()->IsIdle());
}
+TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndCompletedTriesMet) {
+ offliner()->SetLowEndDeviceForTesting(false);
+
+ base::Time creation_time = base::Time::Now();
+ SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+ kUserRequested);
+ request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1);
+ EXPECT_TRUE(offliner()->LoadAndSave(request, callback()));
+ loader()->set_is_lowbar_met(true);
+ EXPECT_TRUE(offliner()->HandleTimeout(request));
+ EXPECT_TRUE(loader()->start_snapshot_called());
+}
+
+TEST_F(PrerenderingOfflinerTest,
+ HandleTimeoutWithLowbarAndCompletedTriesMetLowEndDevice) {
+ offliner()->SetLowEndDeviceForTesting(true);
+
+ base::Time creation_time = base::Time::Now();
+ SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+ kUserRequested);
+ request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1);
+ EXPECT_TRUE(offliner()->LoadAndSave(request, callback()));
+ loader()->set_is_lowbar_met(true);
+ EXPECT_TRUE(offliner()->HandleTimeout(request));
+ EXPECT_TRUE(loader()->start_snapshot_called());
+}
+
+TEST_F(PrerenderingOfflinerTest,
+ HandleTimeoutCompletedTriesMetWithoutLowbarMet) {
+ offliner()->SetLowEndDeviceForTesting(false);
+
+ base::Time creation_time = base::Time::Now();
+ SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+ kUserRequested);
+ request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1);
+ EXPECT_TRUE(offliner()->LoadAndSave(request, callback()));
+ loader()->set_is_lowbar_met(false);
+ EXPECT_FALSE(offliner()->HandleTimeout(request));
+ EXPECT_FALSE(loader()->start_snapshot_called());
+}
+
+TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndStartedTriesMet) {
+ offliner()->SetLowEndDeviceForTesting(false);
+
+ base::Time creation_time = base::Time::Now();
+ SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+ kUserRequested);
+ request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1);
+ EXPECT_TRUE(offliner()->LoadAndSave(request, callback()));
+ loader()->set_is_lowbar_met(true);
+ EXPECT_TRUE(offliner()->HandleTimeout(request));
+ EXPECT_TRUE(loader()->start_snapshot_called());
+}
+
+TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithOnlyLowbarMet) {
+ offliner()->SetLowEndDeviceForTesting(false);
+
+ base::Time creation_time = base::Time::Now();
+ SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
+ kUserRequested);
+ EXPECT_TRUE(offliner()->LoadAndSave(request, callback()));
+ loader()->set_is_lowbar_met(true);
+ EXPECT_FALSE(offliner()->HandleTimeout(request));
+ EXPECT_FALSE(loader()->start_snapshot_called());
+}
+
} // namespace offline_pages

Powered by Google App Engine
This is Rietveld 408576698