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

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

Issue 1433533007: [page_load_metrics] Get navigation_start from NavigationHandle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@change-names-refactor
Patch Set: Update dependent patchset Created 5 years, 1 month 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 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 dom_content.InMilliseconds(), 1); 275 dom_content.InMilliseconds(), 1);
276 276
277 histogram_tester_.ExpectTotalCount(kHistogramLoad, 1); 277 histogram_tester_.ExpectTotalCount(kHistogramLoad, 1);
278 histogram_tester_.ExpectBucketCount(kHistogramLoad, load.InMilliseconds(), 1); 278 histogram_tester_.ExpectBucketCount(kHistogramLoad, load.InMilliseconds(), 1);
279 } 279 }
280 280
281 TEST_F(MetricsWebContentsObserverTest, BackgroundDifferentHistogram) { 281 TEST_F(MetricsWebContentsObserverTest, BackgroundDifferentHistogram) {
282 base::TimeDelta first_layout = base::TimeDelta::FromSeconds(2); 282 base::TimeDelta first_layout = base::TimeDelta::FromSeconds(2);
283 283
284 PageLoadTiming timing; 284 PageLoadTiming timing;
285 timing.navigation_start = base::Time::FromDoubleT( 285 timing.navigation_start = base::Time::FromDoubleT(1);
286 (base::TimeTicks::Now() - base::TimeTicks::UnixEpoch()).InSecondsF());
287 timing.first_layout = first_layout; 286 timing.first_layout = first_layout;
288 287
289 content::WebContentsTester* web_contents_tester = 288 content::WebContentsTester* web_contents_tester =
290 content::WebContentsTester::For(web_contents()); 289 content::WebContentsTester::For(web_contents());
291 290
292 // Simulate "Open link in new tab." 291 // Simulate "Open link in new tab."
293 observer_->WasHidden(); 292 observer_->WasHidden();
294 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 293 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
295 294
296 observer_->OnMessageReceived( 295 observer_->OnMessageReceived(
(...skipping 15 matching lines...) Expand all
312 histogram_tester_.ExpectTotalCount(kBackgroundHistogramFirstTextPaint, 0); 311 histogram_tester_.ExpectTotalCount(kBackgroundHistogramFirstTextPaint, 0);
313 312
314 histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 0); 313 histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 0);
315 histogram_tester_.ExpectTotalCount(kHistogramLoad, 0); 314 histogram_tester_.ExpectTotalCount(kHistogramLoad, 0);
316 histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 0); 315 histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 0);
317 histogram_tester_.ExpectTotalCount(kHistogramFirstTextPaint, 0); 316 histogram_tester_.ExpectTotalCount(kHistogramFirstTextPaint, 0);
318 } 317 }
319 318
320 TEST_F(MetricsWebContentsObserverTest, OnlyBackgroundLaterEvents) { 319 TEST_F(MetricsWebContentsObserverTest, OnlyBackgroundLaterEvents) {
321 PageLoadTiming timing; 320 PageLoadTiming timing;
322 timing.navigation_start = base::Time::FromDoubleT( 321 timing.navigation_start = base::Time::FromDoubleT(1);
323 (base::TimeTicks::Now() - base::TimeTicks::UnixEpoch()).InSecondsF() - 1); 322 // Set these events at 1 microsecond so they are definitely occur before we
324 323 // background the tab later in the test.
325 timing.response_start = base::TimeDelta::FromMilliseconds(1); 324 timing.response_start = base::TimeDelta::FromMicroseconds(1);
326 timing.dom_content_loaded_event_start = base::TimeDelta::FromMilliseconds(1); 325 timing.dom_content_loaded_event_start = base::TimeDelta::FromMicroseconds(1);
327 326
328 content::WebContentsTester* web_contents_tester = 327 content::WebContentsTester* web_contents_tester =
329 content::WebContentsTester::For(web_contents()); 328 content::WebContentsTester::For(web_contents());
330 329
331 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 330 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
332 observer_->OnMessageReceived( 331 observer_->OnMessageReceived(
333 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 332 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
334 web_contents()->GetMainFrame()); 333 web_contents()->GetMainFrame());
335 334
336 // Background the tab, then forground it. 335 // Background the tab, then forground it.
(...skipping 21 matching lines...) Expand all
358 histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 1); 357 histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 1);
359 histogram_tester_.ExpectBucketCount( 358 histogram_tester_.ExpectBucketCount(
360 kHistogramDomContentLoaded, 359 kHistogramDomContentLoaded,
361 timing.dom_content_loaded_event_start.InMilliseconds(), 1); 360 timing.dom_content_loaded_event_start.InMilliseconds(), 1);
362 histogram_tester_.ExpectTotalCount(kHistogramLoad, 0); 361 histogram_tester_.ExpectTotalCount(kHistogramLoad, 0);
363 histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 0); 362 histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 0);
364 histogram_tester_.ExpectTotalCount(kHistogramFirstTextPaint, 0); 363 histogram_tester_.ExpectTotalCount(kHistogramFirstTextPaint, 0);
365 } 364 }
366 365
367 TEST_F(MetricsWebContentsObserverTest, DontBackgroundQuickerLoad) { 366 TEST_F(MetricsWebContentsObserverTest, DontBackgroundQuickerLoad) {
368 base::TimeDelta first_layout = base::TimeDelta::FromMilliseconds(1); 367 // Set this event at 1 microsecond so it occurs before we foreground later in
368 // the test.
369 base::TimeDelta first_layout = base::TimeDelta::FromMicroseconds(1);
369 370
370 PageLoadTiming timing; 371 PageLoadTiming timing;
371 timing.navigation_start = base::Time::FromDoubleT(1); 372 timing.navigation_start = base::Time::FromDoubleT(1);
372 timing.first_layout = first_layout; 373 timing.first_layout = first_layout;
373 374
374 observer_->WasHidden(); 375 observer_->WasHidden();
375 376
376 // Open in new tab 377 // Open in new tab
377 content::WebContentsTester* web_contents_tester = 378 content::WebContentsTester* web_contents_tester =
378 content::WebContentsTester::For(web_contents()); 379 content::WebContentsTester::For(web_contents());
379 380
380 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl)); 381 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
381 382
382 content::RenderFrameHostTester* rfh_tester = 383 content::RenderFrameHostTester* rfh_tester =
383 content::RenderFrameHostTester::For(main_rfh()); 384 content::RenderFrameHostTester::For(main_rfh());
384 385
385 // Switch to the tab 386 // Switch to the tab
386 observer_->WasShown(); 387 observer_->WasShown();
387 388
388 // Start another provisional load 389 // Start another provisional load
389 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl2)); 390 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl2));
390 rfh_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl2)); 391 rfh_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl2));
391 observer_->OnMessageReceived( 392 observer_->OnMessageReceived(
392 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 393 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
393 main_rfh()); 394 main_rfh());
394 rfh_tester->SimulateNavigationStop(); 395 rfh_tester->SimulateNavigationStop();
395 396
396 // Navigate again to see if the timing updated for a subframe message. 397 // Navigate again to see if the timing updated for the foregrounded load.
397 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 398 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
398 399
399 histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 0); 400 histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 0);
400 histogram_tester_.ExpectTotalCount(kHistogramLoad, 0); 401 histogram_tester_.ExpectTotalCount(kHistogramLoad, 0);
401 histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 1); 402 histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 1);
402 histogram_tester_.ExpectBucketCount(kHistogramFirstLayout, 403 histogram_tester_.ExpectBucketCount(kHistogramFirstLayout,
403 first_layout.InMilliseconds(), 1); 404 first_layout.InMilliseconds(), 1);
404 histogram_tester_.ExpectTotalCount(kHistogramFirstTextPaint, 0); 405 histogram_tester_.ExpectTotalCount(kHistogramFirstTextPaint, 0);
405 } 406 }
406 407
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 535
535 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false); 536 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
536 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 2, false); 537 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 2, false);
537 CheckCommittedEvent(COMMITTED_LOAD_SUCCESSFUL_FIRST_LAYOUT, 1, false); 538 CheckCommittedEvent(COMMITTED_LOAD_SUCCESSFUL_FIRST_LAYOUT, 1, false);
538 CheckTotalEvents(); 539 CheckTotalEvents();
539 } 540 }
540 541
541 TEST_F(MetricsWebContentsObserverTest, 542 TEST_F(MetricsWebContentsObserverTest,
542 SuccessfulFirstLayoutInBackgroundEvent) { 543 SuccessfulFirstLayoutInBackgroundEvent) {
543 PageLoadTiming timing; 544 PageLoadTiming timing;
544 timing.navigation_start = base::Time::FromDoubleT( 545 timing.navigation_start = base::Time::FromDoubleT(1);
545 (base::TimeTicks::Now() - base::TimeTicks::UnixEpoch()).InSecondsF() - 1);
546
547 timing.first_layout = base::TimeDelta::FromSeconds(30); 546 timing.first_layout = base::TimeDelta::FromSeconds(30);
548 547
549 content::WebContentsTester* web_contents_tester = 548 content::WebContentsTester* web_contents_tester =
550 content::WebContentsTester::For(web_contents()); 549 content::WebContentsTester::For(web_contents());
551 // Background the tab. 550 // Background the tab.
552 observer_->WasHidden(); 551 observer_->WasHidden();
553 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 552 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
554 553
555 observer_->OnMessageReceived( 554 observer_->OnMessageReceived(
556 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 555 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 EXPECT_NE(string_it, sample_obj->string_fields.end()); 670 EXPECT_NE(string_it, sample_obj->string_fields.end());
672 EXPECT_EQ(rappor::GetDomainAndRegistrySampleFromGURL(GURL(kDefaultTestUrl)), 671 EXPECT_EQ(rappor::GetDomainAndRegistrySampleFromGURL(GURL(kDefaultTestUrl)),
673 string_it->second); 672 string_it->second);
674 673
675 const auto& flag_it = sample_obj->flag_fields.find("IsSlow"); 674 const auto& flag_it = sample_obj->flag_fields.find("IsSlow");
676 EXPECT_NE(flag_it, sample_obj->flag_fields.end()); 675 EXPECT_NE(flag_it, sample_obj->flag_fields.end());
677 EXPECT_EQ(0u, flag_it->second); 676 EXPECT_EQ(0u, flag_it->second);
678 } 677 }
679 678
680 } // namespace page_load_metrics 679 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698