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 13 namespace mojo { 14 namespace test { 15 class TestTimeService; 16 17 // Embeds TestRequestTracker mojo services into an application. 18 class 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