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

Unified Diff: content/browser/loader/resource_scheduler.h

Issue 465363003: ResourceScheduler get visual signal from RenderViewHostImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add VisualObserver Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698