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(); |