Index: extensions/browser/load_monitoring_extension_host_queue_unittest.cc |
diff --git a/extensions/browser/load_monitoring_extension_host_queue_unittest.cc b/extensions/browser/load_monitoring_extension_host_queue_unittest.cc |
index ef1a1c1c92e62af480d9f4ebef7ccc9c57ebc64e..1157ecda46825b09a3f0b19c3abd2eea71850201 100644 |
--- a/extensions/browser/load_monitoring_extension_host_queue_unittest.cc |
+++ b/extensions/browser/load_monitoring_extension_host_queue_unittest.cc |
@@ -16,25 +16,12 @@ |
namespace { |
class StubDeferredStartRenderHost : public DeferredStartRenderHost { |
- public: |
- // Returns true if this host is being observed by |observer|. |
- bool IsObservedBy(DeferredStartRenderHostObserver* observer) { |
- return observers_.count(observer) > 0; |
- } |
- |
private: |
- // DeferredStartRenderHost: |
void AddDeferredStartRenderHostObserver( |
- DeferredStartRenderHostObserver* observer) override { |
- observers_.insert(observer); |
- } |
+ DeferredStartRenderHostObserver* observer) override {} |
void RemoveDeferredStartRenderHostObserver( |
- DeferredStartRenderHostObserver* observer) override { |
- observers_.erase(observer); |
- } |
+ DeferredStartRenderHostObserver* observer) override {} |
void CreateRenderViewNow() override {} |
- |
- std::set<DeferredStartRenderHostObserver*> observers_; |
}; |
const size_t g_invalid_size_t = std::numeric_limits<size_t>::max(); |
@@ -48,7 +35,7 @@ |
// Arbitrary choice of an invalid size_t. |
num_queued_(g_invalid_size_t), |
num_loaded_(g_invalid_size_t), |
- max_awaiting_loading_(g_invalid_size_t), |
+ max_in_queue_(g_invalid_size_t), |
max_active_loading_(g_invalid_size_t) {} |
void SetUp() override { |
@@ -63,7 +50,7 @@ |
protected: |
// Creates a new DeferredStartRenderHost. Ownership is held by this class, |
// not passed to caller. |
- StubDeferredStartRenderHost* CreateHost() { |
+ DeferredStartRenderHost* CreateHost() { |
StubDeferredStartRenderHost* stub = new StubDeferredStartRenderHost(); |
stubs_.push_back(stub); |
return stub; |
@@ -73,26 +60,25 @@ |
LoadMonitoringExtensionHostQueue* queue() { return queue_.get(); } |
// Returns true if the queue has finished monitoring. |
- bool finished() const { return finished_; } |
+ bool finished() { return finished_; } |
// These are available after the queue has finished (in which case finished() |
// will return true). |
size_t num_queued() { return num_queued_; } |
size_t num_loaded() { return num_loaded_; } |
- size_t max_awaiting_loading() { return max_awaiting_loading_; } |
+ size_t max_in_queue() { return max_in_queue_; } |
size_t max_active_loading() { return max_active_loading_; } |
private: |
// Callback when queue has finished monitoring. |
void Finished(size_t num_queued, |
size_t num_loaded, |
- size_t max_awaiting_loading, |
+ size_t max_in_queue, |
size_t max_active_loading) { |
- CHECK(!finished_); |
finished_ = true; |
num_queued_ = num_queued; |
num_loaded_ = num_loaded; |
- max_awaiting_loading_ = max_awaiting_loading; |
+ max_in_queue_ = max_in_queue; |
max_active_loading_ = max_active_loading; |
} |
@@ -104,7 +90,7 @@ |
bool finished_; |
size_t num_queued_; |
size_t num_loaded_; |
- size_t max_awaiting_loading_; |
+ size_t max_in_queue_; |
size_t max_active_loading_; |
}; |
@@ -123,7 +109,7 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(0u, num_queued()); |
EXPECT_EQ(0u, num_loaded()); |
- EXPECT_EQ(0u, max_awaiting_loading()); |
+ EXPECT_EQ(0u, max_in_queue()); |
EXPECT_EQ(0u, max_active_loading()); |
} |
@@ -135,7 +121,7 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(1u, num_queued()); |
EXPECT_EQ(0u, num_loaded()); |
- EXPECT_EQ(1u, max_awaiting_loading()); |
+ EXPECT_EQ(1u, max_in_queue()); |
EXPECT_EQ(0u, max_active_loading()); |
} |
@@ -150,7 +136,7 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(1u, num_queued()); |
EXPECT_EQ(0u, num_loaded()); |
- EXPECT_EQ(1u, max_awaiting_loading()); |
+ EXPECT_EQ(1u, max_in_queue()); |
EXPECT_EQ(0u, max_active_loading()); |
} |
@@ -164,8 +150,12 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(1u, num_queued()); |
EXPECT_EQ(0u, num_loaded()); |
- EXPECT_EQ(1u, max_awaiting_loading()); |
- EXPECT_EQ(1u, max_active_loading()); |
+ EXPECT_EQ(1u, max_in_queue()); |
+ EXPECT_EQ(1u, max_active_loading()); |
+ |
+ // Sanity check: stopping/destroying at this point doesn't crash. |
+ queue()->OnDeferredStartRenderHostDidStopLoading(host); |
+ queue()->OnDeferredStartRenderHostDestroyed(host); |
} |
// Tests adding and destroying a single host without starting it. |
@@ -178,8 +168,12 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(1u, num_queued()); |
EXPECT_EQ(0u, num_loaded()); |
- EXPECT_EQ(1u, max_awaiting_loading()); |
- EXPECT_EQ(0u, max_active_loading()); |
+ EXPECT_EQ(1u, max_in_queue()); |
+ EXPECT_EQ(0u, max_active_loading()); |
+ |
+ // Sanity check: stopping/destroying at this point doesn't crash. |
+ queue()->OnDeferredStartRenderHostDidStopLoading(host); |
+ queue()->OnDeferredStartRenderHostDestroyed(host); |
} |
// Tests adding, starting, and stopping a single host. |
@@ -193,28 +187,11 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(1u, num_queued()); |
EXPECT_EQ(1u, num_loaded()); |
- EXPECT_EQ(1u, max_awaiting_loading()); |
- EXPECT_EQ(1u, max_active_loading()); |
-} |
- |
-// Tests adding, starting, and stopping a single host - twice. |
-TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartAndStopOneHostTwice) { |
- DeferredStartRenderHost* host = CreateHost(); |
- queue()->Add(host); |
- queue()->OnDeferredStartRenderHostDidStartLoading(host); |
- queue()->OnDeferredStartRenderHostDidStopLoading(host); |
- |
- // Re-starting loading should also be recorded fine (e.g. navigations could |
- // trigger this). |
- queue()->OnDeferredStartRenderHostDidStartLoading(host); |
- queue()->OnDeferredStartRenderHostDidStopLoading(host); |
- |
- base::RunLoop().RunUntilIdle(); |
- ASSERT_TRUE(finished()); |
- EXPECT_EQ(1u, num_queued()); |
- EXPECT_EQ(2u, num_loaded()); // 2 loaded this time, because we ran twice |
- EXPECT_EQ(1u, max_awaiting_loading()); |
- EXPECT_EQ(1u, max_active_loading()); |
+ EXPECT_EQ(1u, max_in_queue()); |
+ EXPECT_EQ(1u, max_active_loading()); |
+ |
+ // Sanity check: destroying at this point doesn't crash. |
+ queue()->OnDeferredStartRenderHostDestroyed(host); |
} |
// Tests adding, starting, and destroying (i.e. an implicit stop) a single host. |
@@ -228,7 +205,7 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(1u, num_queued()); |
EXPECT_EQ(1u, num_loaded()); |
- EXPECT_EQ(1u, max_awaiting_loading()); |
+ EXPECT_EQ(1u, max_in_queue()); |
EXPECT_EQ(1u, max_active_loading()); |
} |
@@ -243,7 +220,7 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(1u, num_queued()); |
EXPECT_EQ(0u, num_loaded()); |
- EXPECT_EQ(1u, max_awaiting_loading()); |
+ EXPECT_EQ(1u, max_in_queue()); |
EXPECT_EQ(1u, max_active_loading()); |
} |
@@ -281,10 +258,11 @@ |
ASSERT_TRUE(finished()); |
EXPECT_EQ(6u, num_queued()); |
EXPECT_EQ(2u, num_loaded()); |
- EXPECT_EQ(4u, max_awaiting_loading()); |
+ EXPECT_EQ(4u, max_in_queue()); |
EXPECT_EQ(3u, max_active_loading()); |
- // Complete a realistic sequence by stopping and/or destroying all hosts. |
+ // Sanity check: complete a realistic sequence by stopping and/or destroying |
+ // all of the hosts. It shouldn't crash. |
queue()->OnDeferredStartRenderHostDestroyed(host1); |
queue()->OnDeferredStartRenderHostDidStopLoading(host2); |
queue()->OnDeferredStartRenderHostDestroyed(host2); |
@@ -295,58 +273,4 @@ |
queue()->OnDeferredStartRenderHostDestroyed(host6); // never started/stopped |
} |
-// Tests that the queue is observing Hosts from adding them through to being |
-// removed - that the load sequence itself is irrelevant. |
-// |
-// This is an unfortunate implementation-style test, but it used to be a bug |
-// and difficult to catch outside of a proper test framework - one in which we |
-// don't have to trigger events by hand. |
-TEST_F(LoadMonitoringExtensionHostQueueTest, ObserverLifetime) { |
- StubDeferredStartRenderHost* host1 = CreateHost(); |
- StubDeferredStartRenderHost* host2 = CreateHost(); |
- StubDeferredStartRenderHost* host3 = CreateHost(); |
- StubDeferredStartRenderHost* host4 = CreateHost(); |
- |
- EXPECT_FALSE(host1->IsObservedBy(queue())); |
- EXPECT_FALSE(host2->IsObservedBy(queue())); |
- EXPECT_FALSE(host3->IsObservedBy(queue())); |
- EXPECT_FALSE(host4->IsObservedBy(queue())); |
- |
- queue()->Add(host1); |
- queue()->Add(host2); |
- queue()->Add(host3); |
- queue()->Add(host4); |
- |
- EXPECT_TRUE(host1->IsObservedBy(queue())); |
- EXPECT_TRUE(host2->IsObservedBy(queue())); |
- EXPECT_TRUE(host3->IsObservedBy(queue())); |
- EXPECT_TRUE(host4->IsObservedBy(queue())); |
- |
- queue()->OnDeferredStartRenderHostDidStartLoading(host1); |
- queue()->OnDeferredStartRenderHostDidStartLoading(host2); |
- queue()->OnDeferredStartRenderHostDidStartLoading(host3); |
- // host4 will test that we Remove before Starting - so don't start. |
- |
- EXPECT_TRUE(host1->IsObservedBy(queue())); |
- EXPECT_TRUE(host2->IsObservedBy(queue())); |
- EXPECT_TRUE(host3->IsObservedBy(queue())); |
- EXPECT_TRUE(host4->IsObservedBy(queue())); |
- |
- queue()->OnDeferredStartRenderHostDidStopLoading(host1); |
- queue()->OnDeferredStartRenderHostDestroyed(host2); |
- |
- EXPECT_TRUE(host1->IsObservedBy(queue())); |
- EXPECT_TRUE(host2->IsObservedBy(queue())); |
- |
- queue()->Remove(host1); |
- queue()->Remove(host2); |
- queue()->Remove(host3); |
- queue()->Remove(host4); |
- |
- EXPECT_FALSE(host1->IsObservedBy(queue())); |
- EXPECT_FALSE(host2->IsObservedBy(queue())); |
- EXPECT_FALSE(host3->IsObservedBy(queue())); |
- EXPECT_FALSE(host4->IsObservedBy(queue())); |
-} |
- |
} // namespace extensions |