Index: chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h |
diff --git a/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h b/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h |
index d6ac103df3a264ac681d08e941dfad9eff428a68..24d163d4935aed1e1c245fc97e020ecc60dae29b 100644 |
--- a/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h |
+++ b/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h |
@@ -13,6 +13,7 @@ |
#include "chrome/common/page_load_metrics/test/weak_mock_timer.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
+#include "components/ukm/test_ukm_recorder.h" |
#include "content/public/browser/global_request_id.h" |
#include "content/public/test/web_contents_tester.h" |
#include "third_party/WebKit/public/platform/WebInputEvent.h" |
@@ -30,6 +31,57 @@ class PageLoadMetricsObserverTestHarness |
// Sample URL for resource loads. |
static const char kResourceUrl[]; |
+ class UkmTester { |
+ public: |
+ UkmTester() {} |
+ |
+ // Sets up UKM test infrastructure. Intended to be called as part of a test |
+ // fixture's SetUp() method. |
+ void SetUp(); |
+ |
+ // Number of sources recorded. |
+ size_t sources_count() const { return test_ukm_recorder_.sources_count(); } |
+ |
+ // Number of entries recorded. |
+ size_t entries_count() const { return test_ukm_recorder_.entries_count(); } |
+ |
+ const ukm::UkmSource* GetSourceForUrl(const char* url) const; |
+ |
+ std::vector<const ukm::UkmSource*> GetSourcesForUrl(const char* url) const; |
+ |
+ bool HasEntry(const ukm::UkmSource& source, |
+ const char* event) const WARN_UNUSED_RESULT; |
+ |
+ int CountMetrics(const ukm::UkmSource& source, const char* event) const; |
+ |
+ bool HasMetric(const ukm::UkmSource& source, |
+ const char* event, |
+ const char* name) const WARN_UNUSED_RESULT; |
+ |
+ void ExpectMetric(const ukm::UkmSource& source, |
+ const char* event, |
+ const char* name, |
+ int64_t expected_value) const; |
+ |
+ private: |
+ ukm::mojom::UkmEntryPtr GetMergedEntryForSourceID(ukm::SourceId source_id, |
+ const char* event) const; |
+ |
+ std::vector<const ukm::mojom::UkmEntry*> GetEntriesForSourceID( |
+ ukm::SourceId source_id, |
+ const char* event) const; |
+ |
+ // Provides a single merged ukm::mojom::UkmEntry proto that contains all |
+ // metrics from the given |entries|. |entries| must be non-empty, and all |
+ // |entries| must have the same |source_id| and |event_hash|. |
+ static ukm::mojom::UkmEntryPtr GetMergedEntry( |
+ const std::vector<const ukm::mojom::UkmEntry*>& entries); |
+ |
+ ukm::TestUkmRecorder test_ukm_recorder_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(UkmTester); |
+ }; |
+ |
PageLoadMetricsObserverTestHarness(); |
~PageLoadMetricsObserverTestHarness() override; |
@@ -86,8 +138,11 @@ class PageLoadMetricsObserverTestHarness |
// Gets the PageLoadExtraInfo for the committed_load_ in observer_. |
const PageLoadExtraInfo GetPageLoadExtraInfoForCommittedLoad(); |
+ const UkmTester& ukm_tester() const { return ukm_tester_; } |
+ |
private: |
base::HistogramTester histogram_tester_; |
+ UkmTester ukm_tester_; |
MetricsWebContentsObserver* observer_; |
DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsObserverTestHarness); |