Chromium Code Reviews| 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. |