diff options
Diffstat (limited to 'ui/ozone')
-rw-r--r-- | ui/ozone/DEPS | 1 | ||||
-rw-r--r-- | ui/ozone/common/window/platform_window_compat.cc | 79 | ||||
-rw-r--r-- | ui/ozone/common/window/platform_window_compat.h | 59 | ||||
-rw-r--r-- | ui/ozone/ozone.gyp | 2 | ||||
-rw-r--r-- | ui/ozone/platform/caca/ozone_platform_caca.cc | 7 | ||||
-rw-r--r-- | ui/ozone/platform/dri/ozone_platform_dri.cc | 7 | ||||
-rw-r--r-- | ui/ozone/platform/dri/ozone_platform_gbm.cc | 7 | ||||
-rw-r--r-- | ui/ozone/platform/egltest/ozone_platform_egltest.cc | 7 | ||||
-rw-r--r-- | ui/ozone/platform/test/ozone_platform_test.cc | 7 | ||||
-rw-r--r-- | ui/ozone/public/ozone_platform.h | 9 |
10 files changed, 185 insertions, 0 deletions
diff --git a/ui/ozone/DEPS b/ui/ozone/DEPS index 8f39e9e..b4ed3b00 100644 --- a/ui/ozone/DEPS +++ b/ui/ozone/DEPS @@ -5,4 +5,5 @@ include_rules = [ "+ui/events", "+ui/gfx", "+ui/base/cursor", + "+ui/platform_window", ] diff --git a/ui/ozone/common/window/platform_window_compat.cc b/ui/ozone/common/window/platform_window_compat.cc new file mode 100644 index 0000000..5703680 --- /dev/null +++ b/ui/ozone/common/window/platform_window_compat.cc @@ -0,0 +1,79 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/ozone/common/window/platform_window_compat.h" + +#include "ui/events/event.h" +#include "ui/events/platform/platform_event_source.h" +#include "ui/ozone/public/cursor_factory_ozone.h" +#include "ui/ozone/public/event_factory_ozone.h" +#include "ui/ozone/public/surface_factory_ozone.h" +#include "ui/platform_window/platform_window_delegate.h" + +namespace ui { + +PlatformWindowCompat::PlatformWindowCompat(PlatformWindowDelegate* delegate, + const gfx::Rect& bounds) + : delegate_(delegate), bounds_(bounds) { + widget_ = SurfaceFactoryOzone::GetInstance()->GetAcceleratedWidget(); + delegate_->OnAcceleratedWidgetAvailable(widget_); + ui::PlatformEventSource::GetInstance()->AddPlatformEventDispatcher(this); +} + +PlatformWindowCompat::~PlatformWindowCompat() { + ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this); +} + +bool PlatformWindowCompat::CanDispatchEvent(const ui::PlatformEvent& ne) { + CHECK(ne); + ui::Event* event = static_cast<ui::Event*>(ne); + if (event->IsMouseEvent() || event->IsScrollEvent()) + return ui::CursorFactoryOzone::GetInstance()->GetCursorWindow() == widget_; + + return true; +} + +uint32_t PlatformWindowCompat::DispatchEvent(const ui::PlatformEvent& ne) { + ui::Event* event = static_cast<ui::Event*>(ne); + delegate_->DispatchEvent(event); + return ui::POST_DISPATCH_STOP_PROPAGATION; +} + +gfx::Rect PlatformWindowCompat::GetBounds() { + return bounds_; +} + +void PlatformWindowCompat::SetBounds(const gfx::Rect& bounds) { + bounds_ = bounds; + delegate_->OnBoundsChanged(bounds); +} + +void PlatformWindowCompat::Show() { +} + +void PlatformWindowCompat::Hide() { +} + +void PlatformWindowCompat::Close() { +} + +void PlatformWindowCompat::SetCapture() { +} + +void PlatformWindowCompat::ReleaseCapture() { +} + +void PlatformWindowCompat::ToggleFullscreen() { +} + +void PlatformWindowCompat::Maximize() { +} + +void PlatformWindowCompat::Minimize() { +} + +void PlatformWindowCompat::Restore() { +} + +} // namespace ui diff --git a/ui/ozone/common/window/platform_window_compat.h b/ui/ozone/common/window/platform_window_compat.h new file mode 100644 index 0000000..503a2de --- /dev/null +++ b/ui/ozone/common/window/platform_window_compat.h @@ -0,0 +1,59 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_OZONE_COMMON_WINDOW_PLATFORM_WINDOW_COMPAT_H_ +#define UI_OZONE_COMMON_WINDOW_PLATFORM_WINDOW_COMPAT_H_ + +#include "ui/base/cursor/cursor.h" +#include "ui/events/platform/platform_event_dispatcher.h" +#include "ui/gfx/geometry/rect.h" +#include "ui/gfx/native_widget_types.h" +#include "ui/ozone/ozone_export.h" +#include "ui/platform_window/platform_window.h" + +namespace gfx { +class Point; +class Rect; +} + +namespace ui { + +class PlatformWindowDelegate; + +// This is just transitional code. Will be removed shortly. +class OZONE_EXPORT PlatformWindowCompat : public PlatformWindow, + public ui::PlatformEventDispatcher { + public: + PlatformWindowCompat(PlatformWindowDelegate* delegate, + const gfx::Rect& bounds); + virtual ~PlatformWindowCompat(); + + // ui::PlatformEventDispatcher: + virtual bool CanDispatchEvent(const ui::PlatformEvent& event) OVERRIDE; + virtual uint32_t DispatchEvent(const ui::PlatformEvent& event) OVERRIDE; + + // PlatformWindow: + virtual gfx::Rect GetBounds() OVERRIDE; + virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; + virtual void Show() OVERRIDE; + virtual void Hide() OVERRIDE; + virtual void Close() OVERRIDE; + virtual void SetCapture() OVERRIDE; + virtual void ReleaseCapture() OVERRIDE; + virtual void ToggleFullscreen() OVERRIDE; + virtual void Maximize() OVERRIDE; + virtual void Minimize() OVERRIDE; + virtual void Restore() OVERRIDE; + + private: + PlatformWindowDelegate* delegate_; + gfx::AcceleratedWidget widget_; + gfx::Rect bounds_; + + DISALLOW_COPY_AND_ASSIGN(PlatformWindowCompat); +}; + +} // namespace ui + +#endif // UI_OZONE_COMMON_WINDOW_PLATFORM_WINDOW_COMPAT_H_ diff --git a/ui/ozone/ozone.gyp b/ui/ozone/ozone.gyp index 39b1100..9e9828f 100644 --- a/ui/ozone/ozone.gyp +++ b/ui/ozone/ozone.gyp @@ -100,6 +100,8 @@ 'common/gpu/ozone_gpu_message_params.cc', 'common/gpu/ozone_gpu_message_params.h', 'common/gpu/ozone_gpu_messages.h', + 'common/window/platform_window_compat.cc', + 'common/window/platform_window_compat.h', 'public/ozone_platform.cc', 'public/ozone_platform.h', 'public/ozone_switches.cc', diff --git a/ui/ozone/platform/caca/ozone_platform_caca.cc b/ui/ozone/platform/caca/ozone_platform_caca.cc index 1146856..36b6414 100644 --- a/ui/ozone/platform/caca/ozone_platform_caca.cc +++ b/ui/ozone/platform/caca/ozone_platform_caca.cc @@ -4,6 +4,7 @@ #include "ui/ozone/platform/caca/ozone_platform_caca.h" +#include "ui/ozone/common/window/platform_window_compat.h" #include "ui/ozone/platform/caca/caca_connection.h" #include "ui/ozone/platform/caca/caca_event_factory.h" #include "ui/ozone/platform/caca/caca_surface_factory.h" @@ -40,6 +41,12 @@ class OzonePlatformCaca : public OzonePlatform { virtual GpuPlatformSupportHost* GetGpuPlatformSupportHost() OVERRIDE { return NULL; // no GPU support } + virtual scoped_ptr<PlatformWindow> CreatePlatformWindow( + PlatformWindowDelegate* delegate, + const gfx::Rect& bounds) OVERRIDE { + return make_scoped_ptr<PlatformWindow>( + new PlatformWindowCompat(delegate, bounds)); + } #if defined(OS_CHROMEOS) virtual scoped_ptr<NativeDisplayDelegate> CreateNativeDisplayDelegate() diff --git a/ui/ozone/platform/dri/ozone_platform_dri.cc b/ui/ozone/platform/dri/ozone_platform_dri.cc index bb4c9a3..b369a6d 100644 --- a/ui/ozone/platform/dri/ozone_platform_dri.cc +++ b/ui/ozone/platform/dri/ozone_platform_dri.cc @@ -8,6 +8,7 @@ #include "ui/events/ozone/device/device_manager.h" #include "ui/events/ozone/evdev/cursor_delegate_evdev.h" #include "ui/events/ozone/evdev/event_factory_evdev.h" +#include "ui/ozone/common/window/platform_window_compat.h" #include "ui/ozone/platform/dri/cursor_factory_evdev_dri.h" #include "ui/ozone/platform/dri/dri_surface.h" #include "ui/ozone/platform/dri/dri_surface_factory.h" @@ -77,6 +78,12 @@ class OzonePlatformDri : public OzonePlatform { virtual GpuPlatformSupportHost* GetGpuPlatformSupportHost() OVERRIDE { return NULL; // no GPU support } + virtual scoped_ptr<PlatformWindow> CreatePlatformWindow( + PlatformWindowDelegate* delegate, + const gfx::Rect& bounds) OVERRIDE { + return make_scoped_ptr<PlatformWindow>( + new PlatformWindowCompat(delegate, bounds)); + } #if defined(OS_CHROMEOS) virtual scoped_ptr<NativeDisplayDelegate> CreateNativeDisplayDelegate() OVERRIDE { diff --git a/ui/ozone/platform/dri/ozone_platform_gbm.cc b/ui/ozone/platform/dri/ozone_platform_gbm.cc index 34939db..f043996 100644 --- a/ui/ozone/platform/dri/ozone_platform_gbm.cc +++ b/ui/ozone/platform/dri/ozone_platform_gbm.cc @@ -11,6 +11,7 @@ #include "base/at_exit.h" #include "ui/events/ozone/device/device_manager.h" #include "ui/events/ozone/evdev/event_factory_evdev.h" +#include "ui/ozone/common/window/platform_window_compat.h" #include "ui/ozone/platform/dri/cursor_factory_evdev_dri.h" #include "ui/ozone/platform/dri/dri_wrapper.h" #include "ui/ozone/platform/dri/gbm_buffer.h" @@ -107,6 +108,12 @@ class OzonePlatformGbm : public OzonePlatform { virtual GpuPlatformSupportHost* GetGpuPlatformSupportHost() OVERRIDE { return gpu_platform_support_host_.get(); } + virtual scoped_ptr<PlatformWindow> CreatePlatformWindow( + PlatformWindowDelegate* delegate, + const gfx::Rect& bounds) OVERRIDE { + return make_scoped_ptr<PlatformWindow>( + new PlatformWindowCompat(delegate, bounds)); + } #if defined(OS_CHROMEOS) virtual scoped_ptr<NativeDisplayDelegate> CreateNativeDisplayDelegate() OVERRIDE { diff --git a/ui/ozone/platform/egltest/ozone_platform_egltest.cc b/ui/ozone/platform/egltest/ozone_platform_egltest.cc index ebea5d0..dc34d73 100644 --- a/ui/ozone/platform/egltest/ozone_platform_egltest.cc +++ b/ui/ozone/platform/egltest/ozone_platform_egltest.cc @@ -12,6 +12,7 @@ #include "ui/events/ozone/device/device_manager.h" #include "ui/events/ozone/evdev/event_factory_evdev.h" #include "ui/gfx/vsync_provider.h" +#include "ui/ozone/common/window/platform_window_compat.h" #include "ui/ozone/public/cursor_factory_ozone.h" #include "ui/ozone/public/gpu_platform_support.h" #include "ui/ozone/public/gpu_platform_support_host.h" @@ -260,6 +261,12 @@ class OzonePlatformEgltest : public OzonePlatform { virtual GpuPlatformSupportHost* GetGpuPlatformSupportHost() OVERRIDE { return gpu_platform_support_host_.get(); } + virtual scoped_ptr<PlatformWindow> CreatePlatformWindow( + PlatformWindowDelegate* delegate, + const gfx::Rect& bounds) OVERRIDE { + return make_scoped_ptr<PlatformWindow>( + new PlatformWindowCompat(delegate, bounds)); + } #if defined(OS_CHROMEOS) virtual scoped_ptr<NativeDisplayDelegate> CreateNativeDisplayDelegate() diff --git a/ui/ozone/platform/test/ozone_platform_test.cc b/ui/ozone/platform/test/ozone_platform_test.cc index 2473e37..3f42d1f 100644 --- a/ui/ozone/platform/test/ozone_platform_test.cc +++ b/ui/ozone/platform/test/ozone_platform_test.cc @@ -8,6 +8,7 @@ #include "base/files/file_path.h" #include "ui/events/ozone/device/device_manager.h" #include "ui/events/ozone/evdev/event_factory_evdev.h" +#include "ui/ozone/common/window/platform_window_compat.h" #include "ui/ozone/platform/test/file_surface_factory.h" #include "ui/ozone/platform/test/test_cursor_factory.h" #include "ui/ozone/public/gpu_platform_support.h" @@ -48,6 +49,12 @@ class OzonePlatformTest : public OzonePlatform { virtual GpuPlatformSupportHost* GetGpuPlatformSupportHost() OVERRIDE { return gpu_platform_support_host_.get(); } + virtual scoped_ptr<PlatformWindow> CreatePlatformWindow( + PlatformWindowDelegate* delegate, + const gfx::Rect& bounds) OVERRIDE { + return make_scoped_ptr<PlatformWindow>( + new PlatformWindowCompat(delegate, bounds)); + } #if defined(OS_CHROMEOS) virtual scoped_ptr<NativeDisplayDelegate> CreateNativeDisplayDelegate() diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h index 9716016..8620bf5 100644 --- a/ui/ozone/public/ozone_platform.h +++ b/ui/ozone/public/ozone_platform.h @@ -8,6 +8,10 @@ #include "base/memory/scoped_ptr.h" #include "ui/ozone/ozone_export.h" +namespace gfx { +class Rect; +} + namespace ui { class CursorFactoryOzone; @@ -17,6 +21,8 @@ class SurfaceFactoryOzone; class TouchscreenDeviceManager; class GpuPlatformSupport; class GpuPlatformSupportHost; +class PlatformWindow; +class PlatformWindowDelegate; // Base class for Ozone platform implementations. // @@ -54,6 +60,9 @@ class OZONE_EXPORT OzonePlatform { virtual ui::CursorFactoryOzone* GetCursorFactoryOzone() = 0; virtual ui::GpuPlatformSupport* GetGpuPlatformSupport() = 0; virtual ui::GpuPlatformSupportHost* GetGpuPlatformSupportHost() = 0; + virtual scoped_ptr<PlatformWindow> CreatePlatformWindow( + PlatformWindowDelegate* delegate, + const gfx::Rect& bounds) = 0; #if defined(OS_CHROMEOS) virtual scoped_ptr<ui::NativeDisplayDelegate> CreateNativeDisplayDelegate() = 0; |