// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/public/cpp/shell_window_ids.h"
#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
#include "ash/test/test_widget_builder.h"
#include "ui/aura/window.h"
#include "ui/wm/core/window_util.h"
namespace ash {
using WindowParentingControllerTest = AshTestBase;
// Verifies a window with a transient parent is in the same container as its
// transient parent.
TEST_F(WindowParentingControllerTest, TransientParent) {
// Normal window.
auto window = CreateAppWindow();
// Move the window to a container that isn't a default container.
aura::Window* shelf = Shell::GetContainer(Shell::GetPrimaryRootWindow(),
kShellWindowId_ShelfContainer);
shelf->AddChild(window.get());
// Transient.
std::unique_ptr<views::Widget> transient_widget =
TestWidgetBuilder()
.SetShow(true)
.SetParent(window.get())
.BuildOwnsNativeWidget();
ASSERT_TRUE(wm::HasTransientAncestor(transient_widget->GetNativeWindow(),
window.get()));
EXPECT_EQ(shelf, transient_widget->GetNativeWindow()->parent());
}
} // namespace ash