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

Unified Diff: components/offline_pages/background/request_coordinator_unittest.cc

Issue 2104393002: Adds UMA for PrerenderingOffliner request processing result status. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clarifies and fixes behavior wrt Offliner::Cancel() not calling the callback Created 4 years, 5 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/background/request_coordinator_unittest.cc
diff --git a/components/offline_pages/background/request_coordinator_unittest.cc b/components/offline_pages/background/request_coordinator_unittest.cc
index 0204b1b8cd932c56d7800680a08181e0af37b52a..34f29f99bb5f57153ee7a4e718ccdd69e9b4e3b8 100644
--- a/components/offline_pages/background/request_coordinator_unittest.cc
+++ b/components/offline_pages/background/request_coordinator_unittest.cc
@@ -68,8 +68,10 @@ class SchedulerStub : public Scheduler {
class OfflinerStub : public Offliner {
public:
- OfflinerStub() : request_(kRequestId, kUrl, kClientId, base::Time::Now()),
- enable_callback_(false) {}
+ OfflinerStub()
+ : request_(kRequestId, kUrl, kClientId, base::Time::Now()),
+ enable_callback_(false),
+ cancel_called_(false) {}
bool LoadAndSave(const SavePageRequest& request,
const CompletionCallback& callback) override {
@@ -84,28 +86,23 @@ class OfflinerStub : public Offliner {
return true;
}
- // Clears the currently processing request, if any. Must have called
- // LoadAndSave first to set the callback and request.
- // Clears the currently processing request, if any.
- void Cancel() override {
- base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE,
- base::Bind(callback_, request_, Offliner::RequestStatus::CANCELED));
- }
+ void Cancel() override { cancel_called_ = true; }
void enable_callback(bool enable) {
enable_callback_ = enable;
}
+ bool cancel_called() { return cancel_called_; }
+
private:
CompletionCallback callback_;
SavePageRequest request_;
bool enable_callback_;
+ bool cancel_called_;
};
class OfflinerFactoryStub : public OfflinerFactory {
public:
-
OfflinerFactoryStub() : offliner_(nullptr) {}
Offliner* GetOffliner(const OfflinerPolicy* policy) override {
@@ -185,6 +182,8 @@ class RequestCoordinatorTest
return coordinator_->last_offlining_status_;
}
+ bool OfflinerWasCanceled() const { return offliner_->cancel_called(); }
+
private:
RequestQueue::GetRequestsResult last_get_requests_result_;
std::vector<SavePageRequest> last_requests_;
@@ -356,7 +355,8 @@ TEST_F(RequestCoordinatorTest, OfflinerDoneRequestFailed) {
// Call the OfflinerDoneCallback to simulate the request failed, wait
// for callbacks.
EnableOfflinerCallback(true);
- SendOfflinerDoneCallback(request, Offliner::RequestStatus::FAILED);
+ SendOfflinerDoneCallback(request,
+ Offliner::RequestStatus::PRERENDERING_FAILED);
PumpLoop();
// Verify the request is not removed from the queue, and wait for callbacks.
@@ -397,8 +397,12 @@ TEST_F(RequestCoordinatorTest, StartProcessingThenStopProcessingImmediately) {
PumpLoop();
// OfflinerDoneCallback will not end up getting called with status SAVED,
- // Since we cancelled the event before it called offliner_->LoadAndSave().
- EXPECT_NE(Offliner::RequestStatus::SAVED, last_offlining_status());
+ // since we cancelled the event before it called offliner_->LoadAndSave().
+ EXPECT_EQ(Offliner::RequestStatus::REQUEST_COORDINATOR_CANCELED,
+ last_offlining_status());
+
+ // Since offliner was not started, it will not have seen cancel call.
+ EXPECT_FALSE(OfflinerWasCanceled());
}
// This tests a StopProcessing call after the prerenderer has been started.
@@ -433,8 +437,12 @@ TEST_F(RequestCoordinatorTest, StartProcessingThenStopProcessingLater) {
PumpLoop();
// OfflinerDoneCallback will not end up getting called with status SAVED,
- // Since we cancelled the event before it called offliner_->LoadAndSave().
- EXPECT_EQ(Offliner::RequestStatus::CANCELED, last_offlining_status());
+ // since we cancelled the event before the LoadAndSave completed.
+ EXPECT_EQ(Offliner::RequestStatus::REQUEST_COORDINATOR_CANCELED,
+ last_offlining_status());
+
+ // Since offliner was started, it will have seen cancel call.
+ EXPECT_TRUE(OfflinerWasCanceled());
}
TEST_F(RequestCoordinatorTest, PrerendererTimeout) {
@@ -477,8 +485,9 @@ TEST_F(RequestCoordinatorTest, PrerendererTimeout) {
WaitForCallback();
PumpLoop();
- // Now trying to start processing on another request should return false.
- EXPECT_EQ(Offliner::RequestStatus::CANCELED, last_offlining_status());
+ EXPECT_TRUE(OfflinerWasCanceled());
+ EXPECT_EQ(Offliner::RequestStatus::REQUEST_COORDINATOR_CANCELED,
+ last_offlining_status());
}
} // namespace offline_pages

Powered by Google App Engine
This is Rietveld 408576698