diff options
Diffstat (limited to 'ui/aura/test/test_windows.cc')
-rw-r--r-- | ui/aura/test/test_windows.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ui/aura/test/test_windows.cc b/ui/aura/test/test_windows.cc index 1c8a540..14fd638 100644 --- a/ui/aura/test/test_windows.cc +++ b/ui/aura/test/test_windows.cc @@ -54,5 +54,35 @@ Window* CreateTestWindowWithDelegateAndType(WindowDelegate* delegate, return window; } +Window* CreateTransientChild(int id, Window* parent) { + Window* window = new Window(NULL); + window->set_id(id); + window->SetType(aura::client::WINDOW_TYPE_NORMAL); + window->Init(ui::Layer::LAYER_TEXTURED); + window->SetParent(NULL); + parent->AddTransientChild(window); + return window; +} + +template <typename T> +bool ObjectIsAbove(T* upper, T* lower) { + DCHECK_EQ(upper->parent(), lower->parent()); + DCHECK_NE(upper, lower); + const std::vector<T*>& children = upper->parent()->children(); + const size_t upper_i = + std::find(children.begin(), children.end(), upper) - children.begin(); + const size_t lower_i = + std::find(children.begin(), children.end(), lower) - children.begin(); + return upper_i > lower_i; +} + +bool WindowIsAbove(Window* upper, Window* lower) { + return ObjectIsAbove<Window>(upper, lower); +} + +bool LayerIsAbove(Window* upper, Window* lower) { + return ObjectIsAbove<ui::Layer>(upper->layer(), lower->layer()); +} + } // namespace test } // namespace aura |