Index: content/browser/loader/resource_dispatcher_host_impl.h |
diff --git a/content/browser/loader/resource_dispatcher_host_impl.h b/content/browser/loader/resource_dispatcher_host_impl.h |
index 648822822bc627cc3549f69ebe7d5a8a7d724206..45ad295333b7286c45d1c058152bb87d7fa83d00 100644 |
--- a/content/browser/loader/resource_dispatcher_host_impl.h |
+++ b/content/browser/loader/resource_dispatcher_host_impl.h |
@@ -30,6 +30,7 @@ |
#include "content/browser/loader/global_routing_id.h" |
#include "content/browser/loader/resource_loader.h" |
#include "content/browser/loader/resource_loader_delegate.h" |
+#include "content/browser/loader/resource_request_info_impl.h" |
#include "content/browser/loader/resource_scheduler.h" |
#include "content/common/content_export.h" |
#include "content/common/resource_request_body.h" |
@@ -342,15 +343,22 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl |
friend class ResourceMessageDelegate; |
// Information about status of a ResourceLoader. |
- struct LoadInfo { |
+ struct CONTENT_EXPORT LoadInfo { |
+ LoadInfo(); |
+ LoadInfo(const LoadInfo& info); |
+ ~LoadInfo(); |
+ |
GURL url; |
net::LoadStateWithParam load_state; |
uint64_t upload_position; |
uint64_t upload_size; |
+ |
+ // Associates the load with a web contents. |
+ ResourceRequestInfo::WebContentsGetter web_contents_getter; |
}; |
- // Map from ProcessID+RouteID pair to the "most interesting" LoadState. |
- typedef std::map<GlobalRoutingID, LoadInfo> LoadInfoMap; |
+ // Map from ProcessID+FrameRouteID pair to the "most interesting" LoadState. |
+ typedef std::map<GlobalFrameRoutingId, LoadInfo> LoadInfoMap; |
// ResourceLoaderDelegate implementation: |
ResourceDispatcherHostLoginDelegate* CreateLoginDelegate( |
@@ -449,10 +457,14 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl |
static bool LoadInfoIsMoreInteresting(const LoadInfo& a, const LoadInfo& b); |
// Used to marshal calls to LoadStateChanged from the IO to UI threads. All |
- // are done as a single callback to avoid spamming the UI thread. |
+ // are done as a single callback to avoid spamming the UI thread. Note that |
+ // GetLoadInfoForAllRoutes de-dupes based on frame, but not based on tab. |
+ // Thus, logic here also constructs a map and finds the most interesting load |
+ // state per WebContents. |
+ // static |
nasko
2016/06/02 22:04:21
No need for "// static" line here.
Charlie Harrison
2016/06/06 15:39:53
Done.
|
static void UpdateLoadInfoOnUIThread(std::unique_ptr<LoadInfoMap> info_map); |
- // Gets the most interesting LoadInfo for each GlobalRoutingID. |
+ // Gets the most interesting LoadInfo for each GlobalFrameRoutingID. |
std::unique_ptr<LoadInfoMap> GetLoadInfoForAllRoutes(); |
// Checks all pending requests and updates the load info if necessary. |