| 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 1aebeb4e8f89b1a823799d3e8c858a86e1dd594d..d338b3c03176ebd38f12b7d3582b71c3f9cdb24d 100644
|
| --- a/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc
|
| +++ b/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/bind.h"
|
| #include "base/run_loop.h"
|
| #include "base/sys_info.h"
|
| +#include "base/test/scoped_feature_list.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| #include "chrome/browser/android/offline_pages/prerendering_loader.h"
|
| #include "chrome/browser/net/prediction_options.h"
|
| @@ -18,8 +19,10 @@
|
| #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/offline_page_feature.h"
|
| #include "components/offline_pages/core/stub_offline_page_model.h"
|
| #include "components/prefs/pref_service.h"
|
| +#include "content/public/browser/mhtml_extra_parts.h"
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| #include "content/public/test/web_contents_tester.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -43,7 +46,7 @@ class MockPrerenderingLoader : public PrerenderingLoader {
|
| mock_loaded_(false),
|
| mock_is_lowbar_met_(false),
|
| start_snapshot_called_(false) {}
|
| - ~MockPrerenderingLoader() override {}
|
| + ~MockPrerenderingLoader() override { delete web_contents_; }
|
|
|
| bool LoadPage(const GURL& url,
|
| const LoadPageCallback& load_done_callback,
|
| @@ -79,11 +82,11 @@ class MockPrerenderingLoader : public PrerenderingLoader {
|
| DCHECK(mock_loading_);
|
| mock_loading_ = false;
|
| mock_loaded_ = true;
|
| + web_contents_ = content::WebContentsTester::CreateTestWebContents(
|
| + new TestingProfile(), NULL);
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(load_page_callback_, Offliner::RequestStatus::LOADED,
|
| - content::WebContentsTester::CreateTestWebContents(
|
| - new TestingProfile(), NULL)));
|
| + FROM_HERE, base::Bind(load_page_callback_,
|
| + Offliner::RequestStatus::LOADED, web_contents_));
|
| }
|
|
|
| void CompleteLoadingAsCanceled() {
|
| @@ -103,6 +106,8 @@ class MockPrerenderingLoader : public PrerenderingLoader {
|
| }
|
| bool start_snapshot_called() { return start_snapshot_called_; }
|
|
|
| + content::WebContents* web_contents() { return web_contents_; }
|
| +
|
| private:
|
| bool can_prerender_;
|
| bool mock_loading_;
|
| @@ -111,6 +116,7 @@ class MockPrerenderingLoader : public PrerenderingLoader {
|
| bool start_snapshot_called_;
|
| LoadPageCallback load_page_callback_;
|
| ProgressCallback progress_callback_;
|
| + content::WebContents* web_contents_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(MockPrerenderingLoader);
|
| };
|
| @@ -525,4 +531,57 @@ TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithOnlyLowbarMet) {
|
| EXPECT_FALSE(loader()->start_snapshot_called());
|
| }
|
|
|
| +TEST_F(PrerenderingOfflinerTest, SignalCollectionDisabled) {
|
| + // Ensure feature flag for Signal collection is off,
|
| + EXPECT_FALSE(offline_pages::IsOfflinePagesLoadSignalCollectingEnabled());
|
| +
|
| + base::Time creation_time = base::Time::Now();
|
| + SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
|
| + kUserRequested);
|
| + EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
|
| + progress_callback()));
|
| + EXPECT_FALSE(loader()->IsIdle());
|
| + EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status());
|
| +
|
| + loader()->CompleteLoadingAsLoaded();
|
| + PumpLoop();
|
| +
|
| + model()->CompleteSavingAsSuccess();
|
| + PumpLoop();
|
| + EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status());
|
| +
|
| + // No extra parts should be added if the flag is off.
|
| + content::MHTMLExtraParts* extra_parts =
|
| + content::MHTMLExtraParts::FromWebContents(loader()->web_contents());
|
| + EXPECT_EQ(extra_parts->size(), 0);
|
| +}
|
| +
|
| +TEST_F(PrerenderingOfflinerTest, SignalCollectionEnabled) {
|
| + // Ensure feature flag for signal collection is on.
|
| + base::test::ScopedFeatureList scoped_feature_list;
|
| + scoped_feature_list.InitAndEnableFeature(
|
| + kOfflinePagesLoadSignalCollectingFeature);
|
| + EXPECT_TRUE(IsOfflinePagesLoadSignalCollectingEnabled());
|
| +
|
| + base::Time creation_time = base::Time::Now();
|
| + SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time,
|
| + kUserRequested);
|
| + EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(),
|
| + progress_callback()));
|
| + EXPECT_FALSE(loader()->IsIdle());
|
| + EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status());
|
| +
|
| + loader()->CompleteLoadingAsLoaded();
|
| + PumpLoop();
|
| +
|
| + model()->CompleteSavingAsSuccess();
|
| + PumpLoop();
|
| + EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status());
|
| +
|
| + // One extra part should be added if the flag is on.
|
| + content::MHTMLExtraParts* extra_parts =
|
| + content::MHTMLExtraParts::FromWebContents(loader()->web_contents());
|
| + EXPECT_EQ(extra_parts->size(), 1);
|
| +}
|
| +
|
| } // namespace offline_pages
|
|
|