Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc

Issue 1377223002: Add page load abort metrics to PageLoadMetrics system (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@plm_backgrounded_master
Patch Set: Add unit tests Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" 5 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/process/kill.h" 8 #include "base/process/kill.h"
9 #include "base/test/histogram_tester.h" 9 #include "base/test/histogram_tester.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 17 matching lines...) Expand all
28 "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired"; 28 "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired";
29 const char kHistogramNameLoad[] = 29 const char kHistogramNameLoad[] =
30 "PageLoad.Timing2.NavigationToLoadEventFired"; 30 "PageLoad.Timing2.NavigationToLoadEventFired";
31 31
32 const char kBGHistogramNameFirstLayout[] = 32 const char kBGHistogramNameFirstLayout[] =
33 "PageLoad.Timing2.NavigationToFirstLayout.BG"; 33 "PageLoad.Timing2.NavigationToFirstLayout.BG";
34 const char kBGHistogramNameDomContent[] = 34 const char kBGHistogramNameDomContent[] =
35 "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired.BG"; 35 "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired.BG";
36 const char kBGHistogramNameLoad[] = 36 const char kBGHistogramNameLoad[] =
37 "PageLoad.Timing2.NavigationToLoadEventFired.BG"; 37 "PageLoad.Timing2.NavigationToLoadEventFired.BG";
38
39 const char kHistogramNameEvents[] = "PageLoad.EventCounts";
40
38 } // namespace 41 } // namespace
39 42
40 class MetricsWebContentsObserverTest 43 class MetricsWebContentsObserverTest
41 : public content::RenderViewHostTestHarness { 44 : public content::RenderViewHostTestHarness {
42 public: 45 public:
43 MetricsWebContentsObserverTest() {} 46 MetricsWebContentsObserverTest() {}
44 47
45 void SetUp() override { 48 void SetUp() override {
46 RenderViewHostTestHarness::SetUp(); 49 RenderViewHostTestHarness::SetUp();
47 observer_ = make_scoped_ptr(new MetricsWebContentsObserver(web_contents())); 50 observer_ = make_scoped_ptr(new MetricsWebContentsObserver(web_contents()));
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 330
328 // Navigate again to see if the timing updated for a subframe message. 331 // Navigate again to see if the timing updated for a subframe message.
329 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 332 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
330 333
331 histogram_tester_.ExpectTotalCount(kHistogramNameDomContent, 0); 334 histogram_tester_.ExpectTotalCount(kHistogramNameDomContent, 0);
332 histogram_tester_.ExpectTotalCount(kHistogramNameLoad, 0); 335 histogram_tester_.ExpectTotalCount(kHistogramNameLoad, 0);
333 histogram_tester_.ExpectTotalCount(kHistogramNameFirstLayout, 1); 336 histogram_tester_.ExpectTotalCount(kHistogramNameFirstLayout, 1);
334 histogram_tester_.ExpectBucketCount(kHistogramNameFirstLayout, 337 histogram_tester_.ExpectBucketCount(kHistogramNameFirstLayout,
335 first_layout.InMilliseconds(), 1); 338 first_layout.InMilliseconds(), 1);
336 } 339 }
340
341 TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoad) {
342 content::WebContentsTester* web_contents_tester =
343 content::WebContentsTester::For(web_contents());
344
345 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
346 content::RenderFrameHostTester* rfh_tester =
347 content::RenderFrameHostTester::For(main_rfh());
348 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), net::ERR_ABORTED);
349 rfh_tester->SimulateNavigationStop();
350
351 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
352 STARTED_PROVISIONAL_LOAD, 1);
353 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
354 ABORTED_PROVISIONAL_LOAD, 1);
355 }
356
357 TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) {
358 PageLoadTiming timing;
359 timing.navigation_start = base::Time::FromDoubleT(10);
360
361 content::WebContentsTester* web_contents_tester =
362 content::WebContentsTester::For(web_contents());
363 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
364
365 observer_->OnMessageReceived(
366 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
367 main_rfh());
368 // Navigate again to force histogram logging.
369 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
370
371 // 3 events: 2 starts and one abort before first layout.
372 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
373 STARTED_PROVISIONAL_LOAD, 2);
374 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
375 ABORTED_LOAD_BEFORE_FIRST_LAYOUT, 1);
376 }
377
378 TEST_F(MetricsWebContentsObserverTest, SuccessfulFirstLayoutEvent) {
379 PageLoadTiming timing;
380 timing.navigation_start = base::Time::FromDoubleT(10);
381 timing.first_layout = base::TimeDelta::FromMilliseconds(100);
382
383 content::WebContentsTester* web_contents_tester =
384 content::WebContentsTester::For(web_contents());
385 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
386
387 observer_->OnMessageReceived(
388 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
389 main_rfh());
390 // Navigate again to force histogram logging.
391 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
392
393 // 3 events: 2 starts and one successful first layout.
394 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
395 STARTED_PROVISIONAL_LOAD, 2);
396 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
397 SUCCESSFUL_FIRST_LAYOUT, 1);
398 }
399
337 } // namespace page_load_metrics 400 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698