| Index: chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer_unittest.cc
|
| diff --git a/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer_unittest.cc
|
| index c9eb705d09b55a66fdbfe2c6543fc048b8d0428f..77292ee0329669856d298d4c1ac9ed8158ea9fe9 100644
|
| --- a/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer_unittest.cc
|
| +++ b/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer_unittest.cc
|
| @@ -4,24 +4,46 @@
|
|
|
| #include "chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.h"
|
|
|
| +#include <memory>
|
| +
|
| #include "base/memory/ptr_util.h"
|
| #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h"
|
| +#include "components/subresource_filter/content/browser/subresource_filter_observer_manager.h"
|
| +#include "components/subresource_filter/core/common/activation_decision.h"
|
| +#include "components/subresource_filter/core/common/activation_level.h"
|
| +#include "components/subresource_filter/core/common/activation_state.h"
|
| +#include "content/public/browser/navigation_handle.h"
|
| +#include "content/public/test/navigation_simulator.h"
|
| +#include "url/gurl.h"
|
|
|
| namespace {
|
| const char kDefaultTestUrl[] = "https://example.com/";
|
| +const char kDefaultTestUrlWithActivation[] = "https://example-activation.com/";
|
| } // namespace
|
|
|
| class SubresourceFilterMetricsObserverTest
|
| : public page_load_metrics::PageLoadMetricsObserverTestHarness {
|
| public:
|
| + SubresourceFilterMetricsObserverTest() {}
|
| + ~SubresourceFilterMetricsObserverTest() override {}
|
| +
|
| + void SetUp() override {
|
| + page_load_metrics::PageLoadMetricsObserverTestHarness::SetUp();
|
| + subresource_filter::SubresourceFilterObserverManager::CreateForWebContents(
|
| + web_contents());
|
| + observer_manager_ =
|
| + subresource_filter::SubresourceFilterObserverManager::FromWebContents(
|
| + web_contents());
|
| + }
|
| +
|
| void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override {
|
| tracker->AddObserver(base::MakeUnique<SubresourceFilterMetricsObserver>());
|
| }
|
|
|
| - bool AnyMetricsRecorded() {
|
| - return !histogram_tester()
|
| - .GetTotalCountsForPrefix("PageLoad.Clients.SubresourceFilter.")
|
| - .empty();
|
| + size_t TotalMetricsRecorded() {
|
| + return histogram_tester()
|
| + .GetTotalCountsForPrefix("PageLoad.Clients.SubresourceFilter.")
|
| + .size();
|
| }
|
|
|
| void InitializePageLoadTiming(
|
| @@ -44,11 +66,39 @@ class SubresourceFilterMetricsObserverTest
|
| base::TimeDelta::FromMilliseconds(1500);
|
| PopulateRequiredTimingFields(timing);
|
| }
|
| +
|
| + void SimulateNavigateAndCommit(const GURL& url) {
|
| + std::unique_ptr<content::NavigationSimulator> simulator =
|
| + content::NavigationSimulator::CreateRendererInitiated(url, main_rfh());
|
| + simulator->Start();
|
| + // Simulate an activation notification.
|
| + content::NavigationHandle* handle = simulator->GetNavigationHandle();
|
| + if (handle->GetURL() == kDefaultTestUrlWithActivation) {
|
| + observer_manager_->NotifyPageActivationComputed(
|
| + handle, subresource_filter::ActivationDecision::ACTIVATED,
|
| + subresource_filter::ActivationState(
|
| + subresource_filter::ActivationLevel::ENABLED));
|
| + } else {
|
| + observer_manager_->NotifyPageActivationComputed(
|
| + handle,
|
| + subresource_filter::ActivationDecision::ACTIVATION_CONDITIONS_NOT_MET,
|
| + subresource_filter::ActivationState(
|
| + subresource_filter::ActivationLevel::DISABLED));
|
| + }
|
| + simulator->Commit();
|
| + }
|
| +
|
| + private:
|
| + // Owned by the WebContents.
|
| + subresource_filter::SubresourceFilterObserverManager* observer_manager_ =
|
| + nullptr;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SubresourceFilterMetricsObserverTest);
|
| };
|
|
|
| TEST_F(SubresourceFilterMetricsObserverTest,
|
| NoMetricsForNonSubresourceFilteredNavigation) {
|
| - NavigateAndCommit(GURL(kDefaultTestUrl));
|
| + SimulateNavigateAndCommit(GURL(kDefaultTestUrl));
|
|
|
| page_load_metrics::mojom::PageLoadTiming timing;
|
| InitializePageLoadTiming(&timing);
|
| @@ -58,11 +108,16 @@ TEST_F(SubresourceFilterMetricsObserverTest,
|
| // metrics.
|
| NavigateToUntrackedUrl();
|
|
|
| - ASSERT_FALSE(AnyMetricsRecorded());
|
| + EXPECT_EQ(1u, TotalMetricsRecorded());
|
| + histogram_tester().ExpectBucketCount(
|
| + internal::kHistogramSubresourceFilterActivationDecision,
|
| + static_cast<int>(subresource_filter::ActivationDecision::
|
| + ACTIVATION_CONDITIONS_NOT_MET),
|
| + 1);
|
| }
|
|
|
| TEST_F(SubresourceFilterMetricsObserverTest, Basic) {
|
| - NavigateAndCommit(GURL(kDefaultTestUrl));
|
| + SimulateNavigateAndCommit(GURL(kDefaultTestUrlWithActivation));
|
|
|
| page_load_metrics::mojom::PageLoadTiming timing;
|
| InitializePageLoadTiming(&timing);
|
| @@ -74,7 +129,7 @@ TEST_F(SubresourceFilterMetricsObserverTest, Basic) {
|
| // Navigate away from the current page to force logging of metrics.
|
| NavigateToUntrackedUrl();
|
|
|
| - ASSERT_TRUE(AnyMetricsRecorded());
|
| + EXPECT_GT(TotalMetricsRecorded(), 0u);
|
|
|
| histogram_tester().ExpectTotalCount(
|
| internal::kHistogramSubresourceFilterCount, 1);
|
| @@ -153,7 +208,7 @@ TEST_F(SubresourceFilterMetricsObserverTest, Basic) {
|
| }
|
|
|
| TEST_F(SubresourceFilterMetricsObserverTest, Subresources) {
|
| - NavigateAndCommit(GURL(kDefaultTestUrl));
|
| + SimulateNavigateAndCommit(GURL(kDefaultTestUrlWithActivation));
|
|
|
| SimulateLoadedResource(
|
| {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */,
|
| @@ -251,7 +306,7 @@ TEST_F(SubresourceFilterMetricsObserverTest, Subresources) {
|
| }
|
|
|
| TEST_F(SubresourceFilterMetricsObserverTest, SubresourcesWithMedia) {
|
| - NavigateAndCommit(GURL(kDefaultTestUrl));
|
| + SimulateNavigateAndCommit(GURL(kDefaultTestUrlWithActivation));
|
|
|
| SimulateMediaPlayed();
|
|
|
|
|