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_TEST_SERVICE_TEST_REQUEST_TRACKER_APPLICATION_H_
6#define MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_APPLICATION_H_
7
8#include "mojo/public/cpp/application/application_delegate.h"
9#include "mojo/public/cpp/application/interface_factory_impl.h"
10#include "mojo/public/cpp/system/macros.h"
11#include "mojo/services/test_service/test_request_tracker_impl.h"
12
13namespace mojo {
14namespace test {
15class TestTimeService;
16
17// Embeds TestRequestTracker mojo services into an application.
18class TestRequestTrackerApplication : public ApplicationDelegate,
19                                      public InterfaceFactory<TestTimeService> {
20 public:
21  TestRequestTrackerApplication();
22  virtual ~TestRequestTrackerApplication();
23
24  // ApplicationDelegate methods:
25  virtual bool ConfigureIncomingConnection(ApplicationConnection* connection)
26      MOJO_OVERRIDE;
27
28  // InterfaceFactory<TestTimeService> methods:
29  virtual void Create(ApplicationConnection* connection,
30                      InterfaceRequest<TestTimeService> request) MOJO_OVERRIDE;
31
32 private:
33  TrackingContext context_;
34  typedef InterfaceFactoryImplWithContext<TestTrackedRequestServiceImpl,
35                                          TrackingContext>
36      TestTrackedRequestFactory;
37  TestTrackedRequestFactory test_tracked_request_factory_;
38  typedef InterfaceFactoryImplWithContext<TestRequestTrackerImpl,
39                                          TrackingContext>
40      TestRequestTrackerFactory;
41  TestRequestTrackerFactory test_request_tracker_factory_;
42  MOJO_DISALLOW_COPY_AND_ASSIGN(TestRequestTrackerApplication);
43};
44
45}  // namespace test
46}  // namespace mojo
47
48#endif  // MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_APPLICATION_H_
49