| Index: ui/views/mus/desktop_window_tree_host_mus_unittest.cc
|
| diff --git a/ui/views/mus/desktop_window_tree_host_mus_unittest.cc b/ui/views/mus/desktop_window_tree_host_mus_unittest.cc
|
| index 74ed9522f0f158176d4889a892fd37df63ca7669..0b63897e804bde974d3582b3fbe5a25ccc8e5e04 100644
|
| --- a/ui/views/mus/desktop_window_tree_host_mus_unittest.cc
|
| +++ b/ui/views/mus/desktop_window_tree_host_mus_unittest.cc
|
| @@ -9,7 +9,10 @@
|
| #include "base/memory/ptr_util.h"
|
| #include "base/run_loop.h"
|
| #include "ui/aura/client/cursor_client.h"
|
| +#include "ui/aura/mus/in_flight_change.h"
|
| #include "ui/aura/window.h"
|
| +#include "ui/views/mus/mus_client_test_observer.h"
|
| +#include "ui/views/mus/test_utils.h"
|
| #include "ui/views/test/views_test_base.h"
|
| #include "ui/views/widget/widget.h"
|
| #include "ui/views/widget/widget_delegate.h"
|
| @@ -102,6 +105,46 @@ class ExpectsNullCursorClientDuringTearDown : public aura::WindowObserver {
|
| DISALLOW_COPY_AND_ASSIGN(ExpectsNullCursorClientDuringTearDown);
|
| };
|
|
|
| +class WaitForChangeCompletor : public test::MusClientTestObserver {
|
| + public:
|
| + WaitForChangeCompletor(aura::ChangeType type,
|
| + bool success)
|
| + : type_(type),
|
| + success_(success),
|
| + received_(false) {
|
| + test::MusClientTestApi::SetChangeTestObserver(this);
|
| + }
|
| +
|
| + ~WaitForChangeCompletor() override {
|
| + test::MusClientTestApi::SetChangeTestObserver(nullptr);
|
| + }
|
| +
|
| + void Wait() {
|
| + if (!received_) {
|
| + quit_closure_ = run_loop_.QuitClosure();
|
| + run_loop_.Run();
|
| + }
|
| + }
|
| +
|
| + private:
|
| + // test::MusClientTestObserver:
|
| + void OnChangeCompleted(aura::ChangeType type, bool success) override {
|
| + if (type == type_ && success == success_) {
|
| + received_ = true;
|
| + if (quit_closure_)
|
| + quit_closure_.Run();
|
| + }
|
| + }
|
| +
|
| + base::RunLoop run_loop_;
|
| + aura::ChangeType type_;
|
| + bool success_;
|
| + bool received_;
|
| + base::Closure quit_closure_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(WaitForChangeCompletor);
|
| +};
|
| +
|
| TEST_F(DesktopWindowTreeHostMusTest, Visibility) {
|
| std::unique_ptr<Widget> widget(CreateWidget(nullptr));
|
| EXPECT_FALSE(widget->IsVisible());
|
| @@ -147,4 +190,32 @@ TEST_F(DesktopWindowTreeHostMusTest, CursorClientDuringTearDown) {
|
| widget.reset();
|
| }
|
|
|
| +TEST_F(DesktopWindowTreeHostMusTest, StackAtTop) {
|
| + std::unique_ptr<Widget> widget1(CreateWidget(nullptr));
|
| + widget1->Show();
|
| +
|
| + std::unique_ptr<Widget> widget2(CreateWidget(nullptr));
|
| + widget2->Show();
|
| +
|
| + WaitForChangeCompletor waiter(aura::ChangeType::REORDER, true);
|
| + widget1->StackAtTop();
|
| + waiter.Wait();
|
| +
|
| + // Other than the signal that our StackAtTop() succeeded, we don't have any
|
| + // pieces of public data that we can check. If we actually stopped waiting,
|
| + // count that as success.
|
| +}
|
| +
|
| +TEST_F(DesktopWindowTreeHostMusTest, StackAtTopAlreadyOnTop) {
|
| + std::unique_ptr<Widget> widget1(CreateWidget(nullptr));
|
| + widget1->Show();
|
| +
|
| + std::unique_ptr<Widget> widget2(CreateWidget(nullptr));
|
| + widget2->Show();
|
| +
|
| + WaitForChangeCompletor waiter(aura::ChangeType::REORDER, true);
|
| + widget2->StackAtTop();
|
| + waiter.Wait();
|
| +}
|
| +
|
| } // namespace views
|
|
|