platform_viewport.h revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
1// Copyright 2013 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#ifndef MOJO_SERVICES_NATIVE_VIEWPORT_PLATFORM_VIEWPORT_H_
6#define MOJO_SERVICES_NATIVE_VIEWPORT_PLATFORM_VIEWPORT_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "ui/gfx/native_widget_types.h"
10#include "ui/gfx/size.h"
11
12namespace gfx {
13class Rect;
14}
15
16namespace ui {
17class Event;
18}
19
20namespace mojo {
21
22// Encapsulation of platform-specific Viewport.
23class PlatformViewport {
24 public:
25  class Delegate {
26   public:
27    virtual ~Delegate() {}
28
29    virtual void OnBoundsChanged(const gfx::Rect& size) = 0;
30    virtual void OnAcceleratedWidgetAvailable(
31        gfx::AcceleratedWidget widget) = 0;
32    virtual bool OnEvent(ui::Event* ui_event) = 0;
33    virtual void OnDestroyed() = 0;
34  };
35
36  virtual ~PlatformViewport() {}
37
38  virtual void Init(const gfx::Rect& bounds) = 0;
39  virtual void Show() = 0;
40  virtual void Hide() = 0;
41  virtual void Close() = 0;
42  virtual gfx::Size GetSize() = 0;
43  virtual void SetBounds(const gfx::Rect& bounds) = 0;
44
45  virtual void SetCapture() = 0;
46  virtual void ReleaseCapture() = 0;
47
48  static scoped_ptr<PlatformViewport> Create(Delegate* delegate);
49};
50
51}  // namespace mojo
52
53#endif  // MOJO_SERVICES_NATIVE_VIEWPORT_PLATFORM_VIEWPORT_H_
54