diff --git a/update_attempter.cc b/update_attempter.cc
index 7d2500b..af76dff 100644
--- a/update_attempter.cc
+++ b/update_attempter.cc
@@ -10,6 +10,7 @@
 
 #include <base/file_util.h>
 #include <base/rand_util.h>
+#include <chromeos/dbus/service_constants.h>
 #include <glib.h>
 #include <metrics/metrics_library.h>
 #include <policy/libpolicy.h>
@@ -65,23 +66,23 @@
 const char* UpdateStatusToString(UpdateStatus status) {
   switch (status) {
     case UPDATE_STATUS_IDLE:
-      return "UPDATE_STATUS_IDLE";
+      return update_engine::kUpdateStatusIdle;
     case UPDATE_STATUS_CHECKING_FOR_UPDATE:
-      return "UPDATE_STATUS_CHECKING_FOR_UPDATE";
+      return update_engine::kUpdateStatusCheckingForUpdate;
     case UPDATE_STATUS_UPDATE_AVAILABLE:
-      return "UPDATE_STATUS_UPDATE_AVAILABLE";
+      return update_engine::kUpdateStatusUpdateAvailable;
     case UPDATE_STATUS_DOWNLOADING:
-      return "UPDATE_STATUS_DOWNLOADING";
+      return update_engine::kUpdateStatusDownloading;
     case UPDATE_STATUS_VERIFYING:
-      return "UPDATE_STATUS_VERIFYING";
+      return update_engine::kUpdateStatusVerifying;
     case UPDATE_STATUS_FINALIZING:
-      return "UPDATE_STATUS_FINALIZING";
+      return update_engine::kUpdateStatusFinalizing;
     case UPDATE_STATUS_UPDATED_NEED_REBOOT:
-      return "UPDATE_STATUS_UPDATED_NEED_REBOOT";
+      return update_engine::kUpdateStatusUpdatedNeedReboot;
     case UPDATE_STATUS_REPORTING_ERROR_EVENT:
-      return "UPDATE_STATUS_REPORTING_ERROR_EVENT";
+      return update_engine::kUpdateStatusReportingErrorEvent;
     case UPDATE_STATUS_ATTEMPTING_ROLLBACK:
-      return "UPDATE_STATUS_ATTEMPTING_ROLLBACK";
+      return update_engine::kUpdateStatusAttemptingRollback;
     default:
       return "unknown status";
   }
diff --git a/update_attempter_unittest.cc b/update_attempter_unittest.cc
index 11464d4..2e3c6b2 100644
--- a/update_attempter_unittest.cc
+++ b/update_attempter_unittest.cc
@@ -311,27 +311,6 @@
   EXPECT_EQ(UPDATE_STATUS_REPORTING_ERROR_EVENT, attempter_.status());
 }
 
-TEST_F(UpdateAttempterTest, UpdateStatusToStringTest) {
-  extern const char* UpdateStatusToString(UpdateStatus);
-  EXPECT_STREQ("UPDATE_STATUS_IDLE", UpdateStatusToString(UPDATE_STATUS_IDLE));
-  EXPECT_STREQ("UPDATE_STATUS_CHECKING_FOR_UPDATE",
-               UpdateStatusToString(UPDATE_STATUS_CHECKING_FOR_UPDATE));
-  EXPECT_STREQ("UPDATE_STATUS_UPDATE_AVAILABLE",
-               UpdateStatusToString(UPDATE_STATUS_UPDATE_AVAILABLE));
-  EXPECT_STREQ("UPDATE_STATUS_DOWNLOADING",
-               UpdateStatusToString(UPDATE_STATUS_DOWNLOADING));
-  EXPECT_STREQ("UPDATE_STATUS_VERIFYING",
-               UpdateStatusToString(UPDATE_STATUS_VERIFYING));
-  EXPECT_STREQ("UPDATE_STATUS_FINALIZING",
-               UpdateStatusToString(UPDATE_STATUS_FINALIZING));
-  EXPECT_STREQ("UPDATE_STATUS_UPDATED_NEED_REBOOT",
-               UpdateStatusToString(UPDATE_STATUS_UPDATED_NEED_REBOOT));
-  EXPECT_STREQ("UPDATE_STATUS_REPORTING_ERROR_EVENT",
-               UpdateStatusToString(UPDATE_STATUS_REPORTING_ERROR_EVENT));
-  EXPECT_STREQ("unknown status",
-               UpdateStatusToString(static_cast<UpdateStatus>(-1)));
-}
-
 void UpdateAttempterTest::QuitMainLoop() {
   g_main_loop_quit(loop_);
 }
