child_impl.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1// Copyright 2014 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_EXAMPLES_SURFACES_APP_CHILD_IMPL_H_ 6#define MOJO_EXAMPLES_SURFACES_APP_CHILD_IMPL_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "cc/surfaces/surface_id.h" 10#include "cc/surfaces/surface_id_allocator.h" 11#include "mojo/examples/surfaces_app/child.mojom.h" 12#include "mojo/public/cpp/bindings/string.h" 13#include "mojo/services/public/interfaces/surfaces/surface_id.mojom.h" 14#include "mojo/services/public/interfaces/surfaces/surfaces.mojom.h" 15#include "third_party/skia/include/core/SkColor.h" 16#include "ui/gfx/size.h" 17 18namespace cc { 19class CompositorFrame; 20} 21 22namespace mojo { 23 24class ApplicationConnection; 25 26namespace surfaces { 27class Surface; 28} 29 30namespace examples { 31 32// Simple example of a child app using surfaces. 33class ChildImpl : public InterfaceImpl<Child>, public SurfaceClient { 34 public: 35 class Context { 36 public: 37 virtual ApplicationConnection* ShellConnection( 38 const mojo::String& application_url) = 0; 39 }; 40 explicit ChildImpl(ApplicationConnection* surfaces_service_connection); 41 virtual ~ChildImpl(); 42 43 // SurfaceClient implementation 44 virtual void SetIdNamespace(uint32_t id_namespace) OVERRIDE; 45 virtual void ReturnResources( 46 Array<ReturnedResourcePtr> resources) OVERRIDE; 47 48 private: 49 // Child implementation. 50 virtual void ProduceFrame( 51 ColorPtr color, 52 SizePtr size, 53 const mojo::Callback<void(SurfaceIdPtr id)>& callback) OVERRIDE; 54 55 void Draw(); 56 57 SkColor color_; 58 gfx::Size size_; 59 scoped_ptr<cc::SurfaceIdAllocator> allocator_; 60 SurfacePtr surface_; 61 cc::SurfaceId id_; 62 mojo::Callback<void(SurfaceIdPtr id)> produce_callback_; 63 64 DISALLOW_COPY_AND_ASSIGN(ChildImpl); 65}; 66 67} // namespace examples 68} // namespace mojo 69 70#endif // MOJO_EXAMPLES_SURFACES_APP_CHILD_IMPL_H_ 71