summaryrefslogtreecommitdiff
path: root/chromium/ui/ozone/demo/demo_window.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/ozone/demo/demo_window.h')
-rw-r--r--chromium/ui/ozone/demo/demo_window.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/chromium/ui/ozone/demo/demo_window.h b/chromium/ui/ozone/demo/demo_window.h
new file mode 100644
index 00000000000..6a41df1252b
--- /dev/null
+++ b/chromium/ui/ozone/demo/demo_window.h
@@ -0,0 +1,69 @@
+// Copyright 2018 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_DEMO_DEMO_WINDOW_H_
+#define UI_OZONE_DEMO_DEMO_WINDOW_H_
+
+#include "base/memory/weak_ptr.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/geometry/size.h"
+#include "ui/platform_window/platform_window_delegate.h"
+
+namespace ui {
+
+class Event;
+class PlatformWindow;
+class Renderer;
+class RendererFactory;
+class WindowManager;
+
+class DemoWindow : public PlatformWindowDelegate {
+ public:
+ DemoWindow(WindowManager* window_manager,
+ RendererFactory* renderer_factory,
+ const gfx::Rect& bounds);
+ ~DemoWindow() override;
+
+ gfx::AcceleratedWidget GetAcceleratedWidget();
+
+ gfx::Size GetSize();
+
+ void Start();
+ void Quit();
+
+ // PlatformWindowDelegate:
+ void OnBoundsChanged(const gfx::Rect& new_bounds) override;
+ void OnDamageRect(const gfx::Rect& damaged_region) override;
+ void DispatchEvent(Event* event) override;
+ void OnCloseRequest() override;
+ void OnClosed() override;
+ void OnWindowStateChanged(PlatformWindowState new_state) override;
+ void OnLostCapture() override;
+ void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget,
+ float device_pixel_ratio) override;
+ void OnAcceleratedWidgetDestroyed() override;
+ void OnActivationChanged(bool active) override;
+
+ private:
+ // Since we pretend to have a GPU process, we should also pretend to
+ // initialize the GPU resources via a posted task.
+ void StartOnGpu();
+
+ WindowManager* window_manager_; // Not owned.
+ RendererFactory* renderer_factory_; // Not owned.
+
+ std::unique_ptr<Renderer> renderer_;
+
+ // Window-related state.
+ std::unique_ptr<PlatformWindow> platform_window_;
+ gfx::AcceleratedWidget widget_ = gfx::kNullAcceleratedWidget;
+
+ base::WeakPtrFactory<DemoWindow> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(DemoWindow);
+};
+
+} // namespace ui
+
+#endif // UI_OZONE_DEMO_DEMO_WINDOW_H_