reveman | b195f41d | 2015-11-19 22:16:48 | [diff] [blame] | 1 | // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #include "components/exo/test/exo_test_helper.h" |
| 6 | |
denniskempin | 31a496e | 2016-12-17 00:20:57 | [diff] [blame] | 7 | #include "ash/public/cpp/shell_window_ids.h" |
James Cook | b0bf8e8 | 2017-04-09 17:01:44 | [diff] [blame] | 8 | #include "ash/wm/window_positioner.h" |
| 9 | #include "ash/wm/window_positioning_utils.h" |
denniskempin | 31a496e | 2016-12-17 00:20:57 | [diff] [blame] | 10 | #include "components/exo/buffer.h" |
| 11 | #include "components/exo/shell_surface.h" |
| 12 | #include "components/exo/surface.h" |
reveman | b195f41d | 2015-11-19 22:16:48 | [diff] [blame] | 13 | #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" |
| 14 | #include "ui/aura/env.h" |
| 15 | #include "ui/compositor/compositor.h" |
denniskempin | 31a496e | 2016-12-17 00:20:57 | [diff] [blame] | 16 | #include "ui/views/widget/widget.h" |
reveman | b195f41d | 2015-11-19 22:16:48 | [diff] [blame] | 17 | |
| 18 | namespace exo { |
| 19 | namespace test { |
| 20 | |
| 21 | //////////////////////////////////////////////////////////////////////////////// |
| 22 | // ExoTestHelper, public: |
| 23 | |
denniskempin | 31a496e | 2016-12-17 00:20:57 | [diff] [blame] | 24 | ExoTestWindow::ExoTestWindow(std::unique_ptr<gfx::GpuMemoryBuffer> gpu_buffer, |
| 25 | bool is_modal) { |
| 26 | surface_.reset(new Surface()); |
| 27 | int container = is_modal ? ash::kShellWindowId_SystemModalContainer |
| 28 | : ash::kShellWindowId_DefaultContainer; |
| 29 | shell_surface_.reset(new ShellSurface(surface_.get(), nullptr, |
domlaskowski | 886e1c8 | 2017-02-15 01:08:04 | [diff] [blame] | 30 | ShellSurface::BoundsMode::SHELL, |
| 31 | gfx::Point(), true, false, container)); |
denniskempin | 31a496e | 2016-12-17 00:20:57 | [diff] [blame] | 32 | |
| 33 | buffer_.reset(new Buffer(std::move(gpu_buffer))); |
| 34 | surface_->Attach(buffer_.get()); |
| 35 | surface_->Commit(); |
| 36 | |
varkha | 5b72981 | 2017-05-25 18:51:47 | [diff] [blame] | 37 | ash::wm::CenterWindow(shell_surface_->GetWidget()->GetNativeWindow()); |
denniskempin | 31a496e | 2016-12-17 00:20:57 | [diff] [blame] | 38 | } |
| 39 | |
| 40 | ExoTestWindow::ExoTestWindow(ExoTestWindow&& other) { |
| 41 | surface_ = std::move(other.surface_); |
| 42 | buffer_ = std::move(other.buffer_); |
| 43 | shell_surface_ = std::move(other.shell_surface_); |
| 44 | } |
| 45 | |
| 46 | ExoTestWindow::~ExoTestWindow() {} |
| 47 | |
| 48 | gfx::Point ExoTestWindow::origin() { |
| 49 | return surface_->window()->GetBoundsInScreen().origin(); |
| 50 | } |
| 51 | |
| 52 | //////////////////////////////////////////////////////////////////////////////// |
| 53 | // ExoTestHelper, public: |
| 54 | |
| 55 | ExoTestHelper::ExoTestHelper() { |
| 56 | ash::WindowPositioner::DisableAutoPositioning(true); |
| 57 | } |
reveman | b195f41d | 2015-11-19 22:16:48 | [diff] [blame] | 58 | |
| 59 | ExoTestHelper::~ExoTestHelper() {} |
| 60 | |
dcheng | 31759da | 2016-04-21 01:26:31 | [diff] [blame] | 61 | std::unique_ptr<gfx::GpuMemoryBuffer> ExoTestHelper::CreateGpuMemoryBuffer( |
reveman | ca132dc | 2017-01-31 22:35:54 | [diff] [blame] | 62 | const gfx::Size& size, |
| 63 | gfx::BufferFormat format) { |
reveman | b195f41d | 2015-11-19 22:16:48 | [diff] [blame] | 64 | return aura::Env::GetInstance() |
| 65 | ->context_factory() |
| 66 | ->GetGpuMemoryBufferManager() |
reveman | ca132dc | 2017-01-31 22:35:54 | [diff] [blame] | 67 | ->CreateGpuMemoryBuffer(size, format, gfx::BufferUsage::GPU_READ, |
sadrul | 86a858ab | 2016-11-23 20:49:06 | [diff] [blame] | 68 | gpu::kNullSurfaceHandle); |
reveman | b195f41d | 2015-11-19 22:16:48 | [diff] [blame] | 69 | } |
| 70 | |
denniskempin | 31a496e | 2016-12-17 00:20:57 | [diff] [blame] | 71 | ExoTestWindow ExoTestHelper::CreateWindow(int width, |
| 72 | int height, |
| 73 | bool is_modal) { |
| 74 | return ExoTestWindow(CreateGpuMemoryBuffer(gfx::Size(width, height)), |
| 75 | is_modal); |
| 76 | } |
| 77 | |
reveman | b195f41d | 2015-11-19 22:16:48 | [diff] [blame] | 78 | } // namespace test |
| 79 | } // namespace exo |