| Index: components/guest_view/browser/test_guest_view_manager.cc
|
| diff --git a/components/guest_view/browser/test_guest_view_manager.cc b/components/guest_view/browser/test_guest_view_manager.cc
|
| index 78458ef1d6c8fb4f12eac78fa3c1af5d3647afca..c23399ab3e906b04ed4bd2cb9f63c70a013a2e05 100644
|
| --- a/components/guest_view/browser/test_guest_view_manager.cc
|
| +++ b/components/guest_view/browser/test_guest_view_manager.cc
|
| @@ -15,7 +15,9 @@ TestGuestViewManager::TestGuestViewManager(
|
| : GuestViewManager(context, delegate.Pass()),
|
| num_embedder_processes_destroyed_(0),
|
| num_guests_created_(0),
|
| - num_views_garbage_collected_(0) {
|
| + expected_num_guests_created_(0),
|
| + num_views_garbage_collected_(0),
|
| + waiting_for_guests_created_(false) {
|
| }
|
|
|
| TestGuestViewManager::~TestGuestViewManager() {
|
| @@ -51,22 +53,28 @@ void TestGuestViewManager::WaitForLastGuestDeleted() {
|
| guest_web_contents_watchers_.back()->Wait();
|
| };
|
|
|
| -void TestGuestViewManager::WaitForGuestCreated() {
|
| - created_message_loop_runner_ = new content::MessageLoopRunner;
|
| - created_message_loop_runner_->Run();
|
| -}
|
| -
|
| content::WebContents* TestGuestViewManager::WaitForSingleGuestCreated() {
|
| if (!GetNumGuestsActive()) {
|
| // Guests have been created and subsequently destroyed.
|
| if (num_guests_created() > 0)
|
| return nullptr;
|
| - WaitForGuestCreated();
|
| + WaitForNumGuestsCreated(1u);
|
| }
|
|
|
| return GetLastGuestCreated();
|
| }
|
|
|
| +void TestGuestViewManager::WaitForNumGuestsCreated(size_t count) {
|
| + if (count == num_guests_created_)
|
| + return;
|
| +
|
| + waiting_for_guests_created_ = true;
|
| + expected_num_guests_created_ = count;
|
| +
|
| + created_message_loop_runner_ = new content::MessageLoopRunner;
|
| + created_message_loop_runner_->Run();
|
| +}
|
| +
|
| void TestGuestViewManager::WaitForViewGarbageCollected() {
|
| gc_message_loop_runner_ = new content::MessageLoopRunner;
|
| gc_message_loop_runner_->Run();
|
| @@ -86,11 +94,21 @@ void TestGuestViewManager::AddGuest(int guest_instance_id,
|
| new content::WebContentsDestroyedWatcher(guest_web_contents)));
|
|
|
| ++num_guests_created_;
|
| + if (!waiting_for_guests_created_ &&
|
| + num_guests_created_ != expected_num_guests_created_) {
|
| + return;
|
| + }
|
|
|
| if (created_message_loop_runner_.get())
|
| created_message_loop_runner_->Quit();
|
| }
|
|
|
| +void TestGuestViewManager::GetGuestWebContentsList(
|
| + std::vector<content::WebContents*>* guest_web_contents_list) {
|
| + for (auto& watcher : guest_web_contents_watchers_)
|
| + guest_web_contents_list->push_back(watcher->web_contents());
|
| +}
|
| +
|
| void TestGuestViewManager::RemoveGuest(int guest_instance_id) {
|
| GuestViewManager::RemoveGuest(guest_instance_id);
|
| }
|
|
|