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

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

Issue 465363003: ResourceScheduler get visual signal from RenderViewHostImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Do not throttle when should not 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
« no previous file with comments | « content/browser/loader/resource_scheduler.h ('k') | content/browser/loader/resource_scheduler_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/loader/resource_scheduler.cc
diff --git a/content/browser/loader/resource_scheduler.cc b/content/browser/loader/resource_scheduler.cc
index 85adbdb30e275631b53af88286e75b658e73a16c..234e7226f60de7b35e1e35380118d6f1d08a9168 100644
--- a/content/browser/loader/resource_scheduler.cc
+++ b/content/browser/loader/resource_scheduler.cc
@@ -230,9 +230,9 @@ void ResourceScheduler::RequestQueue::Insert(
// Each client represents a tab.
class ResourceScheduler::Client {
public:
- explicit Client(ResourceScheduler* scheduler)
+ explicit Client(ResourceScheduler* scheduler, bool is_visible)
: is_audible_(false),
- is_visible_(false),
+ is_visible_(is_visible),
is_loaded_(false),
is_paused_(false),
has_body_(false),
@@ -288,6 +288,8 @@ class ResourceScheduler::Client {
bool is_loaded() const { return is_loaded_; }
+ bool IsVisible() const { return is_visible_; }
+
void OnAudibilityChanged(bool is_audible) {
if (is_audible == is_audible_) {
return;
@@ -319,7 +321,9 @@ class ResourceScheduler::Client {
void UpdateThrottleState() {
ClientThrottleState old_throttle_state = throttle_state_;
- if (is_active() && !is_loaded_) {
+ if (!scheduler_->should_throttle()) {
+ SetThrottleState(UNTHROTTLED);
+ } else if (is_active() && !is_loaded_) {
SetThrottleState(ACTIVE_AND_LOADING);
} else if (is_active()) {
SetThrottleState(UNTHROTTLED);
@@ -731,12 +735,14 @@ void ResourceScheduler::RemoveRequest(ScheduledResourceRequest* request) {
client->RemoveRequest(request);
}
-void ResourceScheduler::OnClientCreated(int child_id, int route_id) {
+void ResourceScheduler::OnClientCreated(int child_id,
+ int route_id,
+ bool is_visible) {
DCHECK(CalledOnValidThread());
ClientId client_id = MakeClientId(child_id, route_id);
DCHECK(!ContainsKey(client_map_, client_id));
- Client* client = new Client(this);
+ Client* client = new Client(this, is_visible);
client_map_[client_id] = client;
// TODO(aiolos): set Client visibility/audibility when signals are added
@@ -833,6 +839,12 @@ void ResourceScheduler::OnLoadingStateChanged(int child_id,
client->OnLoadingStateChanged(is_loaded);
}
+bool ResourceScheduler::IsClientVisibleForTesting(int child_id, int route_id) {
+ Client* client = GetClient(child_id, route_id);
+ DCHECK(client);
+ return client->IsVisible();
+}
+
ResourceScheduler::Client* ResourceScheduler::GetClient(int child_id,
int route_id) {
ClientId client_id = MakeClientId(child_id, route_id);
« no previous file with comments | « content/browser/loader/resource_scheduler.h ('k') | content/browser/loader/resource_scheduler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698