app_window_waiter.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/chromeos/login/test/app_window_waiter.h" 6 7#include "apps/app_window.h" 8 9namespace chromeos { 10 11AppWindowWaiter::AppWindowWaiter(apps::AppWindowRegistry* registry, 12 const std::string& app_id) 13 : registry_(registry), app_id_(app_id), window_(NULL) { 14 registry_->AddObserver(this); 15} 16 17AppWindowWaiter::~AppWindowWaiter() { 18 registry_->RemoveObserver(this); 19} 20 21apps::AppWindow* AppWindowWaiter::Wait() { 22 window_ = registry_->GetCurrentAppWindowForApp(app_id_); 23 if (window_) 24 return window_; 25 26 run_loop_.Run(); 27 28 return window_; 29} 30 31void AppWindowWaiter::OnAppWindowAdded(apps::AppWindow* app_window) { 32 if (!run_loop_.running()) 33 return; 34 35 if (app_window->extension_id() == app_id_) { 36 window_ = app_window; 37 run_loop_.Quit(); 38 } 39} 40 41void AppWindowWaiter::OnAppWindowIconChanged(apps::AppWindow* app_window) {} 42 43void AppWindowWaiter::OnAppWindowRemoved(apps::AppWindow* app_window) {} 44 45} // namespace chromeos 46