1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/macros.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/timer/timer.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "cc/surfaces/surface_manager.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_delegate.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/public/cpp/application/interface_factory.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h"
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/surfaces/surfaces_impl.h"
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo {
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass ApplicationConnection;
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SurfacesServiceApplication : public ApplicationDelegate,
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                   public InterfaceFactory<SurfacesService>,
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                   public SurfacesImpl::Client {
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  SurfacesServiceApplication();
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~SurfacesServiceApplication();
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // ApplicationDelegate implementation.
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool ConfigureIncomingConnection(
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      ApplicationConnection* connection) OVERRIDE;
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // InterfaceFactory<SurfacsServicee> implementation.
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Create(ApplicationConnection* connection,
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                      InterfaceRequest<SurfacesService> request) OVERRIDE;
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // SurfacesImpl::Client implementation.
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void FrameSubmitted() OVERRIDE;
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void SetDisplay(cc::Display*) OVERRIDE;
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  cc::SurfaceManager manager_;
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  uint32_t next_id_namespace_;
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  cc::Display* display_;
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // TODO(jamesr): Integrate with real scheduler.
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  base::Timer draw_timer_;
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(SurfacesServiceApplication);
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace mojo
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  //  MOJO_SERVICES_SURFACES_SURFACES_SERVICE_APPLICATION_H_
51