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

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

Issue 465363003: ResourceScheduler get visual signal from RenderViewHostImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove ResourceScheduler::OnVisibilityChanged 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_unittest.cc
diff --git a/content/browser/loader/resource_scheduler_unittest.cc b/content/browser/loader/resource_scheduler_unittest.cc
index ea4fc023fa0fbf6e888d355e25ed6c426c26d9a7..edb9e119b8b60c6000ed61558bdb05cfb2c5504f 100644
--- a/content/browser/loader/resource_scheduler_unittest.cc
+++ b/content/browser/loader/resource_scheduler_unittest.cc
@@ -19,6 +19,9 @@
#include "content/public/browser/resource_throttle.h"
#include "content/public/common/process_type.h"
#include "content/public/common/resource_type.h"
+#include "content/public/test/mock_render_process_host.h"
+#include "content/public/test/test_browser_context.h"
+#include "content/test/test_web_contents.h"
#include "net/base/host_port_pair.h"
#include "net/base/request_priority.h"
#include "net/http/http_server_properties_impl.h"
@@ -140,21 +143,61 @@ class ResourceSchedulerTest : public testing::Test {
ui_thread_(BrowserThread::UI, &message_loop_),
io_thread_(BrowserThread::IO, &message_loop_),
mock_timer_(new base::MockTimer(true, true)) {
+ // Set up web contents.
+ render_process_host_factory_.reset(new MockRenderProcessHostFactory());
+ browser_context_.reset(new TestBrowserContext());
+ scoped_refptr<SiteInstance> site_instance =
+ SiteInstance::Create(browser_context_.get());
+ scoped_refptr<SiteInstance> site_instance_background =
+ SiteInstance::Create(browser_context_.get());
+ scoped_refptr<SiteInstance> site_instance_2 =
+ SiteInstance::Create(browser_context_.get());
+ scoped_refptr<SiteInstance> site_instance_background_2 =
+ SiteInstance::Create(browser_context_.get());
+ SiteInstanceImpl::set_render_process_host_factory(
+ render_process_host_factory_.get());
+
+ web_contents_.reset(
+ TestWebContents::Create(browser_context_.get(), site_instance.get()));
+ web_contents_background_.reset(
+ TestWebContents::Create(browser_context_.get(),
+ site_instance_background.get()));
+ web_contents_2_.reset(
+ TestWebContents::Create(browser_context_.get(), site_instance_2.get()));
+ web_contents_background_2_.reset(
+ TestWebContents::Create(browser_context_.get(),
+ site_instance_background_2.get()));
+
+ web_contents_->WasHidden();
aiolos (Not reviewing) 2014/08/15 01:45:38 Either remove this line, or change it to WasShown(
Zhen Wang 2014/08/15 18:43:01 Done.
+ web_contents_background_->WasHidden();
+ web_contents_2_->WasHidden();
+ web_contents_background_2_->WasHidden();
+
+ // set up resource scheduler
scheduler_.set_timer_for_testing(scoped_ptr<base::Timer>(mock_timer_));
// TODO(aiolos): Remove when throttling and coalescing have both landed.
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId, kRouteId);
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, true);
- scheduler_.OnClientCreated(kBackgroundChildId, kBackgroundRouteId);
+ scheduler_.OnClientCreated(kChildId, kRouteId, web_contents_.get());
+ web_contents_->WasShown();
+ scheduler_.OnClientCreated(kBackgroundChildId,
+ kBackgroundRouteId,
+ web_contents_background_.get());
context_.set_http_server_properties(http_server_properties_.GetWeakPtr());
}
virtual ~ResourceSchedulerTest() {
scheduler_.OnClientDeleted(kChildId, kRouteId);
scheduler_.OnClientDeleted(kBackgroundChildId, kBackgroundRouteId);
+
+ web_contents_.reset();
+ web_contents_background_.reset();
+ web_contents_2_.reset();
+ web_contents_background_2_.reset();
+ browser_context_.reset();
+ render_process_host_factory_.reset();
}
scoped_ptr<net::URLRequest> NewURLRequestWithChildAndRoute(
@@ -279,6 +322,12 @@ class ResourceSchedulerTest : public testing::Test {
base::MockTimer* mock_timer_;
net::HttpServerPropertiesImpl http_server_properties_;
net::TestURLRequestContext context_;
+ scoped_ptr<MockRenderProcessHostFactory> render_process_host_factory_;
+ scoped_ptr<TestBrowserContext> browser_context_;
+ scoped_ptr<TestWebContents> web_contents_;
+ scoped_ptr<TestWebContents> web_contents_background_;
+ scoped_ptr<TestWebContents> web_contents_2_;
+ scoped_ptr<TestWebContents> web_contents_background_2_;
};
TEST_F(ResourceSchedulerTest, OneIsolatedLowRequest) {
@@ -638,7 +687,9 @@ TEST_F(ResourceSchedulerTest, ThrottledClientCreation) {
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
EXPECT_TRUE(scheduler_.should_throttle());
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId2,
@@ -725,7 +776,7 @@ TEST_F(ResourceSchedulerTest, UnthrottleNewlyVisibleClient) {
NewBackgroundRequest("http://host/req", net::IDLE));
EXPECT_FALSE(request->started());
- scheduler_.OnVisibilityChanged(kBackgroundChildId, kBackgroundRouteId, true);
+ web_contents_background_->WasShown();
EXPECT_EQ(ResourceScheduler::ACTIVE_AND_LOADING,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
kBackgroundRouteId));
@@ -781,7 +832,7 @@ TEST_F(ResourceSchedulerTest, AudibleClientStillUnthrottledOnVisabilityChange) {
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
EXPECT_EQ(ResourceScheduler::ACTIVE_AND_LOADING,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
@@ -789,14 +840,14 @@ TEST_F(ResourceSchedulerTest, AudibleClientStillUnthrottledOnVisabilityChange) {
scheduler_.GetClientStateForTesting(kBackgroundChildId,
kBackgroundRouteId));
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, true);
+ web_contents_->WasShown();
EXPECT_EQ(ResourceScheduler::ACTIVE_AND_LOADING,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
kBackgroundRouteId));
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
EXPECT_EQ(ResourceScheduler::ACTIVE_AND_LOADING,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
EXPECT_EQ(ResourceScheduler::THROTTLED,
@@ -985,7 +1036,7 @@ TEST_F(ResourceSchedulerTest, AllBackgroundClientsUnthrottle) {
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
EXPECT_FALSE(scheduler_.active_clients_loaded());
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
EXPECT_TRUE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
@@ -1022,8 +1073,10 @@ TEST_F(ResourceSchedulerTest,
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
scheduler_.OnLoadingStateChanged(
kBackgroundChildId2, kBackgroundRouteId2, true);
@@ -1042,7 +1095,7 @@ TEST_F(ResourceSchedulerTest,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 2 visible, 2 hidden
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ web_contents_2_->WasShown();
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1056,7 +1109,7 @@ TEST_F(ResourceSchedulerTest,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 1 visible, 3 hidden
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, false);
+ web_contents_2_->WasHidden();
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1078,11 +1131,13 @@ TEST_F(ResourceSchedulerTest,
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
scheduler_.OnLoadingStateChanged(
kBackgroundChildId2, kBackgroundRouteId2, true);
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
// 1 audible, 3 hidden
@@ -1135,8 +1190,10 @@ TEST_F(ResourceSchedulerTest,
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
scheduler_.OnLoadingStateChanged(
kBackgroundChildId2, kBackgroundRouteId2, true);
@@ -1154,7 +1211,7 @@ TEST_F(ResourceSchedulerTest,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 2 visible, 2 hidden
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ web_contents_2_->WasShown();
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1168,7 +1225,7 @@ TEST_F(ResourceSchedulerTest,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 1 visible, 3 hidden
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, false);
+ web_contents_2_->WasHidden();
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1190,12 +1247,14 @@ TEST_F(ResourceSchedulerTest,
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
scheduler_.OnLoadingStateChanged(
kBackgroundChildId2, kBackgroundRouteId2, true);
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
// 1 audible, 3 hidden
EXPECT_FALSE(scheduler_.active_clients_loaded());
@@ -1246,13 +1305,15 @@ TEST_F(ResourceSchedulerTest, UnloadedClientBecomesHiddenCorrectlyUnthrottles) {
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
scheduler_.OnLoadingStateChanged(
kBackgroundChildId2, kBackgroundRouteId2, true);
// 2 visible, 2 hidden
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ web_contents_2_->WasShown();
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1266,7 +1327,7 @@ TEST_F(ResourceSchedulerTest, UnloadedClientBecomesHiddenCorrectlyUnthrottles) {
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 1 visible, 3 hidden
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, false);
+ web_contents_2_->WasHidden();
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1280,7 +1341,7 @@ TEST_F(ResourceSchedulerTest, UnloadedClientBecomesHiddenCorrectlyUnthrottles) {
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 0 visible, 4 hidden
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
EXPECT_TRUE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1294,7 +1355,7 @@ TEST_F(ResourceSchedulerTest, UnloadedClientBecomesHiddenCorrectlyUnthrottles) {
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 1 visible, 3 hidden
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, true);
+ web_contents_->WasShown();
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1315,12 +1376,14 @@ TEST_F(ResourceSchedulerTest, UnloadedClientBecomesSilentCorrectlyUnthrottles) {
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
scheduler_.OnLoadingStateChanged(
kBackgroundChildId2, kBackgroundRouteId2, true);
scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
scheduler_.OnAudibilityChanged(kChildId2, kRouteId2, true);
// 2 audible, 2 hidden
EXPECT_FALSE(scheduler_.active_clients_loaded());
@@ -1385,12 +1448,14 @@ TEST_F(ResourceSchedulerTest, LoadedClientBecomesHiddenCorrectlyThrottles) {
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
scheduler_.OnLoadingStateChanged(
kBackgroundChildId2, kBackgroundRouteId2, true);
scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ web_contents_2_->WasShown();
// 2 visible, 2 hidden
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
@@ -1405,7 +1470,7 @@ TEST_F(ResourceSchedulerTest, LoadedClientBecomesHiddenCorrectlyThrottles) {
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 1 visible, 3 hidden
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, false);
+ web_contents_2_->WasHidden();
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1419,7 +1484,7 @@ TEST_F(ResourceSchedulerTest, LoadedClientBecomesHiddenCorrectlyThrottles) {
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 0 visible, 4 hidden
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
EXPECT_TRUE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1433,7 +1498,7 @@ TEST_F(ResourceSchedulerTest, LoadedClientBecomesHiddenCorrectlyThrottles) {
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
// 1 visible, 3 hidden
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ web_contents_2_->WasShown();
EXPECT_TRUE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
@@ -1454,12 +1519,14 @@ TEST_F(ResourceSchedulerTest, LoadedClientBecomesSilentCorrectlyThrottles) {
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
scheduler_.OnLoadingStateChanged(
kBackgroundChildId2, kBackgroundRouteId2, true);
scheduler_.OnLoadingStateChanged(kChildId2, kRouteId2, true);
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
scheduler_.OnAudibilityChanged(kChildId, kRouteId, true);
scheduler_.OnAudibilityChanged(kChildId2, kRouteId2, true);
// 2 audible, 2 hidden
@@ -1525,11 +1592,13 @@ TEST_F(ResourceSchedulerTest, HiddenLoadedChangesCorrectlyStayThrottled) {
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
// 1 visible and 2 hidden loading, 1 visible loaded
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ web_contents_2_->WasShown();
scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
EXPECT_FALSE(scheduler_.active_clients_loaded());
EXPECT_EQ(ResourceScheduler::THROTTLED,
@@ -1596,9 +1665,11 @@ TEST_F(ResourceSchedulerTest, PartialVisibleClientLoadedDoesNotUnthrottle) {
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
+ web_contents_2_->WasShown();
// 2 visible loading, 1 hidden loading, 1 hidden loaded
scheduler_.OnLoadingStateChanged(
@@ -1651,9 +1722,11 @@ TEST_F(ResourceSchedulerTest, FullVisibleLoadedCorrectlyUnthrottle) {
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
+ web_contents_2_->WasShown();
// 1 visible and 1 hidden loaded, 1 visible and 1 hidden loading
scheduler_.OnLoadingStateChanged(
@@ -1718,9 +1791,11 @@ TEST_F(ResourceSchedulerTest,
// TODO(aiolos): remove when throttling and coalescing have both landed
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
false /* should_coalesce */);
- scheduler_.OnClientCreated(kChildId2, kRouteId2);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
- scheduler_.OnVisibilityChanged(kChildId2, kRouteId2, true);
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
+ web_contents_2_->WasShown();
// 1 visible and 1 hidden loaded, 1 visible and 1 hidden loading
scheduler_.OnLoadingStateChanged(
@@ -1798,7 +1873,7 @@ TEST_F(ResourceSchedulerTest, ActiveLoadingClientLoadedAndHiddenStartsTimer) {
kBackgroundRouteId));
EXPECT_FALSE(mock_timer_->IsRunning());
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
EXPECT_EQ(ResourceScheduler::COALESCED,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
@@ -1817,7 +1892,7 @@ TEST_F(ResourceSchedulerTest, ActiveLoadingClientHiddenAndLoadedStartsTimer) {
kBackgroundRouteId));
EXPECT_FALSE(mock_timer_->IsRunning());
- scheduler_.OnVisibilityChanged(kChildId, kRouteId, false);
+ web_contents_->WasHidden();
EXPECT_EQ(ResourceScheduler::UNTHROTTLED,
scheduler_.GetClientStateForTesting(kChildId, kRouteId));
EXPECT_FALSE(mock_timer_->IsRunning());
@@ -1856,7 +1931,9 @@ TEST_F(ResourceSchedulerTest, CoalescedClientBecomesAudibleStopsTimer) {
TEST_F(ResourceSchedulerTest, LastCoalescedClientDeletionStopsTimer) {
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
true /* should_coalesce */);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
EXPECT_FALSE(mock_timer_->IsRunning());
scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
EXPECT_FALSE(mock_timer_->IsRunning());
@@ -1879,13 +1956,17 @@ TEST_F(ResourceSchedulerTest, LastCoalescedClientDeletionStopsTimer) {
EXPECT_FALSE(mock_timer_->IsRunning());
// To avoid errors on test tear down.
- scheduler_.OnClientCreated(kBackgroundChildId, kBackgroundRouteId);
+ scheduler_.OnClientCreated(kBackgroundChildId,
+ kBackgroundRouteId,
+ web_contents_background_.get());
}
TEST_F(ResourceSchedulerTest, LastCoalescedClientStartsLoadingStopsTimer) {
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
true /* should_coalesce */);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
EXPECT_FALSE(mock_timer_->IsRunning());
scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
EXPECT_FALSE(mock_timer_->IsRunning());
@@ -1916,7 +1997,9 @@ TEST_F(ResourceSchedulerTest, LastCoalescedClientStartsLoadingStopsTimer) {
TEST_F(ResourceSchedulerTest, LastCoalescedClientBecomesVisibleStopsTimer) {
scheduler_.SetThrottleOptionsForTesting(true /* should_throttle */,
true /* should_coalesce */);
- scheduler_.OnClientCreated(kBackgroundChildId2, kBackgroundRouteId2);
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
EXPECT_FALSE(mock_timer_->IsRunning());
scheduler_.OnLoadingStateChanged(kChildId, kRouteId, true);
EXPECT_FALSE(mock_timer_->IsRunning());
@@ -1932,11 +2015,10 @@ TEST_F(ResourceSchedulerTest, LastCoalescedClientBecomesVisibleStopsTimer) {
kBackgroundRouteId2));
EXPECT_TRUE(mock_timer_->IsRunning());
- scheduler_.OnVisibilityChanged(kBackgroundChildId, kBackgroundRouteId, true);
+ web_contents_background_->WasShown();
EXPECT_TRUE(mock_timer_->IsRunning());
- scheduler_.OnVisibilityChanged(
- kBackgroundChildId2, kBackgroundRouteId2, true);
+ web_contents_background_2_->WasShown();
EXPECT_FALSE(mock_timer_->IsRunning());
// To avoid errors on test tear down.
@@ -1963,7 +2045,7 @@ TEST_F(ResourceSchedulerTest,
kBackgroundRouteId));
EXPECT_FALSE(mock_timer_->IsRunning());
- scheduler_.OnVisibilityChanged(kBackgroundChildId, kBackgroundRouteId, true);
+ web_contents_background_->WasShown();
EXPECT_EQ(ResourceScheduler::ACTIVE_AND_LOADING,
scheduler_.GetClientStateForTesting(kBackgroundChildId,
kBackgroundRouteId));
@@ -2097,6 +2179,41 @@ TEST_F(ResourceSchedulerTest, CoalescedRequestsWaitForNextTimer) {
EXPECT_TRUE(low->started());
}
+TEST_F(ResourceSchedulerTest, CheckInitialVisibility) {
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
+ web_contents_2_->WasShown();
+
+ EXPECT_TRUE(scheduler_.IsClientVisible(kChildId2, kRouteId2));
+ EXPECT_FALSE(scheduler_.IsClientVisible(kBackgroundChildId2,
+ kBackgroundRouteId2));
+
+ scheduler_.OnClientDeleted(kChildId2, kRouteId2);
+ scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
+}
+
+TEST_F(ResourceSchedulerTest, GetVisualSignalFromWebContents) {
+ scheduler_.OnClientCreated(kChildId2, kRouteId2, web_contents_2_.get());
+ scheduler_.OnClientCreated(kBackgroundChildId2,
+ kBackgroundRouteId2,
+ web_contents_background_2_.get());
+ web_contents_2_->WasShown();
+
+ // Change visibility of web contents.
+ web_contents_2_->WasHidden();
+ web_contents_background_2_->WasShown();
+
+ // The clients get the visual signal from web contents.
+ EXPECT_FALSE(scheduler_.IsClientVisible(kChildId2, kRouteId2));
+ EXPECT_TRUE(scheduler_.IsClientVisible(kBackgroundChildId2,
+ kBackgroundRouteId2));
+
+ scheduler_.OnClientDeleted(kChildId2, kRouteId2);
+ scheduler_.OnClientDeleted(kBackgroundChildId2, kBackgroundRouteId2);
+}
+
} // unnamed namespace
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698