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

Side by Side Diff: content/browser/loader/resource_scheduler_unittest.cc

Issue 562273008: Add audio signal to the ResourceScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/loader/resource_scheduler.h" 5 #include "content/browser/loader/resource_scheduler.h"
6 6
7 #include "base/memory/scoped_vector.h" 7 #include "base/memory/scoped_vector.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/timer/mock_timer.h" 11 #include "base/timer/mock_timer.h"
12 #include "base/timer/timer.h" 12 #include "base/timer/timer.h"
13 #include "content/browser/browser_thread_impl.h" 13 #include "content/browser/browser_thread_impl.h"
14 #include "content/browser/loader/resource_dispatcher_host_impl.h" 14 #include "content/browser/loader/resource_dispatcher_host_impl.h"
15 #include "content/browser/loader/resource_message_filter.h" 15 #include "content/browser/loader/resource_message_filter.h"
16 #include "content/browser/loader/resource_request_info_impl.h" 16 #include "content/browser/loader/resource_request_info_impl.h"
17 #include "content/common/resource_messages.h" 17 #include "content/common/resource_messages.h"
18 #include "content/public/browser/resource_context.h" 18 #include "content/public/browser/resource_context.h"
19 #include "content/public/browser/resource_controller.h" 19 #include "content/public/browser/resource_controller.h"
20 #include "content/public/browser/resource_throttle.h" 20 #include "content/public/browser/resource_throttle.h"
21 #include "content/public/common/process_type.h" 21 #include "content/public/common/process_type.h"
22 #include "content/public/common/resource_type.h" 22 #include "content/public/common/resource_type.h"
23 #include "content/public/test/mock_render_process_host.h" 23 #include "content/public/test/mock_render_process_host.h"
24 #include "content/public/test/test_browser_context.h" 24 #include "content/public/test/test_browser_context.h"
25 #include "content/test/test_render_view_host_factory.h"
25 #include "content/test/test_web_contents.h" 26 #include "content/test/test_web_contents.h"
26 #include "net/base/host_port_pair.h" 27 #include "net/base/host_port_pair.h"
27 #include "net/base/request_priority.h" 28 #include "net/base/request_priority.h"
28 #include "net/http/http_server_properties_impl.h" 29 #include "net/http/http_server_properties_impl.h"
29 #include "net/url_request/url_request.h" 30 #include "net/url_request/url_request.h"
30 #include "net/url_request/url_request_test_util.h" 31 #include "net/url_request/url_request_test_util.h"
31 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
32 #include "ui/events/latency_info.h" 33 #include "ui/events/latency_info.h"
33 34
34 namespace content { 35 namespace content {
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 : next_request_id_(0), 143 : next_request_id_(0),
143 ui_thread_(BrowserThread::UI, &message_loop_), 144 ui_thread_(BrowserThread::UI, &message_loop_),
144 io_thread_(BrowserThread::IO, &message_loop_), 145 io_thread_(BrowserThread::IO, &message_loop_),
145 mock_timer_(new base::MockTimer(true, true)) { 146 mock_timer_(new base::MockTimer(true, true)) {
146 scheduler_.set_timer_for_testing(scoped_ptr<base::Timer>(mock_timer_)); 147 scheduler_.set_timer_for_testing(scoped_ptr<base::Timer>(mock_timer_));
147 148
148 // TODO(aiolos): Remove when throttling and coalescing have both landed. 149 // TODO(aiolos): Remove when throttling and coalescing have both landed.
149 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 150 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
150 false /* should_coalesce */); 151 false /* should_coalesce */);
151 152
152 scheduler_.OnClientCreated(kChildId, kRouteId, true); 153 scheduler_.OnClientCreated(kChildId, kRouteId, true, false);
153 scheduler_.OnClientCreated(kBackgroundChildId, kBackgroundRouteId, false); 154 scheduler_.OnClientCreated(
155 kBackgroundChildId, kBackgroundRouteId, false, false);
154 context_.set_http_server_properties(http_server_properties_.GetWeakPtr()); 156 context_.set_http_server_properties(http_server_properties_.GetWeakPtr());
155 } 157 }
156 158
157 virtual ~ResourceSchedulerTest() { 159 virtual ~ResourceSchedulerTest() {
158 scheduler_.OnClientDeleted(kChildId, kRouteId); 160 scheduler_.OnClientDeleted(kChildId, kRouteId);
159 scheduler_.OnClientDeleted(kBackgroundChildId, kBackgroundRouteId); 161 scheduler_.OnClientDeleted(kBackgroundChildId, kBackgroundRouteId);
160 } 162 }
161 163
162 scoped_ptr<net::URLRequest> NewURLRequestWithChildAndRoute( 164 scoped_ptr<net::URLRequest> NewURLRequestWithChildAndRoute(
163 const char* url, 165 const char* url,
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 ChangeRequestPriority(low2_spdy.get(), net::LOWEST); 656 ChangeRequestPriority(low2_spdy.get(), net::LOWEST);
655 scoped_ptr<TestRequest> low2(NewRequest("http://host/low", net::LOWEST)); 657 scoped_ptr<TestRequest> low2(NewRequest("http://host/low", net::LOWEST));
656 EXPECT_TRUE(low2->started()); 658 EXPECT_TRUE(low2->started());
657 } 659 }
658 660
659 TEST_F(ResourceSchedulerTest, ThrottledClientCreation) { 661 TEST_F(ResourceSchedulerTest, ThrottledClientCreation) {
660 // TODO(aiolos): remove when throttling and coalescing have both landed 662 // TODO(aiolos): remove when throttling and coalescing have both landed
661 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 663 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
662 false /* should_coalesce */); 664 false /* should_coalesce */);
663 EXPECT_TRUE(scheduler_.should_throttle()); 665 EXPECT_TRUE(scheduler_.should_throttle());
664 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 666 scheduler_.OnClientCreated(
667 kBackgroundChildId2, kBackgroundRouteId2, false, false);
665 668
666 EXPECT_EQ(ResourceScheduler::THROTTLED, 669 EXPECT_EQ(ResourceScheduler::THROTTLED,
667 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 670 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
668 kBackgroundRouteId2)); 671 kBackgroundRouteId2));
669 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 672 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
670 } 673 }
671 674
672 TEST_F(ResourceSchedulerTest, ActiveClientThrottleUpdateOnLoadingChange) { 675 TEST_F(ResourceSchedulerTest, ActiveClientThrottleUpdateOnLoadingChange) {
673 // TODO(aiolos): remove when throttling and coalescing have both landed 676 // TODO(aiolos): remove when throttling and coalescing have both landed
674 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 677 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 EXPECT_EQ(ResourceScheduler::UNTHROTTLED, 1041 EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
1039 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1042 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1040 kBackgroundRouteId)); 1043 kBackgroundRouteId));
1041 } 1044 }
1042 1045
1043 TEST_F(ResourceSchedulerTest, 1046 TEST_F(ResourceSchedulerTest,
1044 UnloadedClientVisibilityChangedCorrectlyUnthrottles) { 1047 UnloadedClientVisibilityChangedCorrectlyUnthrottles) {
1045 // TODO(aiolos): remove when throttling and coalescing have both landed 1048 // TODO(aiolos): remove when throttling and coalescing have both landed
1046 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1049 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1047 false /* should_coalesce */); 1050 false /* should_coalesce */);
1048 scheduler_.OnClientCreated(kChildId2, kRouteId2, false); 1051 scheduler_.OnClientCreated(kChildId2, kRouteId2, false, false);
1049 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1052 scheduler_.OnClientCreated(
1053 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1050 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true); 1054 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
1051 scheduler_.OnLoadingStateChanged( 1055 scheduler_.OnLoadingStateChanged(
1052 kBackgroundChildId2, kBackgroundRouteId2, true); 1056 kBackgroundChildId2, kBackgroundRouteId2, true);
1053 1057
1054 // 1 visible, 3 hidden 1058 // 1 visible, 3 hidden
1055 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1059 EXPECT_FALSE(scheduler_.active_clients_loaded());
1056 EXPECT_EQ(ResourceScheduler::THROTTLED, 1060 EXPECT_EQ(ResourceScheduler::THROTTLED,
1057 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1061 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1058 kBackgroundRouteId)); 1062 kBackgroundRouteId));
1059 EXPECT_EQ(ResourceScheduler::THROTTLED, 1063 EXPECT_EQ(ResourceScheduler::THROTTLED,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 1098
1095 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1099 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1096 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1100 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1097 } 1101 }
1098 1102
1099 TEST_F(ResourceSchedulerTest, 1103 TEST_F(ResourceSchedulerTest,
1100 UnloadedClientAudibilityChangedCorrectlyUnthrottles) { 1104 UnloadedClientAudibilityChangedCorrectlyUnthrottles) {
1101 // TODO(aiolos): remove when throttling and coalescing have both landed 1105 // TODO(aiolos): remove when throttling and coalescing have both landed
1102 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1106 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1103 false /* should_coalesce */); 1107 false /* should_coalesce */);
1104 scheduler_.OnClientCreated(kChildId2, kRouteId2, false); 1108 scheduler_.OnClientCreated(kChildId2, kRouteId2, false, false);
1105 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1109 scheduler_.OnClientCreated(
1110 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1106 scheduler_.OnLoadingStateChanged( 1111 scheduler_.OnLoadingStateChanged(
1107 kBackgroundChildId2, kBackgroundRouteId2, true); 1112 kBackgroundChildId2, kBackgroundRouteId2, true);
1108 scheduler_.OnVisibilityChanged(kChildId, kRouteId, false); 1113 scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
1109 scheduler_.OnAudibilityChanged(kChildId, kRouteId, true); 1114 scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
1110 1115
1111 // 1 audible, 3 hidden 1116 // 1 audible, 3 hidden
1112 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1117 EXPECT_FALSE(scheduler_.active_clients_loaded());
1113 EXPECT_EQ(ResourceScheduler::THROTTLED, 1118 EXPECT_EQ(ResourceScheduler::THROTTLED,
1114 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1119 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1115 kBackgroundRouteId)); 1120 kBackgroundRouteId));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 1156
1152 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1157 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1153 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1158 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1154 } 1159 }
1155 1160
1156 TEST_F(ResourceSchedulerTest, 1161 TEST_F(ResourceSchedulerTest,
1157 LoadedClientVisibilityChangedCorrectlyUnthrottles) { 1162 LoadedClientVisibilityChangedCorrectlyUnthrottles) {
1158 // TODO(aiolos): remove when throttling and coalescing have both landed 1163 // TODO(aiolos): remove when throttling and coalescing have both landed
1159 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1164 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1160 false /* should_coalesce */); 1165 false /* should_coalesce */);
1161 scheduler_.OnClientCreated(kChildId2, kRouteId2, false); 1166 scheduler_.OnClientCreated(kChildId2, kRouteId2, false, false);
1162 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1167 scheduler_.OnClientCreated(
1168 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1163 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true); 1169 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
1164 scheduler_.OnLoadingStateChanged( 1170 scheduler_.OnLoadingStateChanged(
1165 kBackgroundChildId2, kBackgroundRouteId2, true); 1171 kBackgroundChildId2, kBackgroundRouteId2, true);
1166 // 1 visible, 3 hidden 1172 // 1 visible, 3 hidden
1167 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1173 EXPECT_FALSE(scheduler_.active_clients_loaded());
1168 EXPECT_EQ(ResourceScheduler::THROTTLED, 1174 EXPECT_EQ(ResourceScheduler::THROTTLED,
1169 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1175 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1170 kBackgroundRouteId)); 1176 kBackgroundRouteId));
1171 EXPECT_EQ(ResourceScheduler::THROTTLED, 1177 EXPECT_EQ(ResourceScheduler::THROTTLED,
1172 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 1178 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1206 1212
1207 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1213 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1208 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1214 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1209 } 1215 }
1210 1216
1211 TEST_F(ResourceSchedulerTest, 1217 TEST_F(ResourceSchedulerTest,
1212 LoadedClientAudibilityChangedCorrectlyUnthrottles) { 1218 LoadedClientAudibilityChangedCorrectlyUnthrottles) {
1213 // TODO(aiolos): remove when throttling and coalescing have both landed 1219 // TODO(aiolos): remove when throttling and coalescing have both landed
1214 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1220 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1215 false /* should_coalesce */); 1221 false /* should_coalesce */);
1216 scheduler_.OnClientCreated(kChildId2, kRouteId2, false); 1222 scheduler_.OnClientCreated(kChildId2, kRouteId2, false, false);
1217 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1223 scheduler_.OnClientCreated(
1224 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1218 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true); 1225 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
1219 scheduler_.OnLoadingStateChanged( 1226 scheduler_.OnLoadingStateChanged(
1220 kBackgroundChildId2, kBackgroundRouteId2, true); 1227 kBackgroundChildId2, kBackgroundRouteId2, true);
1221 scheduler_.OnVisibilityChanged(kChildId, kRouteId, false); 1228 scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
1222 scheduler_.OnAudibilityChanged(kChildId, kRouteId, true); 1229 scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
1223 // 1 audible, 3 hidden 1230 // 1 audible, 3 hidden
1224 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1231 EXPECT_FALSE(scheduler_.active_clients_loaded());
1225 EXPECT_EQ(ResourceScheduler::THROTTLED, 1232 EXPECT_EQ(ResourceScheduler::THROTTLED,
1226 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1233 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1227 kBackgroundRouteId)); 1234 kBackgroundRouteId));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 scheduler_.GetClientStateForTesting(kChildId, kRouteId)); 1269 scheduler_.GetClientStateForTesting(kChildId, kRouteId));
1263 1270
1264 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1271 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1265 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1272 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1266 } 1273 }
1267 1274
1268 TEST_F(ResourceSchedulerTest, UnloadedClientBecomesHiddenCorrectlyUnthrottles) { 1275 TEST_F(ResourceSchedulerTest, UnloadedClientBecomesHiddenCorrectlyUnthrottles) {
1269 // TODO(aiolos): remove when throttling and coalescing have both landed 1276 // TODO(aiolos): remove when throttling and coalescing have both landed
1270 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1277 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1271 false /* should_coalesce */); 1278 false /* should_coalesce */);
1272 scheduler_.OnClientCreated(kChildId2, kRouteId2, true); 1279 scheduler_.OnClientCreated(kChildId2, kRouteId2, true, false);
1273 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1280 scheduler_.OnClientCreated(
1281 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1274 scheduler_.OnLoadingStateChanged( 1282 scheduler_.OnLoadingStateChanged(
1275 kBackgroundChildId2, kBackgroundRouteId2, true); 1283 kBackgroundChildId2, kBackgroundRouteId2, true);
1276 1284
1277 // 2 visible, 2 hidden 1285 // 2 visible, 2 hidden
1278 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1286 EXPECT_FALSE(scheduler_.active_clients_loaded());
1279 EXPECT_EQ(ResourceScheduler::THROTTLED, 1287 EXPECT_EQ(ResourceScheduler::THROTTLED,
1280 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1288 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1281 kBackgroundRouteId)); 1289 kBackgroundRouteId));
1282 EXPECT_EQ(ResourceScheduler::THROTTLED, 1290 EXPECT_EQ(ResourceScheduler::THROTTLED,
1283 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 1291 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 scheduler_.GetClientStateForTesting(kChildId, kRouteId)); 1338 scheduler_.GetClientStateForTesting(kChildId, kRouteId));
1331 1339
1332 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1340 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1333 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1341 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1334 } 1342 }
1335 1343
1336 TEST_F(ResourceSchedulerTest, UnloadedClientBecomesSilentCorrectlyUnthrottles) { 1344 TEST_F(ResourceSchedulerTest, UnloadedClientBecomesSilentCorrectlyUnthrottles) {
1337 // TODO(aiolos): remove when throttling and coalescing have both landed 1345 // TODO(aiolos): remove when throttling and coalescing have both landed
1338 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1346 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1339 false /* should_coalesce */); 1347 false /* should_coalesce */);
1340 scheduler_.OnClientCreated(kChildId2, kRouteId2, false); 1348 scheduler_.OnClientCreated(kChildId2, kRouteId2, false, true);
1341 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1349 scheduler_.OnClientCreated(
1350 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1342 scheduler_.OnLoadingStateChanged( 1351 scheduler_.OnLoadingStateChanged(
1343 kBackgroundChildId2, kBackgroundRouteId2, true); 1352 kBackgroundChildId2, kBackgroundRouteId2, true);
1344 scheduler_.OnAudibilityChanged(kChildId, kRouteId, true); 1353 scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
1345 scheduler_.OnVisibilityChanged(kChildId, kRouteId, false); 1354 scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
1346 scheduler_.OnAudibilityChanged(kChildId2, kRouteId2, true);
1347 // 2 audible, 2 hidden 1355 // 2 audible, 2 hidden
1348 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1356 EXPECT_FALSE(scheduler_.active_clients_loaded());
1349 EXPECT_EQ(ResourceScheduler::THROTTLED, 1357 EXPECT_EQ(ResourceScheduler::THROTTLED,
1350 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1358 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1351 kBackgroundRouteId)); 1359 kBackgroundRouteId));
1352 EXPECT_EQ(ResourceScheduler::THROTTLED, 1360 EXPECT_EQ(ResourceScheduler::THROTTLED,
1353 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 1361 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
1354 kBackgroundRouteId2)); 1362 kBackgroundRouteId2));
1355 EXPECT_EQ(ResourceScheduler::ACTIVE_AND_LOADING, 1363 EXPECT_EQ(ResourceScheduler::ACTIVE_AND_LOADING,
1356 scheduler_.GetClientStateForTesting(kChildId2, kRouteId2)); 1364 scheduler_.GetClientStateForTesting(kChildId2, kRouteId2));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1400 scheduler_.GetClientStateForTesting(kChildId, kRouteId)); 1408 scheduler_.GetClientStateForTesting(kChildId, kRouteId));
1401 1409
1402 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1410 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1403 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1411 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1404 } 1412 }
1405 1413
1406 TEST_F(ResourceSchedulerTest, LoadedClientBecomesHiddenCorrectlyThrottles) { 1414 TEST_F(ResourceSchedulerTest, LoadedClientBecomesHiddenCorrectlyThrottles) {
1407 // TODO(aiolos): remove when throttling and coalescing have both landed 1415 // TODO(aiolos): remove when throttling and coalescing have both landed
1408 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1416 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1409 false /* should_coalesce */); 1417 false /* should_coalesce */);
1410 scheduler_.OnClientCreated(kChildId2, kRouteId2, true); 1418 scheduler_.OnClientCreated(kChildId2, kRouteId2, true, false);
1411 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1419 scheduler_.OnClientCreated(
1420 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1412 scheduler_.OnLoadingStateChanged( 1421 scheduler_.OnLoadingStateChanged(
1413 kBackgroundChildId2, kBackgroundRouteId2, true); 1422 kBackgroundChildId2, kBackgroundRouteId2, true);
1414 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true); 1423 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
1415 // 2 visible, 2 hidden 1424 // 2 visible, 2 hidden
1416 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1425 EXPECT_FALSE(scheduler_.active_clients_loaded());
1417 EXPECT_EQ(ResourceScheduler::THROTTLED, 1426 EXPECT_EQ(ResourceScheduler::THROTTLED,
1418 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1427 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1419 kBackgroundRouteId)); 1428 kBackgroundRouteId));
1420 EXPECT_EQ(ResourceScheduler::THROTTLED, 1429 EXPECT_EQ(ResourceScheduler::THROTTLED,
1421 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 1430 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 scheduler_.GetClientStateForTesting(kChildId, kRouteId)); 1477 scheduler_.GetClientStateForTesting(kChildId, kRouteId));
1469 1478
1470 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1479 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1471 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1480 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1472 } 1481 }
1473 1482
1474 TEST_F(ResourceSchedulerTest, LoadedClientBecomesSilentCorrectlyThrottles) { 1483 TEST_F(ResourceSchedulerTest, LoadedClientBecomesSilentCorrectlyThrottles) {
1475 // TODO(aiolos): remove when throttling and coalescing have both landed 1484 // TODO(aiolos): remove when throttling and coalescing have both landed
1476 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1485 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1477 false /* should_coalesce */); 1486 false /* should_coalesce */);
1478 scheduler_.OnClientCreated(kChildId2, kRouteId2, false); 1487 scheduler_.OnClientCreated(kChildId2, kRouteId2, false, true);
1479 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1488 scheduler_.OnClientCreated(
1489 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1480 scheduler_.OnLoadingStateChanged( 1490 scheduler_.OnLoadingStateChanged(
1481 kBackgroundChildId2, kBackgroundRouteId2, true); 1491 kBackgroundChildId2, kBackgroundRouteId2, true);
1482 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true); 1492 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
1483 scheduler_.OnVisibilityChanged(kChildId, kRouteId, false); 1493 scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
1484 scheduler_.OnAudibilityChanged(kChildId, kRouteId, true); 1494 scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
1485 scheduler_.OnAudibilityChanged(kChildId2, kRouteId2, true);
1486 // 2 audible, 2 hidden 1495 // 2 audible, 2 hidden
1487 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1496 EXPECT_FALSE(scheduler_.active_clients_loaded());
1488 EXPECT_EQ(ResourceScheduler::THROTTLED, 1497 EXPECT_EQ(ResourceScheduler::THROTTLED,
1489 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1498 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1490 kBackgroundRouteId)); 1499 kBackgroundRouteId));
1491 EXPECT_EQ(ResourceScheduler::THROTTLED, 1500 EXPECT_EQ(ResourceScheduler::THROTTLED,
1492 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 1501 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
1493 kBackgroundRouteId2)); 1502 kBackgroundRouteId2));
1494 EXPECT_EQ(ResourceScheduler::UNTHROTTLED, 1503 EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
1495 scheduler_.GetClientStateForTesting(kChildId2, kRouteId2)); 1504 scheduler_.GetClientStateForTesting(kChildId2, kRouteId2));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1539 scheduler_.GetClientStateForTesting(kChildId, kRouteId)); 1548 scheduler_.GetClientStateForTesting(kChildId, kRouteId));
1540 1549
1541 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1550 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1542 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1551 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1543 } 1552 }
1544 1553
1545 TEST_F(ResourceSchedulerTest, HiddenLoadedChangesCorrectlyStayThrottled) { 1554 TEST_F(ResourceSchedulerTest, HiddenLoadedChangesCorrectlyStayThrottled) {
1546 // TODO(aiolos): remove when throttling and coalescing have both landed 1555 // TODO(aiolos): remove when throttling and coalescing have both landed
1547 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1556 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1548 false /* should_coalesce */); 1557 false /* should_coalesce */);
1549 scheduler_.OnClientCreated(kChildId2, kRouteId2, true); 1558 scheduler_.OnClientCreated(kChildId2, kRouteId2, true, false);
1550 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1559 scheduler_.OnClientCreated(
1560 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1551 1561
1552 // 1 visible and 2 hidden loading, 1 visible loaded 1562 // 1 visible and 2 hidden loading, 1 visible loaded
1553 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true); 1563 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
1554 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1564 EXPECT_FALSE(scheduler_.active_clients_loaded());
1555 EXPECT_EQ(ResourceScheduler::THROTTLED, 1565 EXPECT_EQ(ResourceScheduler::THROTTLED,
1556 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1566 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1557 kBackgroundRouteId)); 1567 kBackgroundRouteId));
1558 EXPECT_EQ(ResourceScheduler::THROTTLED, 1568 EXPECT_EQ(ResourceScheduler::THROTTLED,
1559 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 1569 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
1560 kBackgroundRouteId2)); 1570 kBackgroundRouteId2));
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1609 scheduler_.GetClientStateForTesting(kChildId, kRouteId)); 1619 scheduler_.GetClientStateForTesting(kChildId, kRouteId));
1610 1620
1611 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1621 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1612 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1622 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1613 } 1623 }
1614 1624
1615 TEST_F(ResourceSchedulerTest, PartialVisibleClientLoadedDoesNotUnthrottle) { 1625 TEST_F(ResourceSchedulerTest, PartialVisibleClientLoadedDoesNotUnthrottle) {
1616 // TODO(aiolos): remove when throttling and coalescing have both landed 1626 // TODO(aiolos): remove when throttling and coalescing have both landed
1617 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1627 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1618 false /* should_coalesce */); 1628 false /* should_coalesce */);
1619 scheduler_.OnClientCreated(kChildId2, kRouteId2, true); 1629 scheduler_.OnClientCreated(kChildId2, kRouteId2, true, false);
1620 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1630 scheduler_.OnClientCreated(
1631 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1621 1632
1622 // 2 visible loading, 1 hidden loading, 1 hidden loaded 1633 // 2 visible loading, 1 hidden loading, 1 hidden loaded
1623 scheduler_.OnLoadingStateChanged( 1634 scheduler_.OnLoadingStateChanged(
1624 kBackgroundChildId2, kBackgroundRouteId2, true); 1635 kBackgroundChildId2, kBackgroundRouteId2, true);
1625 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1636 EXPECT_FALSE(scheduler_.active_clients_loaded());
1626 EXPECT_EQ(ResourceScheduler::THROTTLED, 1637 EXPECT_EQ(ResourceScheduler::THROTTLED,
1627 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1638 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1628 kBackgroundRouteId)); 1639 kBackgroundRouteId));
1629 EXPECT_EQ(ResourceScheduler::THROTTLED, 1640 EXPECT_EQ(ResourceScheduler::THROTTLED,
1630 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 1641 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1663 scheduler_.GetClientStateForTesting(kChildId, kRouteId)); 1674 scheduler_.GetClientStateForTesting(kChildId, kRouteId));
1664 1675
1665 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1676 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1666 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1677 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1667 } 1678 }
1668 1679
1669 TEST_F(ResourceSchedulerTest, FullVisibleLoadedCorrectlyUnthrottle) { 1680 TEST_F(ResourceSchedulerTest, FullVisibleLoadedCorrectlyUnthrottle) {
1670 // TODO(aiolos): remove when throttling and coalescing have both landed 1681 // TODO(aiolos): remove when throttling and coalescing have both landed
1671 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1682 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1672 false /* should_coalesce */); 1683 false /* should_coalesce */);
1673 scheduler_.OnClientCreated(kChildId2, kRouteId2, true); 1684 scheduler_.OnClientCreated(kChildId2, kRouteId2, true, false);
1674 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1685 scheduler_.OnClientCreated(
1686 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1675 1687
1676 // 1 visible and 1 hidden loaded, 1 visible and 1 hidden loading 1688 // 1 visible and 1 hidden loaded, 1 visible and 1 hidden loading
1677 scheduler_.OnLoadingStateChanged( 1689 scheduler_.OnLoadingStateChanged(
1678 kBackgroundChildId2, kBackgroundRouteId2, true); 1690 kBackgroundChildId2, kBackgroundRouteId2, true);
1679 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true); 1691 scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
1680 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1692 EXPECT_FALSE(scheduler_.active_clients_loaded());
1681 EXPECT_EQ(ResourceScheduler::THROTTLED, 1693 EXPECT_EQ(ResourceScheduler::THROTTLED,
1682 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1694 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1683 kBackgroundRouteId)); 1695 kBackgroundRouteId));
1684 EXPECT_EQ(ResourceScheduler::THROTTLED, 1696 EXPECT_EQ(ResourceScheduler::THROTTLED,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1729 1741
1730 scheduler_.OnClientDeleted(kChildId2, kRouteId2); 1742 scheduler_.OnClientDeleted(kChildId2, kRouteId2);
1731 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1743 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1732 } 1744 }
1733 1745
1734 TEST_F(ResourceSchedulerTest, 1746 TEST_F(ResourceSchedulerTest,
1735 ActiveAndLoadingClientDeletedCorrectlyUnthrottle) { 1747 ActiveAndLoadingClientDeletedCorrectlyUnthrottle) {
1736 // TODO(aiolos): remove when throttling and coalescing have both landed 1748 // TODO(aiolos): remove when throttling and coalescing have both landed
1737 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1749 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1738 false /* should_coalesce */); 1750 false /* should_coalesce */);
1739 scheduler_.OnClientCreated(kChildId2, kRouteId2, true); 1751 scheduler_.OnClientCreated(kChildId2, kRouteId2, true, false);
1740 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1752 scheduler_.OnClientCreated(
1753 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1741 1754
1742 // 1 visible and 1 hidden loaded, 1 visible and 1 hidden loading 1755 // 1 visible and 1 hidden loaded, 1 visible and 1 hidden loading
1743 scheduler_.OnLoadingStateChanged( 1756 scheduler_.OnLoadingStateChanged(
1744 kBackgroundChildId2, kBackgroundRouteId2, true); 1757 kBackgroundChildId2, kBackgroundRouteId2, true);
1745 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true); 1758 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
1746 EXPECT_FALSE(scheduler_.active_clients_loaded()); 1759 EXPECT_FALSE(scheduler_.active_clients_loaded());
1747 EXPECT_EQ(ResourceScheduler::THROTTLED, 1760 EXPECT_EQ(ResourceScheduler::THROTTLED,
1748 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1761 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1749 kBackgroundRouteId)); 1762 kBackgroundRouteId));
1750 EXPECT_EQ(ResourceScheduler::THROTTLED, 1763 EXPECT_EQ(ResourceScheduler::THROTTLED,
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1866 scheduler_.OnAudibilityChanged(kBackgroundChildId, kBackgroundRouteId, true); 1879 scheduler_.OnAudibilityChanged(kBackgroundChildId, kBackgroundRouteId, true);
1867 EXPECT_EQ(ResourceScheduler::UNTHROTTLED, 1880 EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
1868 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1881 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1869 kBackgroundRouteId)); 1882 kBackgroundRouteId));
1870 EXPECT_FALSE(mock_timer_->IsRunning()); 1883 EXPECT_FALSE(mock_timer_->IsRunning());
1871 } 1884 }
1872 1885
1873 TEST_F(ResourceSchedulerTest, LastCoalescedClientDeletionStopsTimer) { 1886 TEST_F(ResourceSchedulerTest, LastCoalescedClientDeletionStopsTimer) {
1874 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1887 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1875 true /* should_coalesce */); 1888 true /* should_coalesce */);
1876 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1889 scheduler_.OnClientCreated(
1890 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1877 EXPECT_FALSE(mock_timer_->IsRunning()); 1891 EXPECT_FALSE(mock_timer_->IsRunning());
1878 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true); 1892 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
1879 EXPECT_FALSE(mock_timer_->IsRunning()); 1893 EXPECT_FALSE(mock_timer_->IsRunning());
1880 scheduler_.OnLoadingStateChanged( 1894 scheduler_.OnLoadingStateChanged(
1881 kBackgroundChildId, kBackgroundRouteId, true); 1895 kBackgroundChildId, kBackgroundRouteId, true);
1882 EXPECT_EQ(ResourceScheduler::COALESCED, 1896 EXPECT_EQ(ResourceScheduler::COALESCED,
1883 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1897 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1884 kBackgroundRouteId)); 1898 kBackgroundRouteId));
1885 scheduler_.OnLoadingStateChanged( 1899 scheduler_.OnLoadingStateChanged(
1886 kBackgroundChildId2, kBackgroundRouteId2, true); 1900 kBackgroundChildId2, kBackgroundRouteId2, true);
1887 EXPECT_EQ(ResourceScheduler::COALESCED, 1901 EXPECT_EQ(ResourceScheduler::COALESCED,
1888 scheduler_.GetClientStateForTesting(kBackgroundChildId2, 1902 scheduler_.GetClientStateForTesting(kBackgroundChildId2,
1889 kBackgroundRouteId2)); 1903 kBackgroundRouteId2));
1890 EXPECT_TRUE(mock_timer_->IsRunning()); 1904 EXPECT_TRUE(mock_timer_->IsRunning());
1891 1905
1892 scheduler_.OnClientDeleted(kBackgroundChildId, kBackgroundRouteId); 1906 scheduler_.OnClientDeleted(kBackgroundChildId, kBackgroundRouteId);
1893 EXPECT_TRUE(mock_timer_->IsRunning()); 1907 EXPECT_TRUE(mock_timer_->IsRunning());
1894 1908
1895 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1909 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1896 EXPECT_FALSE(mock_timer_->IsRunning()); 1910 EXPECT_FALSE(mock_timer_->IsRunning());
1897 1911
1898 // To avoid errors on test tear down. 1912 // To avoid errors on test tear down.
1899 scheduler_.OnClientCreated(kBackgroundChildId, kBackgroundRouteId, false); 1913 scheduler_.OnClientCreated(
1914 kBackgroundChildId, kBackgroundRouteId, false, false);
1900 } 1915 }
1901 1916
1902 TEST_F(ResourceSchedulerTest, LastCoalescedClientStartsLoadingStopsTimer) { 1917 TEST_F(ResourceSchedulerTest, LastCoalescedClientStartsLoadingStopsTimer) {
1903 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1918 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1904 true /* should_coalesce */); 1919 true /* should_coalesce */);
1905 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1920 scheduler_.OnClientCreated(
1921 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1906 EXPECT_FALSE(mock_timer_->IsRunning()); 1922 EXPECT_FALSE(mock_timer_->IsRunning());
1907 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true); 1923 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
1908 EXPECT_FALSE(mock_timer_->IsRunning()); 1924 EXPECT_FALSE(mock_timer_->IsRunning());
1909 scheduler_.OnLoadingStateChanged( 1925 scheduler_.OnLoadingStateChanged(
1910 kBackgroundChildId, kBackgroundRouteId, true); 1926 kBackgroundChildId, kBackgroundRouteId, true);
1911 EXPECT_EQ(ResourceScheduler::COALESCED, 1927 EXPECT_EQ(ResourceScheduler::COALESCED,
1912 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1928 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1913 kBackgroundRouteId)); 1929 kBackgroundRouteId));
1914 scheduler_.OnLoadingStateChanged( 1930 scheduler_.OnLoadingStateChanged(
1915 kBackgroundChildId2, kBackgroundRouteId2, true); 1931 kBackgroundChildId2, kBackgroundRouteId2, true);
(...skipping 10 matching lines...) Expand all
1926 kBackgroundChildId2, kBackgroundRouteId2, false); 1942 kBackgroundChildId2, kBackgroundRouteId2, false);
1927 EXPECT_FALSE(mock_timer_->IsRunning()); 1943 EXPECT_FALSE(mock_timer_->IsRunning());
1928 1944
1929 // This is needed to avoid errors on test tear down. 1945 // This is needed to avoid errors on test tear down.
1930 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2); 1946 scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
1931 } 1947 }
1932 1948
1933 TEST_F(ResourceSchedulerTest, LastCoalescedClientBecomesVisibleStopsTimer) { 1949 TEST_F(ResourceSchedulerTest, LastCoalescedClientBecomesVisibleStopsTimer) {
1934 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */, 1950 scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
1935 true /* should_coalesce */); 1951 true /* should_coalesce */);
1936 scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2, false); 1952 scheduler_.OnClientCreated(
1953 kBackgroundChildId2, kBackgroundRouteId2, false, false);
1937 EXPECT_FALSE(mock_timer_->IsRunning()); 1954 EXPECT_FALSE(mock_timer_->IsRunning());
1938 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true); 1955 scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
1939 EXPECT_FALSE(mock_timer_->IsRunning()); 1956 EXPECT_FALSE(mock_timer_->IsRunning());
1940 scheduler_.OnLoadingStateChanged( 1957 scheduler_.OnLoadingStateChanged(
1941 kBackgroundChildId, kBackgroundRouteId, true); 1958 kBackgroundChildId, kBackgroundRouteId, true);
1942 EXPECT_EQ(ResourceScheduler::COALESCED, 1959 EXPECT_EQ(ResourceScheduler::COALESCED,
1943 scheduler_.GetClientStateForTesting(kBackgroundChildId, 1960 scheduler_.GetClientStateForTesting(kBackgroundChildId,
1944 kBackgroundRouteId)); 1961 kBackgroundRouteId));
1945 scheduler_.OnLoadingStateChanged( 1962 scheduler_.OnLoadingStateChanged(
1946 kBackgroundChildId2, kBackgroundRouteId2, true); 1963 kBackgroundChildId2, kBackgroundRouteId2, true);
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
2109 2126
2110 FireCoalescingTimer(); 2127 FireCoalescingTimer();
2111 2128
2112 EXPECT_TRUE(high->started()); 2129 EXPECT_TRUE(high->started());
2113 EXPECT_TRUE(high2->started()); 2130 EXPECT_TRUE(high2->started());
2114 EXPECT_TRUE(low->started()); 2131 EXPECT_TRUE(low->started());
2115 } 2132 }
2116 2133
2117 TEST_F(ResourceSchedulerTest, GetVisualSignalFromRenderViewHost) { 2134 TEST_F(ResourceSchedulerTest, GetVisualSignalFromRenderViewHost) {
2118 scoped_ptr<MockRenderProcessHostFactory> render_process_host_factory; 2135 scoped_ptr<MockRenderProcessHostFactory> render_process_host_factory;
2136 scoped_ptr<TestRenderViewHostFactory> render_view_host_factory;
2119 scoped_ptr<TestBrowserContext> browser_context; 2137 scoped_ptr<TestBrowserContext> browser_context;
2120 scoped_ptr<TestWebContents> web_contents_1; 2138 scoped_ptr<TestWebContents> web_contents_1;
2121 scoped_ptr<TestWebContents> web_contents_2; 2139 scoped_ptr<TestWebContents> web_contents_2;
2140 render_process_host_factory.reset(new MockRenderProcessHostFactory());
2141 render_view_host_factory.reset(
2142 new TestRenderViewHostFactory(render_process_host_factory.get()));
2122 2143
2123 render_process_host_factory.reset(new MockRenderProcessHostFactory());
2124 browser_context.reset(new TestBrowserContext()); 2144 browser_context.reset(new TestBrowserContext());
2125 scoped_refptr<SiteInstance> site_instance_1 = 2145 scoped_refptr<SiteInstance> site_instance_1 =
2126 SiteInstance::Create(browser_context.get()); 2146 SiteInstance::Create(browser_context.get());
2127 scoped_refptr<SiteInstance> site_instance_2 = 2147 scoped_refptr<SiteInstance> site_instance_2 =
2128 SiteInstance::Create(browser_context.get()); 2148 SiteInstance::Create(browser_context.get());
2129 SiteInstanceImpl::set_render_process_host_factory( 2149 SiteInstanceImpl::set_render_process_host_factory(
2130 render_process_host_factory.get()); 2150 render_process_host_factory.get());
2131 2151
2132 web_contents_1.reset( 2152 web_contents_1.reset(
2133 TestWebContents::Create(browser_context.get(), site_instance_1.get())); 2153 TestWebContents::Create(browser_context.get(), site_instance_1.get()));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2171 web_contents_2.reset(); 2191 web_contents_2.reset();
2172 base::RunLoop().RunUntilIdle(); 2192 base::RunLoop().RunUntilIdle();
2173 2193
2174 browser_context.reset(); 2194 browser_context.reset();
2175 render_process_host_factory.reset(); 2195 render_process_host_factory.reset();
2176 } 2196 }
2177 2197
2178 } // unnamed namespace 2198 } // unnamed namespace
2179 2199
2180 } // namespace content 2200 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_scheduler.cc ('k') | content/browser/renderer_host/media/audio_renderer_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698