// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_APPLICATION_H_
#define MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_APPLICATION_H_

#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/interface_factory_impl.h"
#include "mojo/public/cpp/system/macros.h"
#include "mojo/services/test_service/test_request_tracker_impl.h"

namespace mojo {
namespace test {
class TestTimeService;

// Embeds TestRequestTracker mojo services into an application.
class TestRequestTrackerApplication
    : public ApplicationDelegate,
      public InterfaceFactory<TestTimeService>,
      public InterfaceFactory<TestRequestTracker> {
 public:
  TestRequestTrackerApplication();
  ~TestRequestTrackerApplication() override;

  // ApplicationDelegate methods:
  bool ConfigureIncomingConnection(ApplicationConnection* connection) override;

  // InterfaceFactory<TestTimeService> methods:
  void Create(ApplicationConnection* connection,
              InterfaceRequest<TestTimeService> request) override;

  // InterfaceFactory<TestRequestTracker> methods:
  void Create(ApplicationConnection* connection,
              InterfaceRequest<TestRequestTracker> request) override;

 private:
  TrackingContext context_;
  typedef InterfaceFactoryImplWithContext<TestTrackedRequestServiceImpl,
                                          TrackingContext>
      TestTrackedRequestFactory;
  TestTrackedRequestFactory test_tracked_request_factory_;
  MOJO_DISALLOW_COPY_AND_ASSIGN(TestRequestTrackerApplication);
};

}  // namespace test
}  // namespace mojo

#endif  // MOJO_SERVICES_TEST_SERVICE_TEST_REQUEST_TRACKER_APPLICATION_H_
