1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // Copyright 2018 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 "ui/aura_extra/window_position_in_root_monitor.h"
- #include "base/bind.h"
- #include "base/callback.h"
- #include "base/test/bind.h"
- #include "ui/aura/test/aura_test_base.h"
- #include "ui/aura/test/test_windows.h"
- #include "ui/aura/window.h"
- #include "ui/gfx/geometry/rect.h"
- namespace aura_extra {
- using WindowPositionInRootMonitorTest = aura::test::AuraTestBase;
- TEST_F(WindowPositionInRootMonitorTest, Basic) {
- // Changing the position while not in a root should not notify the callback.
- std::unique_ptr<aura::Window> w1(
- aura::test::CreateTestWindowWithId(1, nullptr));
- w1->set_owned_by_parent(false);
- bool monitor_notified = false;
- WindowPositionInRootMonitor monitor(
- w1.get(), base::BindLambdaForTesting([&] { monitor_notified = true; }));
- w1->SetBounds(gfx::Rect(1, 2, 3, 4));
- EXPECT_FALSE(monitor_notified);
- w1->SetBounds(gfx::Rect(11, 2, 3, 4));
- EXPECT_FALSE(monitor_notified);
- // Adding an ancestor that is not part of the root should not notify the
- // callback.
- std::unique_ptr<aura::Window> w2(
- aura::test::CreateTestWindowWithId(2, nullptr));
- w2->set_owned_by_parent(false);
- w2->AddChild(w1.get());
- EXPECT_FALSE(monitor_notified);
- w2->SetBounds(gfx::Rect(21, 10, 20, 20));
- EXPECT_FALSE(monitor_notified);
- // Adding to the root should immediately notify.
- root_window()->AddChild(w2.get());
- EXPECT_TRUE(monitor_notified);
- monitor_notified = false;
- // Changing |w2|'s bounds show notify as |w2| is the parent and |w1| is in a
- // root.
- w2->SetBounds(gfx::Rect(22, 10, 20, 20));
- EXPECT_TRUE(monitor_notified);
- monitor_notified = false;
- // Removing an ancestor, and changing the ancestors bounds should not notify.
- root_window()->RemoveChild(w2.get());
- EXPECT_FALSE(monitor_notified);
- w2->SetBounds(gfx::Rect(21, 22, 23, 24));
- EXPECT_FALSE(monitor_notified);
- // Add |w1| directly to the root, should immediately notify.
- root_window()->AddChild(w1.get());
- EXPECT_TRUE(monitor_notified);
- monitor_notified = false;
- // Changing |w1|s bounds should notify as in a root.
- w1->SetBounds(gfx::Rect(101, 102, 12, 13));
- EXPECT_TRUE(monitor_notified);
- monitor_notified = false;
- // Changing the size should not notify.
- w1->SetBounds(gfx::Rect(101, 102, 121, 13));
- EXPECT_FALSE(monitor_notified);
- }
- } // namespace aura_extra
|