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

Side by Side Diff: chrome/browser/task_manager/task_manager.cc

Issue 6341006: Revert 72095 - Attribute orphaned or anonymous network usage to the Browser r... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/task_manager/task_manager.h" 5 #include "chrome/browser/task_manager/task_manager.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/i18n/number_formatting.h" 9 #include "base/i18n/number_formatting.h"
10 #include "base/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 // linking a network notification back to the object that initiated it. 838 // linking a network notification back to the object that initiated it.
839 TaskManager::Resource* resource = NULL; 839 TaskManager::Resource* resource = NULL;
840 for (ResourceProviderList::iterator iter = providers_.begin(); 840 for (ResourceProviderList::iterator iter = providers_.begin();
841 iter != providers_.end(); ++iter) { 841 iter != providers_.end(); ++iter) {
842 resource = (*iter)->GetResource(param.origin_child_id, 842 resource = (*iter)->GetResource(param.origin_child_id,
843 param.render_process_host_child_id, 843 param.render_process_host_child_id,
844 param.routing_id); 844 param.routing_id);
845 if (resource) 845 if (resource)
846 break; 846 break;
847 } 847 }
848
849 if (resource == NULL) { 848 if (resource == NULL) {
850 // We can't match a resource to the notification. That might mean the 849 // We may not have that resource anymore (example: close a tab while a
851 // tab that started a download was closed, or the request may have had 850 // a network resource is being retrieved), in which case we just ignore the
852 // no originating resource associated with it in the first place. 851 // notification.
853 // We attribute orphaned/unaccounted activity to the Browser process.
854 CHECK(param.origin_child_id != base::GetCurrentProcId());
855 param.origin_child_id = base::GetCurrentProcId();
856 param.render_process_host_child_id = param.routing_id = -1;
857 BytesRead(param);
858 return; 852 return;
859 } 853 }
860 854
861 // We do support network usage, mark the resource as such so it can report 0 855 // We do support network usage, mark the resource as such so it can report 0
862 // instead of N/A. 856 // instead of N/A.
863 if (!resource->SupportNetworkUsage()) 857 if (!resource->SupportNetworkUsage())
864 resource->SetSupportNetworkUsage(); 858 resource->SetSupportNetworkUsage();
865 859
866 ResourceValueMap::const_iterator iter_res = 860 ResourceValueMap::const_iterator iter_res =
867 current_byte_count_map_.find(resource); 861 current_byte_count_map_.find(resource);
(...skipping 18 matching lines...) Expand all
886 const net::URLRequestStatus& status) { 880 const net::URLRequestStatus& status) {
887 } 881 }
888 882
889 void TaskManagerModel::OnJobRedirect(net::URLRequestJob* job, 883 void TaskManagerModel::OnJobRedirect(net::URLRequestJob* job,
890 const GURL& location, 884 const GURL& location,
891 int status_code) { 885 int status_code) {
892 } 886 }
893 887
894 void TaskManagerModel::OnBytesRead(net::URLRequestJob* job, const char* buf, 888 void TaskManagerModel::OnBytesRead(net::URLRequestJob* job, const char* buf,
895 int byte_count) { 889 int byte_count) {
896 // Only net::URLRequestJob instances created by the ResourceDispatcherHost
897 // have a render view associated. All other jobs will have -1 returned for
898 // the render process child and routing ids - the jobs may still match a
899 // resource based on their origin id, otherwise BytesRead() will attribute
900 // the activity to the Browser resource.
901 int render_process_host_child_id = -1, routing_id = -1; 890 int render_process_host_child_id = -1, routing_id = -1;
902 ResourceDispatcherHost::RenderViewForRequest(job->request(), 891 if (!ResourceDispatcherHost::RenderViewForRequest(job->request(),
903 &render_process_host_child_id, 892 &render_process_host_child_id,
904 &routing_id); 893 &routing_id)) {
894 // Only net::URLRequestJob instances created by the ResourceDispatcherHost
895 // have a render view associated. Jobs from components such as the
896 // SearchProvider for autocomplete, have no associated view, so we can't
897 // correctly attribute the bandwidth they consume.
898 // TODO(wez): All jobs' resources should ideally be accountable, even if
899 // only by contributing to the Browser process' stats.
900 return;
901 }
905 902
906 // This happens in the IO thread, post it to the UI thread. 903 // This happens in the IO thread, post it to the UI thread.
907 int origin_child_id = 904 int origin_child_id =
908 chrome_browser_net::GetOriginProcessUniqueIDForRequest(job->request()); 905 chrome_browser_net::GetOriginProcessUniqueIDForRequest(job->request());
909 BrowserThread::PostTask( 906 BrowserThread::PostTask(
910 BrowserThread::UI, FROM_HERE, 907 BrowserThread::UI, FROM_HERE,
911 NewRunnableMethod( 908 NewRunnableMethod(
912 this, 909 this,
913 &TaskManagerModel::BytesRead, 910 &TaskManagerModel::BytesRead,
914 BytesReadParam(origin_child_id, 911 BytesReadParam(origin_child_id,
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
1037 MetricsMap::const_iterator iter = metrics_map_.find(handle); 1034 MetricsMap::const_iterator iter = metrics_map_.find(handle);
1038 if (iter == metrics_map_.end()) 1035 if (iter == metrics_map_.end())
1039 return false; 1036 return false;
1040 1037
1041 if (!iter->second->GetMemoryBytes(&usage->first, &usage->second)) 1038 if (!iter->second->GetMemoryBytes(&usage->first, &usage->second))
1042 return false; 1039 return false;
1043 1040
1044 memory_usage_map_.insert(std::make_pair(handle, *usage)); 1041 memory_usage_map_.insert(std::make_pair(handle, *usage));
1045 return true; 1042 return true;
1046 } 1043 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698