Chromium Code Reviews| Index: ash/mus/top_level_window_factory_unittest.cc |
| diff --git a/ash/mus/top_level_window_factory_unittest.cc b/ash/mus/top_level_window_factory_unittest.cc |
| index 36365f0481f42ac8816a1aab2ed08bc8478f14fa..7af8fe41a296ae7307bc26247775c738b730ebff 100644 |
| --- a/ash/mus/top_level_window_factory_unittest.cc |
| +++ b/ash/mus/top_level_window_factory_unittest.cc |
| @@ -10,16 +10,20 @@ |
| #include <string> |
| #include <vector> |
| -#include "ash/mus/test/wm_test_base.h" |
| #include "ash/mus/window_manager.h" |
| #include "ash/mus/window_manager_application.h" |
| -#include "ash/shell_port.h" |
| +#include "ash/shell.h" |
| #include "ash/test/ash_test.h" |
| #include "ash/test/ash_test_base.h" |
| #include "ash/test/ash_test_helper.h" |
| -#include "ash/wm_window.h" |
| +#include "ash/wm/window_properties.h" |
| +#include "services/ui/public/cpp/property_type_converters.h" |
| +#include "ui/aura/mus/property_converter.h" |
| #include "ui/aura/window.h" |
| #include "ui/display/screen.h" |
| +#include "ui/gfx/geometry/rect.h" |
| +#include "ui/gfx/test/gfx_util.h" |
| +#include "ui/wm/core/window_util.h" |
| namespace ash { |
| @@ -29,28 +33,47 @@ int64_t GetDisplayId(aura::Window* window) { |
| return display::Screen::GetScreen()->GetDisplayNearestWindow(window).id(); |
| } |
| +aura::Window* CreateFullscreenTestWindow(mus::WindowManager* window_manager, |
| + int64_t display_id) { |
| + std::map<std::string, std::vector<uint8_t>> properties; |
| + properties[ui::mojom::WindowManager::kShowState_Property] = |
| + mojo::ConvertTo<std::vector<uint8_t>>( |
| + static_cast<aura::PropertyConverter::PrimitiveType>( |
| + ui::mojom::ShowState::FULLSCREEN)); |
| + if (display_id != display::kInvalidDisplayId) { |
| + properties[ui::mojom::WindowManager::kDisplayId_InitProperty] = |
| + mojo::ConvertTo<std::vector<uint8_t>>(display_id); |
| + } |
| + aura::Window* window = mus::CreateAndParentTopLevelWindow( |
| + window_manager, ui::mojom::WindowType::WINDOW, &properties); |
| + window->Show(); |
| + return window; |
| +} |
| + |
| } // namespace |
| -using TopLevelWindowFactoryTest = AshTest; |
| +using TopLevelWindowFactoryTest = test::AshTestBase; |
| TEST_F(TopLevelWindowFactoryTest, CreateFullscreenWindow) { |
| - std::unique_ptr<WindowOwner> window_owner = CreateToplevelTestWindow(); |
| - WmWindow* window = window_owner->window(); |
| - window->SetFullscreen(true); |
| - WmWindow* root_window = ShellPort::Get()->GetPrimaryRootWindow(); |
| - EXPECT_EQ(root_window->GetBounds(), window->GetBounds()); |
| + std::unique_ptr<aura::Window> window = CreateTestWindow(); |
| + ::wm::SetWindowFullscreen(window.get(), true); |
| + aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
| + EXPECT_EQ(root_window->bounds(), window->bounds()); |
| } |
| -using TopLevelWindowFactoryWmTest = mus::WmTestBase; |
| +using TopLevelWindowFactoryWmTest = test::AshTestBase; |
| TEST_F(TopLevelWindowFactoryWmTest, IsWindowShownInCorrectDisplay) { |
| UpdateDisplay("400x400,400x400"); |
| EXPECT_NE(GetPrimaryDisplay().id(), GetSecondaryDisplay().id()); |
| + mus::WindowManager* window_manager = |
| + ash_test_helper()->window_manager_app()->window_manager(); |
| + |
| std::unique_ptr<aura::Window> window_primary_display( |
| - CreateFullscreenTestWindow(GetPrimaryDisplay().id())); |
| + CreateFullscreenTestWindow(window_manager, GetPrimaryDisplay().id())); |
| std::unique_ptr<aura::Window> window_secondary_display( |
| - CreateFullscreenTestWindow(GetSecondaryDisplay().id())); |
| + CreateFullscreenTestWindow(window_manager, GetSecondaryDisplay().id())); |
| EXPECT_EQ(GetPrimaryDisplay().id(), |
| GetDisplayId(window_primary_display.get())); |
| @@ -69,4 +92,27 @@ TEST_F(TopLevelWindowFactoryAshTest, TopLevelNotShownOnCreate) { |
| EXPECT_FALSE(window->IsVisible()); |
| } |
| +TEST_F(TopLevelWindowFactoryAshTest, CreateTopLevelWindow) { |
| + const gfx::Rect bounds(1, 2, 124, 345); |
|
James Cook
2017/04/26 23:54:08
Hooray for mixed data in tests!
|
| + std::map<std::string, std::vector<uint8_t>> properties; |
| + properties[ui::mojom::WindowManager::kBounds_InitProperty] = |
| + mojo::ConvertTo<std::vector<uint8_t>>(bounds); |
| + properties[ui::mojom::WindowManager::kResizeBehavior_Property] = |
| + mojo::ConvertTo<std::vector<uint8_t>>( |
| + static_cast<aura::PropertyConverter::PrimitiveType>( |
| + ui::mojom::kResizeBehaviorCanResize | |
| + ui::mojom::kResizeBehaviorCanMaximize | |
| + ui::mojom::kResizeBehaviorCanMinimize)); |
| + mus::WindowManager* window_manager = |
| + ash_test_helper()->window_manager_app()->window_manager(); |
| + // |window| is owned by its parent. |
| + aura::Window* window = CreateAndParentTopLevelWindow( |
| + window_manager, ui::mojom::WindowType::WINDOW, &properties); |
| + ASSERT_TRUE(window->parent()); |
| + EXPECT_EQ(kShellWindowId_DefaultContainer, window->parent()->id()); |
| + EXPECT_EQ(bounds, window->bounds()); |
| + EXPECT_EQ(WidgetCreationType::FOR_CLIENT, |
| + window->GetProperty(kWidgetCreationTypeKey)); |
| +} |
| + |
| } // namespace ash |