diff --git a/src/privet/privet_handler.cc b/src/privet/privet_handler.cc
index b71ea15..d172312 100644
--- a/src/privet/privet_handler.cc
+++ b/src/privet/privet_handler.cc
@@ -70,6 +70,7 @@
 const char kInfoWifiHostedSsidKey[] = "hostedSsid";
 
 const char kInfoUptimeKey[] = "uptime";
+const char kInfoTimeMsKey[] = "timeMs";
 
 const char kPairingKey[] = "pairing";
 const char kPairingSessionIdKey[] = "sessionId";
@@ -340,11 +341,14 @@
 PrivetHandler::PrivetHandler(CloudDelegate* cloud,
                              DeviceDelegate* device,
                              SecurityDelegate* security,
-                             WifiDelegate* wifi)
-    : cloud_(cloud), device_(device), security_(security), wifi_(wifi) {
+                             WifiDelegate* wifi,
+                             base::Clock* clock)
+    : cloud_(cloud), device_(device), security_(security), wifi_(wifi),
+      clock_(clock ? clock : &default_clock_) {
   CHECK(cloud_);
   CHECK(device_);
   CHECK(security_);
+  CHECK(clock_);
   cloud_observer_.Add(cloud_);
 
   AddHandler("/privet/info", &PrivetHandler::HandleInfo, AuthScope::kNone);
@@ -466,7 +470,7 @@
     time += base::TimeDelta::FromSeconds(kAccessTokenExpirationSeconds);
     time +=
         base::TimeDelta::FromSeconds(kAccessTokenExpirationThresholdSeconds);
-    if (time < base::Time::Now()) {
+    if (time < clock_->Now()) {
       Error::AddToPrintf(&error, FROM_HERE, errors::kDomain,
                          errors::kAuthorizationExpired, "Token expired: %s",
                          token.c_str());
@@ -544,6 +548,7 @@
   output.Set(kGcdKey, CreateGcdSection(*cloud_).release());
 
   output.SetInteger(kInfoUptimeKey, device_->GetUptime().InSeconds());
+  output.SetString(kInfoTimeMsKey, std::to_string(clock_->Now().ToJavaTime()));
 
   callback.Run(http::kOk, output);
 }
diff --git a/src/privet/privet_handler.h b/src/privet/privet_handler.h
index fc024d1..5241233 100644
--- a/src/privet/privet_handler.h
+++ b/src/privet/privet_handler.h
@@ -12,6 +12,7 @@
 #include <base/macros.h>
 #include <base/memory/weak_ptr.h>
 #include <base/scoped_observer.h>
+#include <base/time/default_clock.h>
 
 #include "src/privet/cloud_delegate.h"
 
@@ -42,7 +43,8 @@
   PrivetHandler(CloudDelegate* cloud,
                 DeviceDelegate* device,
                 SecurityDelegate* pairing,
-                WifiDelegate* wifi);
+                WifiDelegate* wifi,
+                base::Clock* clock = nullptr);
   ~PrivetHandler() override;
 
   void OnTraitDefsChanged() override;
@@ -134,6 +136,8 @@
   DeviceDelegate* device_{nullptr};
   SecurityDelegate* security_{nullptr};
   WifiDelegate* wifi_{nullptr};
+  base::DefaultClock default_clock_;
+  base::Clock* clock_{nullptr};
 
   struct HandlerParameters {
     ApiHandler handler;
diff --git a/src/privet/privet_handler_unittest.cc b/src/privet/privet_handler_unittest.cc
index 09146e8..da64ab9 100644
--- a/src/privet/privet_handler_unittest.cc
+++ b/src/privet/privet_handler_unittest.cc
@@ -19,6 +19,7 @@
 
 #include "src/privet/constants.h"
 #include "src/privet/mock_delegates.h"
+#include "src/test/mock_clock.h"
 
 using testing::_;
 using testing::DoAll;
@@ -92,8 +93,12 @@
 
  protected:
   void SetUp() override {
+    EXPECT_CALL(clock_, Now())
+        .WillRepeatedly(Return(base::Time::FromTimeT(1410000000)));
+
     auth_header_ = "Privet anonymous";
-    handler_.reset(new PrivetHandler(&cloud_, &device_, &security_, &wifi_));
+    handler_.reset(new PrivetHandler(&cloud_, &device_, &security_, &wifi_,
+                                     &clock_));
   }
 
   const base::DictionaryValue& HandleRequest(
@@ -124,7 +129,8 @@
   int GetResponseCount() const { return response_count_; }
 
   void SetNoWifiAndGcd() {
-    handler_.reset(new PrivetHandler(&cloud_, &device_, &security_, nullptr));
+    handler_.reset(new PrivetHandler(&cloud_, &device_, &security_, nullptr,
+                                     &clock_));
     EXPECT_CALL(cloud_, GetCloudId()).WillRepeatedly(Return(""));
     EXPECT_CALL(cloud_, GetConnectionState())
         .WillRepeatedly(ReturnRef(gcd_disabled_state_));
@@ -136,6 +142,7 @@
         .WillRepeatedly(DoAll(Invoke(set_error), Return(false)));
   }
 
+  test::MockClock clock_;
   testing::StrictMock<MockCloudDelegate> cloud_;
   testing::StrictMock<MockDeviceDelegate> device_;
   testing::StrictMock<MockSecurityDelegate> security_;
@@ -240,7 +247,8 @@
       'id': '',
       'status': 'disabled'
     },
-    'uptime': 3600
+    'uptime': 3600,
+    'timeMs': '1410000000000'
   })";
   EXPECT_JSON_EQ(kExpected, HandleRequest("/privet/info", "{}"));
 }
@@ -301,7 +309,8 @@
       'id': 'TestCloudId',
       'status': 'online'
     },
-    'uptime': 3600
+    'uptime': 3600,
+    'timeMs': '1410000000000'
   })";
   EXPECT_JSON_EQ(kExpected, HandleRequest("/privet/info", "{}"));
 }
