Index: chrome/browser/page_load_metrics/observers/resource_tracking_page_load_metrics_observer_unittest.cc |
diff --git a/chrome/browser/page_load_metrics/observers/resource_tracking_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/resource_tracking_page_load_metrics_observer_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3ee36b1ea4c0b745fbf84b77fbb89ef1f307ec1e |
--- /dev/null |
+++ b/chrome/browser/page_load_metrics/observers/resource_tracking_page_load_metrics_observer_unittest.cc |
@@ -0,0 +1,75 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/page_load_metrics/observers/resource_tracking_page_load_metrics_observer.h" |
+ |
+#include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h" |
+ |
+namespace { |
+// const char kFakeUrl[] = "http://www.google.com/nothingotseehere.html"; |
RyanSturm
2017/04/14 20:08:43
Switch back to using the commented out kFakeUrl?
Pete Williamson
2017/04/17 18:53:11
Done (oops, I was planning to fix that before send
|
+} // namespace |
+ |
+namespace page_load_metrics { |
+ |
+const char kFakeURL[] = "http://www.google.com/nothingotseehere.html"; |
+ |
+class ResourceTrackingPageLoadMetricsObserverTest |
+ : public page_load_metrics::PageLoadMetricsObserverTestHarness { |
+ public: |
+ ResourceTrackingPageLoadMetricsObserverTest() : observer_(nullptr) {} |
+ |
+ protected: |
+ void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { |
+ std::unique_ptr<page_load_metrics::ResourceTrackingPageLoadMetricsObserver> |
+ observer( |
+ new page_load_metrics::ResourceTrackingPageLoadMetricsObserver()); |
+ // Keep track of the observer pointer so we can check it in the unit test. |
+ observer_ = observer.get(); |
+ tracker->AddObserver(std::move(observer)); |
+ } |
+ |
+ void SetUp() override { |
+ page_load_metrics::PageLoadMetricsObserverTestHarness::SetUp(); |
+ } |
+ |
+ page_load_metrics::ResourceTrackingPageLoadMetricsObserver* observer() { |
+ return observer_; |
+ } |
+ |
+ private: |
+ page_load_metrics::ResourceTrackingPageLoadMetricsObserver* observer_; |
+}; |
+ |
+TEST_F(ResourceTrackingPageLoadMetricsObserverTest, StartAndFinish) { |
+ page_load_metrics::ExtraRequestStartInfo start_info_1{ |
+ content::ResourceType::RESOURCE_TYPE_IMAGE}; |
+ |
+ page_load_metrics::ExtraRequestStartInfo start_info_2{ |
+ content::ResourceType::RESOURCE_TYPE_IMAGE}; |
+ |
+ page_load_metrics::ExtraRequestCompleteInfo done_info = { |
+ false /*was_cached*/, 1024 * 40 /* raw_body_bytes */, |
+ false /* data_reduction_proxy_used*/, |
+ 1024 * 40 /* original_network_content_length */, |
+ content::ResourceType::RESOURCE_TYPE_IMAGE}; |
+ |
+ // Start the navigation. This will create the page load tracker and register |
+ // the observers. |
+ NavigateAndCommit(GURL(kFakeURL)); |
+ |
+ // Simulate starting two images, and completing one. |
+ SimulateStartedResource(start_info_1); |
+ SimulateStartedResource(start_info_2); |
+ SimulateLoadedResource(done_info); |
+ |
+ int64_t started = -1; |
+ int64_t completed = -1; |
+ EXPECT_NE(nullptr, observer()); |
+ observer()->GetCountsForType(content::ResourceType::RESOURCE_TYPE_IMAGE, |
+ started, completed); |
+ EXPECT_EQ(2, started); |
+ EXPECT_EQ(1, completed); |
+} |
+ |
+} // namespace page_load_metrics |