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

Side by Side Diff: chrome/renderer/page_load_histograms.cc

Issue 1310743003: Consistently use LoFi for an entire page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test fixes Created 5 years, 4 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer/page_load_histograms.h" 5 #include "chrome/renderer/page_load_histograms.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/metrics/field_trial.h" 12 #include "base/metrics/field_trial.h"
13 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
14 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
15 #include "base/strings/string_split.h" 15 #include "base/strings/string_split.h"
16 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
17 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
18 #include "base/strings/utf_string_conversions.h" 18 #include "base/strings/utf_string_conversions.h"
19 #include "base/time/time.h" 19 #include "base/time/time.h"
20 #include "chrome/common/chrome_switches.h" 20 #include "chrome/common/chrome_switches.h"
21 #include "chrome/renderer/chrome_content_renderer_client.h" 21 #include "chrome/renderer/chrome_content_renderer_client.h"
22 #include "chrome/renderer/searchbox/search_bouncer.h" 22 #include "chrome/renderer/searchbox/search_bouncer.h"
23 #include "components/data_reduction_proxy/content/common/data_reduction_proxy_me ssages.h" 23 #include "components/data_reduction_proxy/content/common/data_reduction_proxy_me ssages.h"
24 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param s.h"
24 #include "content/public/common/content_constants.h" 25 #include "content/public/common/content_constants.h"
25 #include "content/public/renderer/document_state.h" 26 #include "content/public/renderer/document_state.h"
26 #include "content/public/renderer/render_thread.h" 27 #include "content/public/renderer/render_thread.h"
27 #include "content/public/renderer/render_view.h" 28 #include "content/public/renderer/render_view.h"
28 #include "extensions/common/url_pattern.h" 29 #include "extensions/common/url_pattern.h"
29 #include "net/base/url_util.h" 30 #include "net/base/url_util.h"
30 #include "net/http/http_response_headers.h" 31 #include "net/http/http_response_headers.h"
31 #include "third_party/WebKit/public/platform/WebURLRequest.h" 32 #include "third_party/WebKit/public/platform/WebURLRequest.h"
32 #include "third_party/WebKit/public/platform/WebURLResponse.h" 33 #include "third_party/WebKit/public/platform/WebURLResponse.h"
33 #include "third_party/WebKit/public/web/WebDocument.h" 34 #include "third_party/WebKit/public/web/WebDocument.h"
34 #include "third_party/WebKit/public/web/WebFrame.h" 35 #include "third_party/WebKit/public/web/WebFrame.h"
35 #include "third_party/WebKit/public/web/WebPerformance.h" 36 #include "third_party/WebKit/public/web/WebPerformance.h"
36 #include "third_party/WebKit/public/web/WebView.h" 37 #include "third_party/WebKit/public/web/WebView.h"
37 #include "url/gurl.h" 38 #include "url/gurl.h"
38 39
39 using blink::WebDataSource; 40 using blink::WebDataSource;
40 using blink::WebFrame; 41 using blink::WebFrame;
41 using blink::WebPerformance; 42 using blink::WebPerformance;
42 using blink::WebString; 43 using blink::WebString;
43 using base::Time; 44 using base::Time;
44 using base::TimeDelta; 45 using base::TimeDelta;
45 using content::DocumentState; 46 using content::DocumentState;
46 47
47 const size_t kPLTCount = 100; 48 const size_t kPLTCount = 100;
48 49
49 namespace { 50 namespace {
50 51
52 const char kEnabled[] = "Enabled";
53 const char kControl[] = "Control";
54
51 // ID indicating that no GWS-Chrome joint experiment is active. 55 // ID indicating that no GWS-Chrome joint experiment is active.
52 const int kNoExperiment = 0; 56 const int kNoExperiment = 0;
53 57
54 // Max ID of GWS-Chrome joint experiment. If you change this value, please 58 // Max ID of GWS-Chrome joint experiment. If you change this value, please
55 // update PLT_HISTOGRAM_WITH_GWS_VARIANT accordingly. 59 // update PLT_HISTOGRAM_WITH_GWS_VARIANT accordingly.
56 const int kMaxExperimentID = 20; 60 const int kMaxExperimentID = 20;
57 61
58 TimeDelta kPLTMin() { 62 TimeDelta kPLTMin() {
59 return TimeDelta::FromMilliseconds(10); 63 return TimeDelta::FromMilliseconds(10);
60 } 64 }
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 if (!base::StringToInt(value, &experiment_id)) 216 if (!base::StringToInt(value, &experiment_id))
213 return kNoExperiment; 217 return kNoExperiment;
214 if (0 < experiment_id && experiment_id <= kMaxExperimentID) 218 if (0 < experiment_id && experiment_id <= kMaxExperimentID)
215 return experiment_id; 219 return experiment_id;
216 return kNoExperiment; 220 return kNoExperiment;
217 } 221 }
218 222
219 void DumpHistograms(const WebPerformance& performance, 223 void DumpHistograms(const WebPerformance& performance,
220 DocumentState* document_state, 224 DocumentState* document_state,
221 bool data_reduction_proxy_was_used, 225 bool data_reduction_proxy_was_used,
222 data_reduction_proxy::LoFiStatus lofi_status, 226 bool lofi_on,
223 bool came_from_websearch, 227 bool came_from_websearch,
224 int websearch_chrome_joint_experiment_id, 228 int websearch_chrome_joint_experiment_id,
225 bool is_preview, 229 bool is_preview,
226 URLPattern::SchemeMasks scheme_type) { 230 URLPattern::SchemeMasks scheme_type) {
227 // This function records new histograms based on the Navigation Timing 231 // This function records new histograms based on the Navigation Timing
228 // records. As such, the histograms should not depend on the deprecated timing 232 // records. As such, the histograms should not depend on the deprecated timing
229 // information collected in DocumentState. However, here for some reason we 233 // information collected in DocumentState. However, here for some reason we
230 // check if document_state->request_time() is null. TODO(ppi): find out why 234 // check if document_state->request_time() is null. TODO(ppi): find out why
231 // and remove DocumentState from the parameter list. 235 // and remove DocumentState from the parameter list.
232 Time request = document_state->request_time(); 236 Time request = document_state->request_time();
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 load_event_end - navigation_start, 408 load_event_end - navigation_start,
405 came_from_websearch, 409 came_from_websearch,
406 websearch_chrome_joint_experiment_id, 410 websearch_chrome_joint_experiment_id,
407 is_preview); 411 is_preview);
408 PLT_HISTOGRAM_WITH_GWS_VARIANT("PLT.PT_StartToFinish", 412 PLT_HISTOGRAM_WITH_GWS_VARIANT("PLT.PT_StartToFinish",
409 load_event_end - request_start, 413 load_event_end - request_start,
410 came_from_websearch, 414 came_from_websearch,
411 websearch_chrome_joint_experiment_id, 415 websearch_chrome_joint_experiment_id,
412 is_preview); 416 is_preview);
413 if (data_reduction_proxy_was_used) { 417 if (data_reduction_proxy_was_used) {
418 bool in_lofi_enabled =
bengr 2015/08/25 00:00:01 Rename as in_lofi_enabled_group, or lofi_available
megjablon 2015/08/25 20:29:45 Done.
419 (base::FieldTrialList::FindFullName(
420 data_reduction_proxy::params::GetLoFiFieldTrialName()) ==
421 kEnabled);
422 bool in_lofi_control =
bengr 2015/08/25 00:00:01 Rename as in_lofi_control_group, or lofi_control_g
megjablon 2015/08/25 20:29:45 Done.
423 (base::FieldTrialList::FindFullName(
424 data_reduction_proxy::params::GetLoFiFieldTrialName()) ==
425 kControl);
414 if ((scheme_type & URLPattern::SCHEME_HTTPS) == 0) { 426 if ((scheme_type & URLPattern::SCHEME_HTTPS) == 0) {
415 PLT_HISTOGRAM("PLT.PT_BeginToFinish_DataReductionProxy", 427 PLT_HISTOGRAM("PLT.PT_BeginToFinish_DataReductionProxy",
416 load_event_end - begin); 428 load_event_end - begin);
417 PLT_HISTOGRAM("PLT.PT_CommitToFinish_DataReductionProxy", 429 PLT_HISTOGRAM("PLT.PT_CommitToFinish_DataReductionProxy",
418 load_event_end - response_start); 430 load_event_end - response_start);
419 PLT_HISTOGRAM("PLT.PT_RequestToFinish_DataReductionProxy", 431 PLT_HISTOGRAM("PLT.PT_RequestToFinish_DataReductionProxy",
420 load_event_end - navigation_start); 432 load_event_end - navigation_start);
421 PLT_HISTOGRAM("PLT.PT_StartToFinish_DataReductionProxy", 433 PLT_HISTOGRAM("PLT.PT_StartToFinish_DataReductionProxy",
422 load_event_end - request_start); 434 load_event_end - request_start);
423 if (lofi_status == data_reduction_proxy::LOFI_STATUS_ACTIVE) { 435 if (lofi_on && in_lofi_enabled) {
424 PLT_HISTOGRAM("PLT.PT_BeginToFinish_DataReductionProxy_AutoLoFiOn", 436 PLT_HISTOGRAM("PLT.PT_BeginToFinish_DataReductionProxy_AutoLoFiOn",
425 load_event_end - begin); 437 load_event_end - begin);
426 PLT_HISTOGRAM("PLT.PT_CommitToFinish_DataReductionProxy_AutoLoFiOn", 438 PLT_HISTOGRAM("PLT.PT_CommitToFinish_DataReductionProxy_AutoLoFiOn",
427 load_event_end - response_start); 439 load_event_end - response_start);
428 PLT_HISTOGRAM("PLT.PT_RequestToFinish_DataReductionProxy_AutoLoFiOn", 440 PLT_HISTOGRAM("PLT.PT_RequestToFinish_DataReductionProxy_AutoLoFiOn",
429 load_event_end - navigation_start); 441 load_event_end - navigation_start);
430 PLT_HISTOGRAM("PLT.PT_StartToFinish_DataReductionProxy_AutoLoFiOn", 442 PLT_HISTOGRAM("PLT.PT_StartToFinish_DataReductionProxy_AutoLoFiOn",
431 load_event_end - request_start); 443 load_event_end - request_start);
432 if (!first_paint.is_null()) { 444 if (!first_paint.is_null()) {
433 PLT_HISTOGRAM("PLT.BeginToFirstPaint_DataReductionProxy_AutoLoFiOn", 445 PLT_HISTOGRAM("PLT.BeginToFirstPaint_DataReductionProxy_AutoLoFiOn",
434 first_paint - begin); 446 first_paint - begin);
435 } 447 }
436 } else if (lofi_status == 448 } else if (lofi_on && in_lofi_control) {
437 data_reduction_proxy::LOFI_STATUS_ACTIVE_CONTROL) {
438 PLT_HISTOGRAM("PLT.PT_BeginToFinish_DataReductionProxy_AutoLoFiOff", 449 PLT_HISTOGRAM("PLT.PT_BeginToFinish_DataReductionProxy_AutoLoFiOff",
439 load_event_end - begin); 450 load_event_end - begin);
440 PLT_HISTOGRAM("PLT.PT_CommitToFinish_DataReductionProxy_AutoLoFiOff", 451 PLT_HISTOGRAM("PLT.PT_CommitToFinish_DataReductionProxy_AutoLoFiOff",
441 load_event_end - response_start); 452 load_event_end - response_start);
442 PLT_HISTOGRAM("PLT.PT_RequestToFinish_DataReductionProxy_AutoLoFiOff", 453 PLT_HISTOGRAM("PLT.PT_RequestToFinish_DataReductionProxy_AutoLoFiOff",
443 load_event_end - navigation_start); 454 load_event_end - navigation_start);
444 PLT_HISTOGRAM("PLT.PT_StartToFinish_DataReductionProxy_AutoLoFiOff", 455 PLT_HISTOGRAM("PLT.PT_StartToFinish_DataReductionProxy_AutoLoFiOff",
445 load_event_end - request_start); 456 load_event_end - request_start);
446 if (!first_paint.is_null()) { 457 if (!first_paint.is_null()) {
447 PLT_HISTOGRAM( 458 PLT_HISTOGRAM(
448 "PLT.BeginToFirstPaint_DataReductionProxy_AutoLoFiOff", 459 "PLT.BeginToFirstPaint_DataReductionProxy_AutoLoFiOff",
449 first_paint - begin); 460 first_paint - begin);
450 } 461 }
451 } 462 }
452 } else { 463 } else {
453 PLT_HISTOGRAM("PLT.PT_BeginToFinish_HTTPS_DataReductionProxy", 464 PLT_HISTOGRAM("PLT.PT_BeginToFinish_HTTPS_DataReductionProxy",
454 load_event_end - begin); 465 load_event_end - begin);
455 PLT_HISTOGRAM("PLT.PT_CommitToFinish_HTTPS_DataReductionProxy", 466 PLT_HISTOGRAM("PLT.PT_CommitToFinish_HTTPS_DataReductionProxy",
456 load_event_end - response_start); 467 load_event_end - response_start);
457 PLT_HISTOGRAM("PLT.PT_RequestToFinish_HTTPS_DataReductionProxy", 468 PLT_HISTOGRAM("PLT.PT_RequestToFinish_HTTPS_DataReductionProxy",
458 load_event_end - navigation_start); 469 load_event_end - navigation_start);
459 PLT_HISTOGRAM("PLT.PT_StartToFinish_HTTPS_DataReductionProxy", 470 PLT_HISTOGRAM("PLT.PT_StartToFinish_HTTPS_DataReductionProxy",
460 load_event_end - request_start); 471 load_event_end - request_start);
461 if (lofi_status == data_reduction_proxy::LOFI_STATUS_ACTIVE) { 472 if (lofi_on && in_lofi_enabled) {
462 PLT_HISTOGRAM( 473 PLT_HISTOGRAM(
463 "PLT.PT_BeginToFinish_HTTPS_DataReductionProxy_AutoLoFiOn", 474 "PLT.PT_BeginToFinish_HTTPS_DataReductionProxy_AutoLoFiOn",
464 load_event_end - begin); 475 load_event_end - begin);
465 PLT_HISTOGRAM( 476 PLT_HISTOGRAM(
466 "PLT.PT_CommitToFinish_HTTPS_DataReductionProxy_AutoLoFiOn", 477 "PLT.PT_CommitToFinish_HTTPS_DataReductionProxy_AutoLoFiOn",
467 load_event_end - response_start); 478 load_event_end - response_start);
468 PLT_HISTOGRAM( 479 PLT_HISTOGRAM(
469 "PLT.PT_RequestToFinish_HTTPS_DataReductionProxy_AutoLoFiOn", 480 "PLT.PT_RequestToFinish_HTTPS_DataReductionProxy_AutoLoFiOn",
470 load_event_end - navigation_start); 481 load_event_end - navigation_start);
471 PLT_HISTOGRAM( 482 PLT_HISTOGRAM(
472 "PLT.PT_StartToFinish_HTTPS_DataReductionProxy_AutoLoFiOn", 483 "PLT.PT_StartToFinish_HTTPS_DataReductionProxy_AutoLoFiOn",
473 load_event_end - request_start); 484 load_event_end - request_start);
474 if (!first_paint.is_null()) { 485 if (!first_paint.is_null()) {
475 PLT_HISTOGRAM( 486 PLT_HISTOGRAM(
476 "PLT.BeginToFirstPaint_HTTPS_DataReductionProxy_AutoLoFiOn", 487 "PLT.BeginToFirstPaint_HTTPS_DataReductionProxy_AutoLoFiOn",
477 first_paint - begin); 488 first_paint - begin);
478 } 489 }
479 } else if (lofi_status == 490 } else if (lofi_on && in_lofi_control) {
480 data_reduction_proxy::LOFI_STATUS_ACTIVE_CONTROL) {
481 PLT_HISTOGRAM( 491 PLT_HISTOGRAM(
482 "PLT.PT_BeginToFinish_HTTPS_DataReductionProxy_AutoLoFiOff", 492 "PLT.PT_BeginToFinish_HTTPS_DataReductionProxy_AutoLoFiOff",
483 load_event_end - begin); 493 load_event_end - begin);
484 PLT_HISTOGRAM( 494 PLT_HISTOGRAM(
485 "PLT.PT_CommitToFinish_HTTPS_DataReductionProxy_AutoLoFiOff", 495 "PLT.PT_CommitToFinish_HTTPS_DataReductionProxy_AutoLoFiOff",
486 load_event_end - response_start); 496 load_event_end - response_start);
487 PLT_HISTOGRAM( 497 PLT_HISTOGRAM(
488 "PLT.PT_RequestToFinish_HTTPS_DataReductionProxy_AutoLoFiOff", 498 "PLT.PT_RequestToFinish_HTTPS_DataReductionProxy_AutoLoFiOff",
489 load_event_end - navigation_start); 499 load_event_end - navigation_start);
490 PLT_HISTOGRAM( 500 PLT_HISTOGRAM(
(...skipping 26 matching lines...) Expand all
517 } 527 }
518 } 528 }
519 } 529 }
520 if (!dom_content_loaded_start.is_null()) { 530 if (!dom_content_loaded_start.is_null()) {
521 PLT_HISTOGRAM_WITH_GWS_VARIANT("PLT.PT_RequestToDomContentLoaded", 531 PLT_HISTOGRAM_WITH_GWS_VARIANT("PLT.PT_RequestToDomContentLoaded",
522 dom_content_loaded_start - navigation_start, 532 dom_content_loaded_start - navigation_start,
523 came_from_websearch, 533 came_from_websearch,
524 websearch_chrome_joint_experiment_id, 534 websearch_chrome_joint_experiment_id,
525 is_preview); 535 is_preview);
526 if (data_reduction_proxy_was_used) { 536 if (data_reduction_proxy_was_used) {
537 bool in_lofi_enabled =
538 (base::FieldTrialList::FindFullName(
539 data_reduction_proxy::params::GetLoFiFieldTrialName()) ==
540 kEnabled);
541 bool in_lofi_control =
542 (base::FieldTrialList::FindFullName(
543 data_reduction_proxy::params::GetLoFiFieldTrialName()) ==
bengr 2015/08/25 00:00:01 It's probably worth the extra few lines of code to
megjablon 2015/08/25 20:29:45 Done.
544 kControl);
527 if ((scheme_type & URLPattern::SCHEME_HTTPS) == 0) { 545 if ((scheme_type & URLPattern::SCHEME_HTTPS) == 0) {
528 PLT_HISTOGRAM("PLT.PT_RequestToDomContentLoaded_DataReductionProxy", 546 PLT_HISTOGRAM("PLT.PT_RequestToDomContentLoaded_DataReductionProxy",
529 dom_content_loaded_start - navigation_start); 547 dom_content_loaded_start - navigation_start);
530 if (lofi_status == data_reduction_proxy::LOFI_STATUS_ACTIVE) { 548 if (lofi_on && in_lofi_enabled) {
531 PLT_HISTOGRAM( 549 PLT_HISTOGRAM(
532 "PLT.PT_RequestToDomContentLoaded_DataReductionProxy_AutoLoFiOn", 550 "PLT.PT_RequestToDomContentLoaded_DataReductionProxy_AutoLoFiOn",
533 dom_content_loaded_start - navigation_start); 551 dom_content_loaded_start - navigation_start);
534 } else if (lofi_status == 552 } else if (lofi_on && in_lofi_control) {
535 data_reduction_proxy::LOFI_STATUS_ACTIVE_CONTROL) {
536 PLT_HISTOGRAM( 553 PLT_HISTOGRAM(
537 "PLT.PT_RequestToDomContentLoaded_DataReductionProxy_AutoLoFiOff", 554 "PLT.PT_RequestToDomContentLoaded_DataReductionProxy_AutoLoFiOff",
538 dom_content_loaded_start - navigation_start); 555 dom_content_loaded_start - navigation_start);
539 } 556 }
540 } else { 557 } else {
541 PLT_HISTOGRAM( 558 PLT_HISTOGRAM(
542 "PLT.PT_RequestToDomContentLoaded_HTTPS_DataReductionProxy", 559 "PLT.PT_RequestToDomContentLoaded_HTTPS_DataReductionProxy",
543 dom_content_loaded_start - navigation_start); 560 dom_content_loaded_start - navigation_start);
544 if (lofi_status == data_reduction_proxy::LOFI_STATUS_ACTIVE) { 561 if (lofi_on && in_lofi_enabled) {
545 PLT_HISTOGRAM( 562 PLT_HISTOGRAM(
546 "PLT.PT_RequestToDomContentLoaded_HTTPS_DataReductionProxy_" 563 "PLT.PT_RequestToDomContentLoaded_HTTPS_DataReductionProxy_"
547 "AutoLoFiOn", 564 "AutoLoFiOn",
548 dom_content_loaded_start - navigation_start); 565 dom_content_loaded_start - navigation_start);
549 } else if (lofi_status == 566 } else if (lofi_on && in_lofi_control) {
550 data_reduction_proxy::LOFI_STATUS_ACTIVE_CONTROL) {
551 PLT_HISTOGRAM( 567 PLT_HISTOGRAM(
552 "PLT.PT_RequestToDomContentLoaded_HTTPS_DataReductionProxy_" 568 "PLT.PT_RequestToDomContentLoaded_HTTPS_DataReductionProxy_"
553 "AutoLoFiOff", 569 "AutoLoFiOff",
554 dom_content_loaded_start - navigation_start); 570 dom_content_loaded_start - navigation_start);
555 } 571 }
556 } 572 }
557 } 573 }
558 } 574 }
559 PLT_HISTOGRAM_WITH_GWS_VARIANT("PLT.PT_BeginToCommit", 575 PLT_HISTOGRAM_WITH_GWS_VARIANT("PLT.PT_BeginToCommit",
560 response_start - begin, 576 response_start - begin,
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 return false; 876 return false;
861 } 877 }
862 878
863 // Ignore multipart requests. 879 // Ignore multipart requests.
864 if (frame->dataSource()->response().isMultipartPayload()) 880 if (frame->dataSource()->response().isMultipartPayload())
865 return false; 881 return false;
866 882
867 return true; 883 return true;
868 } 884 }
869 885
870 void PageLoadHistograms::Dump(WebFrame* frame) { 886 void PageLoadHistograms::Dump(WebFrame* frame, bool lofi_used) {
871 if (!ShouldDump(frame)) 887 if (!ShouldDump(frame))
872 return; 888 return;
873 889
874 URLPattern::SchemeMasks scheme_type = 890 URLPattern::SchemeMasks scheme_type =
875 GetSupportedSchemeType(frame->document().url()); 891 GetSupportedSchemeType(frame->document().url());
876 892
877 DocumentState* document_state = 893 DocumentState* document_state =
878 DocumentState::FromDataSource(frame->dataSource()); 894 DocumentState::FromDataSource(frame->dataSource());
879 895
880 bool data_reduction_proxy_was_used = false; 896 bool data_reduction_proxy_was_used = false;
881 data_reduction_proxy::LoFiStatus lofi_status =
882 data_reduction_proxy::LOFI_STATUS_TEMPORARILY_OFF;
883 if (!document_state->proxy_server().IsEmpty()) { 897 if (!document_state->proxy_server().IsEmpty()) {
884 Send(new DataReductionProxyViewHostMsg_DataReductionProxyStatus( 898 Send(new DataReductionProxyViewHostMsg_DataReductionProxyStatus(
885 document_state->proxy_server(), &data_reduction_proxy_was_used, 899 document_state->proxy_server(), &data_reduction_proxy_was_used));
886 &lofi_status));
887 } 900 }
888 901
889 bool came_from_websearch = 902 bool came_from_websearch =
890 IsFromGoogleSearchResult(frame->document().url(), 903 IsFromGoogleSearchResult(frame->document().url(),
891 GURL(frame->document().referrer())); 904 GURL(frame->document().referrer()));
892 int websearch_chrome_joint_experiment_id = kNoExperiment; 905 int websearch_chrome_joint_experiment_id = kNoExperiment;
893 bool is_preview = false; 906 bool is_preview = false;
894 if (came_from_websearch) { 907 if (came_from_websearch) {
895 websearch_chrome_joint_experiment_id = 908 websearch_chrome_joint_experiment_id =
896 GetQueryStringBasedExperiment(GURL(frame->document().referrer())); 909 GetQueryStringBasedExperiment(GURL(frame->document().referrer()));
897 is_preview = ViaHeaderContains(frame, "1.1 Google Instant Proxy Preview"); 910 is_preview = ViaHeaderContains(frame, "1.1 Google Instant Proxy Preview");
898 } 911 }
899 912
900 MaybeDumpFirstLayoutHistograms(); 913 MaybeDumpFirstLayoutHistograms();
901 914
902 // Metrics based on the timing information recorded for the Navigation Timing 915 // Metrics based on the timing information recorded for the Navigation Timing
903 // API - http://www.w3.org/TR/navigation-timing/. 916 // API - http://www.w3.org/TR/navigation-timing/.
904 DumpHistograms(frame->performance(), document_state, 917 DumpHistograms(frame->performance(), document_state,
905 data_reduction_proxy_was_used, lofi_status, 918 data_reduction_proxy_was_used, lofi_used, came_from_websearch,
906 came_from_websearch, websearch_chrome_joint_experiment_id, 919 websearch_chrome_joint_experiment_id, is_preview, scheme_type);
907 is_preview, scheme_type);
908 920
909 // Old metrics based on the timing information stored in DocumentState. These 921 // Old metrics based on the timing information stored in DocumentState. These
910 // are deprecated and should go away. 922 // are deprecated and should go away.
911 DumpDeprecatedHistograms(frame->performance(), document_state, 923 DumpDeprecatedHistograms(frame->performance(), document_state,
912 data_reduction_proxy_was_used, 924 data_reduction_proxy_was_used,
913 came_from_websearch, 925 came_from_websearch,
914 websearch_chrome_joint_experiment_id, 926 websearch_chrome_joint_experiment_id,
915 is_preview, 927 is_preview,
916 scheme_type); 928 scheme_type);
917 929
(...skipping 28 matching lines...) Expand all
946 first_layout - navigation_start); 958 first_layout - navigation_start);
947 959
948 Time response_start = Time::FromDoubleT(performance.responseStart()); 960 Time response_start = Time::FromDoubleT(performance.responseStart());
949 if (!response_start.is_null()) 961 if (!response_start.is_null())
950 PLT_HISTOGRAM("PLT.PT.ResponseStartToFirstLayout", 962 PLT_HISTOGRAM("PLT.PT.ResponseStartToFirstLayout",
951 first_layout - response_start); 963 first_layout - response_start);
952 964
953 dumped_first_layout_histograms_ = true; 965 dumped_first_layout_histograms_ = true;
954 } 966 }
955 967
956 void PageLoadHistograms::FrameWillClose(WebFrame* frame) { 968 void PageLoadHistograms::FrameWillClose(WebFrame* frame, bool lofi_used) {
957 Dump(frame); 969 Dump(frame, lofi_used);
958 } 970 }
959 971
960 void PageLoadHistograms::ClosePage() { 972 void PageLoadHistograms::ClosePage(bool lofi_used) {
961 // TODO(davemoore) This code should be removed once willClose() gets 973 // TODO(davemoore) This code should be removed once willClose() gets
962 // called when a page is destroyed. page_load_histograms_.Dump() is safe 974 // called when a page is destroyed. page_load_histograms_.Dump() is safe
963 // to call multiple times for the same frame, but it will simplify things. 975 // to call multiple times for the same frame, but it will simplify things.
964 Dump(render_view()->GetWebView()->mainFrame()); 976 Dump(render_view()->GetWebView()->mainFrame(), lofi_used);
965 } 977 }
966 978
967 void PageLoadHistograms::DidUpdateLayout() { 979 void PageLoadHistograms::DidUpdateLayout() {
968 DCHECK(content::RenderThread::Get()); 980 DCHECK(content::RenderThread::Get());
969 // Normally, PageLoadHistograms dumps all histograms in the FrameWillClose or 981 // Normally, PageLoadHistograms dumps all histograms in the FrameWillClose or
970 // ClosePage callbacks, which happen as a page is being torn down. However, 982 // ClosePage callbacks, which happen as a page is being torn down. However,
971 // renderers that are killed by fast shutdown (for example, renderers closed 983 // renderers that are killed by fast shutdown (for example, renderers closed
972 // due to the user closing a tab) don't get a chance to run these callbacks 984 // due to the user closing a tab) don't get a chance to run these callbacks
973 // (see crbug.com/382542 for details). 985 // (see crbug.com/382542 for details).
974 // 986 //
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 1028
1017 DCHECK(document_state); 1029 DCHECK(document_state);
1018 DCHECK(ds); 1030 DCHECK(ds);
1019 GURL url(ds->request().url()); 1031 GURL url(ds->request().url());
1020 Time start = document_state->start_load_time(); 1032 Time start = document_state->start_load_time();
1021 Time finish = document_state->finish_load_time(); 1033 Time finish = document_state->finish_load_time();
1022 // TODO(mbelshe): should we log more stats? 1034 // TODO(mbelshe): should we log more stats?
1023 VLOG(1) << "PLT: " << (finish - start).InMilliseconds() << "ms " 1035 VLOG(1) << "PLT: " << (finish - start).InMilliseconds() << "ms "
1024 << url.spec(); 1036 << url.spec();
1025 } 1037 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698