| Index: chrome/browser/ui/test/test_app_window_observer.cc
|
| diff --git a/chrome/browser/ui/test/test_app_window_observer.cc b/chrome/browser/ui/test/test_app_window_observer.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4dc4fa3fd7325fbb2ce88ba9e07bd478f7efd35d
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/test/test_app_window_observer.cc
|
| @@ -0,0 +1,60 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/ui/test/test_app_window_observer.h"
|
| +
|
| +#include "base/run_loop.h"
|
| +#include "extensions/browser/app_window/app_window.h"
|
| +#include "ui/aura/client/aura_constants.h"
|
| +#include "ui/aura/window.h"
|
| +
|
| +TestAppWindowObserver::TestAppWindowObserver(content::BrowserContext* context)
|
| + : context_(context) {
|
| + extensions::AppWindowRegistry::Get(context_)->AddObserver(this);
|
| +}
|
| +
|
| +TestAppWindowObserver::~TestAppWindowObserver() {
|
| + extensions::AppWindowRegistry::Get(context_)->RemoveObserver(this);
|
| + for (aura::Window* window : windows_)
|
| + window->RemoveObserver(this);
|
| +}
|
| +
|
| +void TestAppWindowObserver::WaitForIconUpdate() {
|
| + WaitForIconUpdates(1);
|
| +}
|
| +
|
| +void TestAppWindowObserver::WaitForIconUpdates(int updates) {
|
| + base::RunLoop run_loop;
|
| + expeced_icon_updates_ = updates + icon_updates_;
|
| + icon_updated_callback_ = run_loop.QuitClosure();
|
| + run_loop.Run();
|
| +}
|
| +
|
| +void TestAppWindowObserver::OnAppWindowAdded(
|
| + extensions::AppWindow* app_window) {
|
| + aura::Window* window = app_window->GetNativeWindow();
|
| + window->AddObserver(this);
|
| + windows_.push_back(window);
|
| +}
|
| +
|
| +void TestAppWindowObserver::OnAppWindowRemoved(
|
| + extensions::AppWindow* app_window) {
|
| + aura::Window* window = app_window->GetNativeWindow();
|
| + if (window) {
|
| + windows_.erase(std::find(windows_.begin(), windows_.end(), window));
|
| + window->RemoveObserver(this);
|
| + }
|
| +}
|
| +
|
| +void TestAppWindowObserver::OnWindowPropertyChanged(aura::Window* window,
|
| + const void* key,
|
| + intptr_t old) {
|
| + if (key == aura::client::kAppIconKey) {
|
| + ++icon_updates_;
|
| + if (icon_updates_ == expeced_icon_updates_ &&
|
| + !icon_updated_callback_.is_null()) {
|
| + base::ResetAndReturn(&icon_updated_callback_).Run();
|
| + }
|
| + }
|
| +}
|
|
|