Index: dbus/test_service.h |
diff --git a/dbus/test_service.h b/dbus/test_service.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..362ecb7cc6b02d3f56a2f7d0cca9f9961e226b59 |
--- /dev/null |
+++ b/dbus/test_service.h |
@@ -0,0 +1,73 @@ |
+// Copyright (c) 2011 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 DBUS_TEST_SERVICE_H_ |
+#define DBUS_TEST_SERVICE_H_ |
+#pragma once |
+ |
+#include "base/memory/ref_counted.h" |
+#include "base/threading/thread.h" |
+#include "base/synchronization/condition_variable.h" |
+#include "base/synchronization/lock.h" |
+ |
+namespace dbus { |
+ |
+class Bus; |
+class ExportedObject; |
+class MethodCall; |
+class Response; |
+ |
+// The test service is used for end-to-end tests. The service runs in a |
+// separate thread, so it does not interfere the test code that runs in |
+// the main thread. Methods such as Echo() and SlowEcho() are exported. |
+class TestService : public base::Thread { |
+ public: |
+ // SlowEcho() sleeps for this period of time before returns. |
+ static const int kSlowEchoSleepMs; |
+ |
+ TestService(); |
+ virtual ~TestService(); |
+ |
+ // Starts the service in a separate thread. |
+ void StartService(); |
+ |
+ // Waits until the service is started (i.e. methods are exported). |
+ void WaitUntilServiceIsStarted(); |
+ |
+ private: |
+ // Called when the service is started (i.e. the task is run from the |
+ // message loop). |
+ void OnServiceStarted(); |
+ |
+ // base::Thread override. |
+ virtual void Run(MessageLoop* message_loop); |
+ |
+ // base::Thread override. |
+ virtual void CleanUp(); |
+ |
+ // |
+ // Exported methods. |
+ // |
+ |
+ // Echos the text message received from the method call. |
+ Response* Echo(MethodCall* method_call); |
+ |
+ // Echos the text message received from the method call, but sleeps for |
+ // kSlowEchoSleepMs before returning the response. |
+ Response* SlowEcho(MethodCall* method_call); |
+ |
+ // Returns NULL, instead of a valid Response. |
+ Response* BrokenMethod(MethodCall* method_call); |
+ |
+ bool service_started_; |
+ base::Lock service_started_lock_; |
+ base::ConditionVariable on_service_started_; |
+ |
+ scoped_refptr<Bus> bus_; |
+ ExportedObject* exported_object_; |
+}; |
+ |
+} // namespace dbus |
+ |
+#endif // DBUS_TEST_SERVICE_H_ |