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_NATIVE_VIEWPORT_H_ 6#define MOJO_SERVICES_NATIVE_VIEWPORT_NATIVE_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 ui { 13class Event; 14} 15 16namespace mojo { 17namespace shell { 18class Context; 19} 20 21namespace services { 22 23class NativeViewportDelegate { 24 public: 25 virtual ~NativeViewportDelegate() {} 26 27 virtual void OnResized(const gfx::Size& size) = 0; 28 virtual void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) = 0; 29 virtual bool OnEvent(ui::Event* ui_event) = 0; 30 virtual void OnDestroyed() = 0; 31}; 32 33// Encapsulation of platform-specific Viewport. 34// TODO(abarth): Rename this class so that it doesn't conflict with the name of 35// the service. 36class NativeViewport { 37 public: 38 virtual ~NativeViewport() {} 39 40 virtual void Init() = 0; 41 virtual void Close() = 0; 42 virtual gfx::Size GetSize() = 0; 43 44 virtual void SetCapture() = 0; 45 virtual void ReleaseCapture() = 0; 46 47 static scoped_ptr<NativeViewport> Create(shell::Context* context, 48 NativeViewportDelegate* delegate); 49}; 50 51} // namespace services 52} // namespace mojo 53 54#endif // MOJO_SERVICES_NATIVE_VIEWPORT_NATIVE_VIEWPORT_H_ 55