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.
5 #include "components/surfaces/surfaces_service_application.h"
7 #include "components/surfaces/display_factory_impl.h"
8 #include "components/surfaces/surfaces_impl.h"
9 #include "components/surfaces/surfaces_scheduler.h"
10 #include "mojo/application/application_runner_chromium.h"
11 #include "third_party/mojo/src/mojo/public/c/system/main.h"
15 SurfacesServiceApplication::SurfacesServiceApplication()
16 : next_id_namespace_(1u) {
19 SurfacesServiceApplication::~SurfacesServiceApplication() {
22 void SurfacesServiceApplication::Initialize(mojo::ApplicationImpl
* app
) {
23 tracing_
.Initialize(app
);
24 scheduler_
.reset(new SurfacesScheduler
);
27 bool SurfacesServiceApplication::ConfigureIncomingConnection(
28 mojo::ApplicationConnection
* connection
) {
29 connection
->AddService
<mojo::DisplayFactory
>(this);
30 connection
->AddService
<mojo::Surface
>(this);
34 void SurfacesServiceApplication::Create(
35 mojo::ApplicationConnection
* connection
,
36 mojo::InterfaceRequest
<mojo::DisplayFactory
> request
) {
37 new DisplayFactoryImpl(&manager_
, next_id_namespace_
++, scheduler_
.get(),
41 void SurfacesServiceApplication::Create(
42 mojo::ApplicationConnection
* connection
,
43 mojo::InterfaceRequest
<mojo::Surface
> request
) {
44 new SurfacesImpl(&manager_
, next_id_namespace_
++, scheduler_
.get(),
48 } // namespace surfaces
50 MojoResult
MojoMain(MojoHandle shell_handle
) {
51 mojo::ApplicationRunnerChromium
runner(
52 new surfaces::SurfacesServiceApplication
);
53 return runner
.Run(shell_handle
);