15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_AURA_TEST_TEST_SCREEN_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_AURA_TEST_TEST_SCREEN_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/aura/window_observer.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/display.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/screen.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace gfx { 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class Insets; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Rect; 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class Transform; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Window; 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class WindowTreeHost; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A minimal, testing Aura implementation of gfx::Screen. 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TestScreen : public gfx::Screen, 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public WindowObserver { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 276d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // Creates a gfx::Screen of the specified size. If no size is specified, then 286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) // creates a 800x600 screen. |size| is in physical pixels. 296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) static TestScreen* Create(const gfx::Size& size); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates a TestScreen that uses fullscreen for the display. 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static TestScreen* CreateFullscreen(); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TestScreen(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) WindowTreeHost* CreateHostForPrimaryDisplay(); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetDeviceScaleFactor(float device_scale_fator); 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void SetDisplayRotation(gfx::Display::Rotation rotation); 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void SetUIScale(float ui_scale); 3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void SetWorkAreaInsets(const gfx::Insets& insets); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::Transform GetRotationTransform() const; 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::Transform GetUIScaleTransform() const; 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // WindowObserver overrides: 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnWindowBoundsChanged(Window* window, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Rect& old_bounds, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Rect& new_bounds) OVERRIDE; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnWindowDestroying(Window* window) OVERRIDE; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // gfx::Screen overrides: 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsDIPEnabled() OVERRIDE; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Point GetCursorScreenPoint() OVERRIDE; 54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual gfx::NativeWindow GetWindowUnderCursor() OVERRIDE; 55424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual gfx::NativeWindow GetWindowAtScreenPoint(const gfx::Point& point) 56424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) OVERRIDE; 57424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual int GetNumDisplays() const OVERRIDE; 58424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual std::vector<gfx::Display> GetAllDisplays() const OVERRIDE; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Display GetDisplayNearestWindow( 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeView view) const OVERRIDE; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Display GetDisplayNearestPoint( 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& point) const OVERRIDE; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Display GetDisplayMatching( 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& match_rect) const OVERRIDE; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Display GetPrimaryDisplay() const OVERRIDE; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void AddObserver(gfx::DisplayObserver* observer) OVERRIDE; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void RemoveObserver(gfx::DisplayObserver* observer) OVERRIDE; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit TestScreen(const gfx::Rect& screen_bounds); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) aura::WindowTreeHost* host_; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Display display_; 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) float ui_scale_; 7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestScreen); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace aura 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_AURA_TEST_TEST_SCREEN_H_ 84