| Index: content/browser/loader/resource_scheduler.h
|
| diff --git a/content/browser/loader/resource_scheduler.h b/content/browser/loader/resource_scheduler.h
|
| index 74ac16d3d42be6fa23f226b134817d030364d3c1..d8bb2c6a2a5473bf5e762f42cbbbae68fdb707ff 100644
|
| --- a/content/browser/loader/resource_scheduler.h
|
| +++ b/content/browser/loader/resource_scheduler.h
|
| @@ -13,6 +13,7 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/threading/non_thread_safe.h"
|
| #include "base/timer/timer.h"
|
| +#include "content/browser/web_contents/web_contents_impl.h"
|
| #include "content/common/content_export.h"
|
| #include "net/base/priority_queue.h"
|
| #include "net/base/request_priority.h"
|
| @@ -81,6 +82,14 @@ class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe {
|
| ResourceScheduler();
|
| ~ResourceScheduler();
|
|
|
| + // VisualObserver observes WebContents and lives on the UI thread. It notifies
|
| + // the client about the visibility change. Each VisualObserver corresponds to
|
| + // one and only one Client. The VisualObserver will be deleted when the client
|
| + // is destructed.
|
| + class VisualObserver;
|
| + VisualObserver* CreateVisualObserver(WebContentsImpl* web_content);
|
| + void DeleteVisualObserver(VisualObserver* observer);
|
| +
|
| // Use a mock timer when testing.
|
| void set_timer_for_testing(scoped_ptr<base::Timer> timer) {
|
| coalescing_timer_.reset(timer.release());
|
| @@ -103,9 +112,13 @@ class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe {
|
| // Signals from the UI thread, posted as tasks on the IO thread:
|
|
|
| // Called when a renderer is created.
|
| - void OnClientCreated(int child_id, int route_id);
|
| + void OnClientCreated(int child_id,
|
| + int route_id,
|
| + VisualObserver* visual_observer,
|
| + bool is_visible);
|
|
|
| - // Called when a renderer is destroyed.
|
| + // Called when a renderer is destroyed. It will also delete the corresponding
|
| + // VisualObserver in turn.
|
| void OnClientDeleted(int child_id, int route_id);
|
|
|
| // Signals from IPC messages directly from the renderers:
|
| @@ -131,11 +144,10 @@ class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe {
|
| // Called when a Client starts or stops playing audio.
|
| void OnAudibilityChanged(int child_id, int route_id, bool is_audible);
|
|
|
| - // Called when a Client is shown or hidden.
|
| - void OnVisibilityChanged(int child_id, int route_id, bool is_visible);
|
| -
|
| void OnLoadingStateChanged(int child_id, int route_id, bool is_loaded);
|
|
|
| + bool IsClientVisibleForTesting(int child_id, int route_id);
|
| +
|
| private:
|
| class RequestQueue;
|
| class ScheduledResourceRequest;
|
|
|