OLD | NEW |
---|---|
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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading | 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading |
6 | 6 |
7 #include "content/child/resource_dispatcher.h" | 7 #include "content/child/resource_dispatcher.h" |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
778 RemoteToLocalTimeTicks(converter, &load_timing->proxy_resolve_end); | 778 RemoteToLocalTimeTicks(converter, &load_timing->proxy_resolve_end); |
779 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.dns_start); | 779 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.dns_start); |
780 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.dns_end); | 780 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.dns_end); |
781 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.connect_start); | 781 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.connect_start); |
782 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.connect_end); | 782 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.connect_end); |
783 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.ssl_start); | 783 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.ssl_start); |
784 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.ssl_end); | 784 RemoteToLocalTimeTicks(converter, &load_timing->connect_timing.ssl_end); |
785 RemoteToLocalTimeTicks(converter, &load_timing->send_start); | 785 RemoteToLocalTimeTicks(converter, &load_timing->send_start); |
786 RemoteToLocalTimeTicks(converter, &load_timing->send_end); | 786 RemoteToLocalTimeTicks(converter, &load_timing->send_end); |
787 RemoteToLocalTimeTicks(converter, &load_timing->receive_headers_end); | 787 RemoteToLocalTimeTicks(converter, &load_timing->receive_headers_end); |
788 | |
789 // Collect UMA on the inter-process skew. | |
790 if (converter.IsSkewAdditiveForMetrics()) { | |
791 UMA_HISTOGRAM_BOOLEAN( | |
792 "InterProcessTimeTicks.IsSkewAdditive_BrowserToRenderer", true); | |
Alexei Svitkine (slow)
2014/08/15 16:54:33
Nit: Extract the if condition outside the if into
ppi
2014/08/18 09:29:04
Done.
| |
793 base::TimeDelta skew = converter.GetSkewForMetrics(); | |
794 if (skew >= base::TimeDelta()) { | |
795 UMA_HISTOGRAM_TIMES( | |
796 "InterProcessTimeTicks.BrowserAhead_BrowserToRenderer", skew); | |
797 } else { | |
798 UMA_HISTOGRAM_TIMES( | |
799 "InterProcessTimeTicks.BrowserBehind_BrowserToRenderer", -skew); | |
800 } | |
801 } else { | |
802 UMA_HISTOGRAM_BOOLEAN( | |
803 "InterProcessTimeTicks.IsSkewAdditive_BrowserToRenderer", false); | |
804 } | |
788 } | 805 } |
789 | 806 |
790 base::TimeTicks ResourceDispatcher::ToRendererCompletionTime( | 807 base::TimeTicks ResourceDispatcher::ToRendererCompletionTime( |
791 const PendingRequestInfo& request_info, | 808 const PendingRequestInfo& request_info, |
792 const base::TimeTicks& browser_completion_time) const { | 809 const base::TimeTicks& browser_completion_time) const { |
793 if (request_info.completion_time.is_null()) { | 810 if (request_info.completion_time.is_null()) { |
794 return browser_completion_time; | 811 return browser_completion_time; |
795 } | 812 } |
796 | 813 |
797 // TODO(simonjam): The optimal lower bound should be the most recent value of | 814 // TODO(simonjam): The optimal lower bound should be the most recent value of |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
860 void ResourceDispatcher::ReleaseResourcesInMessageQueue(MessageQueue* queue) { | 877 void ResourceDispatcher::ReleaseResourcesInMessageQueue(MessageQueue* queue) { |
861 while (!queue->empty()) { | 878 while (!queue->empty()) { |
862 IPC::Message* message = queue->front(); | 879 IPC::Message* message = queue->front(); |
863 ReleaseResourcesInDataMessage(*message); | 880 ReleaseResourcesInDataMessage(*message); |
864 queue->pop_front(); | 881 queue->pop_front(); |
865 delete message; | 882 delete message; |
866 } | 883 } |
867 } | 884 } |
868 | 885 |
869 } // namespace content | 886 } // namespace content |
OLD | NEW |