Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / mojo / services / test_service / test_service_impl.cc
index a38d619..2137353 100644 (file)
@@ -4,13 +4,22 @@
 
 #include "mojo/services/test_service/test_service_impl.h"
 
+#include "base/bind.h"
+#include "base/i18n/time_formatting.h"
+#include "base/strings/utf_string_conversions.h"
+#include "mojo/public/cpp/application/application_connection.h"
+#include "mojo/services/test_service/test_request_tracker_client_impl.h"
+#include "mojo/services/test_service/test_request_tracker_impl.h"
 #include "mojo/services/test_service/test_service_application.h"
+#include "mojo/services/test_service/test_time_service_impl.h"
+#include "url/gurl.h"
 
 namespace mojo {
 namespace test {
 
-TestServiceImpl::TestServiceImpl(TestServiceApplication* application)
-    : application_(application) {
+TestServiceImpl::TestServiceImpl(ApplicationConnection* connection,
+                                 TestServiceApplication* application)
+    : application_(application), connection_(connection) {
 }
 
 TestServiceImpl::~TestServiceImpl() {
@@ -25,8 +34,36 @@ void TestServiceImpl::OnConnectionError() {
 }
 
 void TestServiceImpl::Ping(const mojo::Callback<void()>& callback) {
+  if (tracking_)
+    tracking_->RecordNewRequest();
   callback.Run();
 }
 
+void SendTimeResponse(
+    const mojo::Callback<void(int64_t)>& requestor_callback,
+    int64_t time_usec) {
+  requestor_callback.Run(time_usec);
+}
+
+void TestServiceImpl::ConnectToAppAndGetTime(
+    const mojo::String& app_url,
+    const mojo::Callback<void(int64_t)>& callback) {
+  connection_->ConnectToService(app_url, &time_service_);
+  if (tracking_) {
+    tracking_->RecordNewRequest();
+    time_service_->StartTrackingRequests(mojo::Callback<void()>());
+  }
+  time_service_->GetPartyTime(base::Bind(&SendTimeResponse, callback));
+}
+
+void TestServiceImpl::StartTrackingRequests(
+    const mojo::Callback<void()>& callback) {
+  TestRequestTrackerPtr tracker;
+  connection_->ConnectToService(
+      "mojo:mojo_test_request_tracker_app", &tracker);
+  tracking_.reset(
+      new TestRequestTrackerClientImpl(tracker.Pass(), Name_, callback));
+}
+
 }  // namespace test
 }  // namespace mojo