#ifndef UI_AURA_TEST_FIND_WINDOW_H_
#define UI_AURA_TEST_FIND_WINDOW_H_
#include <string>
#include "base/functional/bind.h"
#include "ui/aura/env.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
namespace aura {
class Env;
class Window;
namespace test {
template <typename CallbackFunc>
Window* FindFirstWindowMatching(Window* window, const CallbackFunc& cb) {
if (cb(window)) {
return window;
}
for (Window* cur : window->children()) {
if (Window* found = FindFirstWindowMatching(cur, cb)) {
return found;
}
}
return nullptr;
}
template <typename CallbackFunc>
Window* FindFirstWindowMatching(Env* env, const CallbackFunc& cb) {
for (WindowTreeHost* host : env->window_tree_hosts()) {
if (Window* found = FindFirstWindowMatching(host->window(), cb)) {
return found;
}
}
return nullptr;
}
inline Window* FindWindowWithTitle(Env* env, const std::u16string& title) {
return FindFirstWindowMatching(env, [title](Window* window) -> bool {
return window->GetTitle() == title;
});
}
}
}
#endif