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_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_ 6#define MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_ 7 8#include "base/macros.h" 9#include "base/timer/timer.h" 10#include "cc/surfaces/surface_manager.h" 11#include "mojo/public/cpp/application/application_delegate.h" 12#include "mojo/public/cpp/application/interface_factory.h" 13#include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h" 14#include "mojo/services/surfaces/surfaces_impl.h" 15 16namespace mojo { 17class ApplicationConnection; 18 19class SurfacesServiceApplication : public ApplicationDelegate, 20 public InterfaceFactory<SurfacesService>, 21 public SurfacesImpl::Client { 22 public: 23 SurfacesServiceApplication(); 24 virtual ~SurfacesServiceApplication(); 25 26 // ApplicationDelegate implementation. 27 virtual bool ConfigureIncomingConnection( 28 ApplicationConnection* connection) OVERRIDE; 29 30 // InterfaceFactory<SurfacsServicee> implementation. 31 virtual void Create(ApplicationConnection* connection, 32 InterfaceRequest<SurfacesService> request) OVERRIDE; 33 34 // SurfacesImpl::Client implementation. 35 virtual void FrameSubmitted() OVERRIDE; 36 virtual void SetDisplay(cc::Display*) OVERRIDE; 37 38 private: 39 cc::SurfaceManager manager_; 40 uint32_t next_id_namespace_; 41 cc::Display* display_; 42 // TODO(jamesr): Integrate with real scheduler. 43 base::Timer draw_timer_; 44 45 DISALLOW_COPY_AND_ASSIGN(SurfacesServiceApplication); 46}; 47 48} // namespace mojo 49 50#endif // MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_ 51