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

Side by Side Diff: chrome/browser/page_load_metrics/observers/ads_page_load_metrics_observer_unittest.cc

Issue 2884753002: [PageLoadMetrics] Relax invariants and log the exceptions (Closed)
Patch Set: Reduce histogram calls Created 3 years, 7 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "chrome/browser/page_load_metrics/observers/ads_page_load_metrics_obser ver.h" 5 #include "chrome/browser/page_load_metrics/observers/ads_page_load_metrics_obser ver.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/test/histogram_tester.h" 10 #include "base/test/histogram_tester.h"
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 0, 234 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 0,
235 1); 235 1);
236 histogram_tester().ExpectBucketCount( 236 histogram_tester().ExpectBucketCount(
237 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 100, 237 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 100,
238 2); 238 2);
239 histogram_tester().ExpectBucketCount( 239 histogram_tester().ExpectBucketCount(
240 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 50, 240 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 50,
241 1); 241 1);
242 242
243 // Counts 243 // Counts
244 histogram_tester().ExpectBucketCount(
245 "PageLoad.Clients.Ads.Google.ParentExistsForSubFrame", 0, 0);
246 histogram_tester().ExpectTotalCount(
247 "PageLoad.Clients.Ads.Google.ResourceTypeWhenNoFrameFound", 0);
244 histogram_tester().ExpectUniqueSample( 248 histogram_tester().ExpectUniqueSample(
245 "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 4, 1); 249 "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 4, 1);
246 250
247 // Page percentages 251 // Page percentages
248 histogram_tester().ExpectUniqueSample( 252 histogram_tester().ExpectUniqueSample(
249 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total.PercentAds", 71, 1); 253 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total.PercentAds", 71, 1);
250 histogram_tester().ExpectUniqueSample( 254 histogram_tester().ExpectUniqueSample(
251 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.PercentNetwork", 60, 255 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.PercentNetwork", 60,
252 1); 256 1);
253 histogram_tester().ExpectUniqueSample( 257 histogram_tester().ExpectUniqueSample(
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 // Individual Ad Frame Metrics 328 // Individual Ad Frame Metrics
325 histogram_tester().ExpectUniqueSample( 329 histogram_tester().ExpectUniqueSample(
326 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Total", 20, 1); 330 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Total", 20, 1);
327 histogram_tester().ExpectUniqueSample( 331 histogram_tester().ExpectUniqueSample(
328 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Network", 20, 1); 332 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Network", 20, 1);
329 histogram_tester().ExpectUniqueSample( 333 histogram_tester().ExpectUniqueSample(
330 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 100, 334 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 100,
331 1); 335 1);
332 336
333 // Counts 337 // Counts
338 histogram_tester().ExpectBucketCount(
339 "PageLoad.Clients.Ads.Google.ParentExistsForSubFrame", 0, 0);
340 histogram_tester().ExpectTotalCount(
341 "PageLoad.Clients.Ads.Google.ResourceTypeWhenNoFrameFound", 0);
334 histogram_tester().ExpectUniqueSample( 342 histogram_tester().ExpectUniqueSample(
335 "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 1, 1); 343 "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 1, 1);
336 344
337 // Page percentages 345 // Page percentages
338 histogram_tester().ExpectUniqueSample( 346 histogram_tester().ExpectUniqueSample(
339 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total.PercentAds", 66, 1); 347 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total.PercentAds", 66, 1);
340 histogram_tester().ExpectUniqueSample( 348 histogram_tester().ExpectUniqueSample(
341 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.PercentNetwork", 349 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.PercentNetwork",
342 100, 1); 350 100, 1);
343 histogram_tester().ExpectUniqueSample( 351 histogram_tester().ExpectUniqueSample(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 // Individual Ad Frame Metrics 394 // Individual Ad Frame Metrics
387 histogram_tester().ExpectUniqueSample( 395 histogram_tester().ExpectUniqueSample(
388 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Total", 10, 2); 396 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Total", 10, 2);
389 histogram_tester().ExpectUniqueSample( 397 histogram_tester().ExpectUniqueSample(
390 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Network", 10, 2); 398 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Network", 10, 2);
391 histogram_tester().ExpectUniqueSample( 399 histogram_tester().ExpectUniqueSample(
392 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 100, 400 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 100,
393 2); 401 2);
394 402
395 // Counts 403 // Counts
404 histogram_tester().ExpectBucketCount(
405 "PageLoad.Clients.Ads.Google.ParentExistsForSubFrame", 0, 0);
406 histogram_tester().ExpectTotalCount(
407 "PageLoad.Clients.Ads.Google.ResourceTypeWhenNoFrameFound", 0);
396 histogram_tester().ExpectUniqueSample( 408 histogram_tester().ExpectUniqueSample(
397 "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 2, 1); 409 "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 2, 1);
398 410
399 // Page percentages 411 // Page percentages
400 histogram_tester().ExpectUniqueSample( 412 histogram_tester().ExpectUniqueSample(
401 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total.PercentAds", 50, 1); 413 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total.PercentAds", 50, 1);
402 histogram_tester().ExpectUniqueSample( 414 histogram_tester().ExpectUniqueSample(
403 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.PercentNetwork", 415 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.PercentNetwork",
404 100, 1); 416 100, 1);
405 histogram_tester().ExpectUniqueSample( 417 histogram_tester().ExpectUniqueSample(
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 // Individual Ad Frame Metrics 531 // Individual Ad Frame Metrics
520 histogram_tester().ExpectUniqueSample( 532 histogram_tester().ExpectUniqueSample(
521 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Total", 20, 1); 533 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Total", 20, 1);
522 histogram_tester().ExpectUniqueSample( 534 histogram_tester().ExpectUniqueSample(
523 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Network", 20, 1); 535 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.Network", 20, 1);
524 histogram_tester().ExpectUniqueSample( 536 histogram_tester().ExpectUniqueSample(
525 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 100, 537 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.PerFrame.PercentNetwork", 100,
526 1); 538 1);
527 539
528 // Counts 540 // Counts
541 histogram_tester().ExpectBucketCount(
542 "PageLoad.Clients.Ads.Google.ParentExistsForSubFrame", 0, 0);
543 histogram_tester().ExpectUniqueSample(
544 "PageLoad.Clients.Ads.Google.ResourceTypeWhenNoFrameFound",
545 content::RESOURCE_TYPE_SUB_FRAME, 1);
529 histogram_tester().ExpectUniqueSample( 546 histogram_tester().ExpectUniqueSample(
530 "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 1, 1); 547 "PageLoad.Clients.Ads.Google.FrameCounts.AnyParentFrame.AdFrames", 1, 1);
531 548
532 // Page percentages 549 // Page percentages
533 histogram_tester().ExpectUniqueSample( 550 histogram_tester().ExpectUniqueSample(
534 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total.PercentAds", 66, 1); 551 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total.PercentAds", 66, 1);
535 histogram_tester().ExpectUniqueSample( 552 histogram_tester().ExpectUniqueSample(
536 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.PercentNetwork", 553 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.PercentNetwork",
537 100, 1); 554 100, 1);
538 histogram_tester().ExpectUniqueSample( 555 histogram_tester().ExpectUniqueSample(
539 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Network.PercentAds", 66, 1); 556 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Network.PercentAds", 66, 1);
540 557
541 // Page byte counts 558 // Page byte counts
542 histogram_tester().ExpectUniqueSample( 559 histogram_tester().ExpectUniqueSample(
543 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.Total", 20, 1); 560 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.Total", 20, 1);
544 histogram_tester().ExpectUniqueSample( 561 histogram_tester().ExpectUniqueSample(
545 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.Network", 20, 1); 562 "PageLoad.Clients.Ads.Google.Bytes.AdFrames.Aggregate.Network", 20, 1);
546 histogram_tester().ExpectUniqueSample( 563 histogram_tester().ExpectUniqueSample(
547 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total", 30, 1); 564 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Total", 30, 1);
548 histogram_tester().ExpectUniqueSample( 565 histogram_tester().ExpectUniqueSample(
549 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Network", 30, 1); 566 "PageLoad.Clients.Ads.Google.Bytes.FullPage.Network", 30, 1);
550 histogram_tester().ExpectUniqueSample( 567 histogram_tester().ExpectUniqueSample(
551 "PageLoad.Clients.Ads.Google.Bytes.NonAdFrames.Aggregate.Total", 10, 1); 568 "PageLoad.Clients.Ads.Google.Bytes.NonAdFrames.Aggregate.Total", 10, 1);
552 } 569 }
570
571 // This tests an issue that is believed to be the cause of
572 // https://crbug.com/721369. The issue is that a frame from a previous
573 // navigation might commit during a new navigation, and the ads metrics won't
574 // know about the frame's parent (because it doesn't exist in the page).
575 TEST_F(AdsPageLoadMetricsObserverTest, FrameWithNoParent) {
576 RenderFrameHost* main_frame = NavigateMainFrame(kNonAdUrl);
577 RenderFrameHost* sub_frame =
578 CreateAndNavigateSubFrame(kNonAdUrl, kNonAdName, main_frame);
579
580 histogram_tester().ExpectBucketCount(
581 "PageLoad.Clients.Ads.Google.ParentExistsForSubFrame", 0, 0);
582
583 // Renavigate the child, but, while navigating, the main frame renavigates.
584 RenderFrameHost* child_of_subframe =
585 RenderFrameHostTester::For(sub_frame)->AppendChild(kAdName);
586 auto navigation_simulator = NavigationSimulator::CreateRendererInitiated(
587 GURL(kNonAdUrl2), child_of_subframe);
588 navigation_simulator->Start();
589
590 // Main frame renavigates.
591 NavigateMainFrame(kNonAdUrl);
592
593 // Child frame commits.
594 navigation_simulator->Commit();
595 child_of_subframe = navigation_simulator->GetFinalRenderFrameHost();
596 histogram_tester().ExpectBucketCount(
597 "PageLoad.Clients.Ads.Google.ParentExistsForSubFrame", 0, 1);
598
599 // Test that a resource loaded into an unknown frame doesn't cause any
600 // issues.
601 histogram_tester().ExpectTotalCount(
602 "PageLoad.Clients.Ads.Google.ResourceTypeWhenNoFrameFound", 0);
603 LoadResource(child_of_subframe, ResourceCached::NOT_CACHED, 10);
604 histogram_tester().ExpectBucketCount(
605 "PageLoad.Clients.Ads.Google.ResourceTypeWhenNoFrameFound",
606 content::RESOURCE_TYPE_SUB_FRAME, 1);
607 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698