| Index: content/browser/loader/resource_scheduler.h
|
| diff --git a/content/browser/loader/resource_scheduler.h b/content/browser/loader/resource_scheduler.h
|
| index 64708ca7287c9c3869a627d14566d773a4cf9664..fa53c5b318f291d1d68a6054f4353d20958552b1 100644
|
| --- a/content/browser/loader/resource_scheduler.h
|
| +++ b/content/browser/loader/resource_scheduler.h
|
| @@ -11,7 +11,6 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/compiler_specific.h"
|
| -#include "base/containers/mru_cache.h"
|
| #include "base/memory/linked_ptr.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/threading/non_thread_safe.h"
|
| @@ -30,7 +29,8 @@ class ResourceThrottle;
|
| //
|
| // There are two types of input to the scheduler:
|
| // 1. Requests to start, cancel, or finish fetching a resource.
|
| -// 2. Notifications for renderer events, such as navigation and painting.
|
| +// 2. Notifications for renderer events, such as new tabs, navigation and
|
| +// painting.
|
| //
|
| // The ResourceScheduler tracks many Clients, which should correlate with tabs.
|
| // A client is uniquely identified by its child_id and route_id.
|
| @@ -45,10 +45,6 @@ class ResourceThrottle;
|
| // The scheduler may defer issuing the request via the ResourceThrottle
|
| // interface or it may alter the request's priority by calling set_priority() on
|
| // the URLRequest.
|
| -//
|
| -// The scheduler only tracks the most recently used Clients. If a tab hasn't
|
| -// navigated or fetched a resource for some time, its state may be forgotten
|
| -// until its next navigation. In such situations, no request throttling occurs.
|
| class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe {
|
| public:
|
| ResourceScheduler();
|
| @@ -60,6 +56,12 @@ class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe {
|
| scoped_ptr<ResourceThrottle> ScheduleRequest(
|
| int child_id, int route_id, net::URLRequest* url_request);
|
|
|
| + // Called when a renderer is created.
|
| + void OnClientCreated(int child_id, int route_id);
|
| +
|
| + // Called when a renderer is destroyed.
|
| + void OnClientDeleted(int child_id, int route_id);
|
| +
|
| // Called when a client navigates to a new main document.
|
| void OnNavigate(int child_id, int route_id);
|
|
|
| @@ -73,20 +75,17 @@ class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe {
|
| struct Client;
|
|
|
| typedef int64 ClientId;
|
| - typedef base::OwningMRUCache<ClientId, Client*> ClientMap;
|
| + typedef std::map<ClientId, Client*> ClientMap;
|
| typedef std::vector<ScheduledResourceRequest*> RequestQueue;
|
| typedef std::set<ScheduledResourceRequest*> RequestSet;
|
|
|
| struct Client {
|
| - Client(ResourceScheduler* scheduler);
|
| + Client();
|
| ~Client();
|
|
|
| bool has_body;
|
| RequestQueue pending_requests;
|
| RequestSet in_flight_requests;
|
| -
|
| - private:
|
| - ResourceScheduler* scheduler_;
|
| };
|
|
|
| // Called when a ScheduledResourceRequest is destroyed.
|
| @@ -98,9 +97,6 @@ class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe {
|
| // Calls StartRequest on all pending requests for |client|.
|
| void LoadPendingRequests(Client* client);
|
|
|
| - // Called when a Client is evicted from the MRUCache.
|
| - void RemoveClient(Client* client);
|
| -
|
| // Returns the client ID for the given |child_id| and |route_id| combo.
|
| ClientId MakeClientId(int child_id, int route_id);
|
|
|
|
|