| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/exo/input_method_surface.h" |
| |
| #include "ash/shell.h" |
| #include "components/exo/buffer.h" |
| #include "components/exo/input_method_surface_manager.h" |
| #include "components/exo/test/exo_test_base.h" |
| #include "components/exo/test/exo_test_helper.h" |
| #include "ui/display/display.h" |
| |
| namespace exo { |
| |
| class InputMethodSurfaceTest : public test::ExoTestBase, |
| public InputMethodSurfaceManager { |
| public: |
| InputMethodSurfaceTest() = default; |
| InputMethodSurfaceTest(const InputMethodSurfaceTest&) = delete; |
| InputMethodSurfaceTest& operator=(const InputMethodSurfaceTest&) = delete; |
| |
| // Overridden from InputMethodSurfaceTest: |
| InputMethodSurface* GetSurface() const override { return nullptr; } |
| void AddSurface(InputMethodSurface* surface) override {} |
| void RemoveSurface(InputMethodSurface* surface) override {} |
| void OnTouchableBoundsChanged(InputMethodSurface* surface) override {} |
| }; |
| |
| TEST_F(InputMethodSurfaceTest, SetGeometryShouldIgnoreWorkArea) { |
| UpdateDisplay("800x600"); |
| |
| int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| display::DisplayManager* display_manager = |
| ash::Shell::Get()->display_manager(); |
| |
| // With work area top insets. |
| display_manager->UpdateWorkAreaOfDisplay(display_id, |
| gfx::Insets::TLBR(200, 0, 0, 0)); |
| |
| gfx::Size buffer_size(800, 600); |
| auto buffer = test::ExoTestHelper::CreateBuffer(buffer_size); |
| std::unique_ptr<Surface> surface(new Surface); |
| auto shell_surface = |
| exo_test_helper()->CreateInputMethodSurface(surface.get(), this); |
| surface->Attach(buffer.get()); |
| shell_surface->SetGeometry(gfx::Rect(buffer_size)); |
| surface->Commit(); |
| |
| views::Widget* widget = shell_surface->GetWidget(); |
| EXPECT_EQ(gfx::Rect(buffer_size), widget->GetWindowBoundsInScreen()); |
| } |
| |
| } // namespace exo |