diff --git a/metrics/metrics.gyp b/metrics/metrics.gyp
index 60e2d1a..3130509 100644
--- a/metrics/metrics.gyp
+++ b/metrics/metrics.gyp
@@ -3,10 +3,6 @@
     'variables': {
       'deps': [
         'dbus-1',
-        'dbus-glib-1',
-        'glib-2.0',
-        'gobject-2.0',
-        'gthread-2.0',
         'libchrome-<(libbase_ver)',
         'libchromeos-<(libbase_ver)',
       ]
diff --git a/metrics/uploader/system_profile_cache.cc b/metrics/uploader/system_profile_cache.cc
index 28e0f09..d16b1dd 100644
--- a/metrics/uploader/system_profile_cache.cc
+++ b/metrics/uploader/system_profile_cache.cc
@@ -4,7 +4,6 @@
 
 #include "metrics/uploader/system_profile_cache.h"
 
-#include <glib.h>
 #include <string>
 #include <vector>
 
diff --git a/metrics/uploader/upload_service.cc b/metrics/uploader/upload_service.cc
index cdec91e..dd49d1f 100644
--- a/metrics/uploader/upload_service.cc
+++ b/metrics/uploader/upload_service.cc
@@ -4,11 +4,12 @@
 
 #include "metrics/uploader/upload_service.h"
 
-#include <glib.h>
 #include <string>
 
+#include <base/bind.h>
 #include <base/logging.h>
 #include <base/memory/scoped_vector.h>
+#include <base/message_loop/message_loop.h>
 #include <base/metrics/histogram.h>
 #include <base/metrics/histogram_base.h>
 #include <base/metrics/histogram_snapshot_manager.h>
@@ -28,14 +29,29 @@
                              const std::string& server)
     : system_profile_setter_(setter),
       histogram_snapshot_manager_(this),
-      sender_(new HttpSender(server)) {
+      sender_(new HttpSender(server)),
+      testing_(false) {
+}
+
+UploadService::UploadService(SystemProfileSetter* setter,
+                             const std::string& server,
+                             bool testing)
+    : UploadService(setter, server) {
+  testing_ = testing;
 }
 
 void UploadService::Init(const base::TimeDelta& upload_interval,
                          const std::string& metrics_file) {
   base::StatisticsRecorder::Initialize();
   metrics_file_ = metrics_file;
-  g_timeout_add_seconds(upload_interval.InSeconds(), &UploadEventStatic, this);
+
+  if (!testing_) {
+    base::MessageLoop::current()->PostDelayedTask(FROM_HERE,
+        base::Bind(&UploadService::UploadEventCallback,
+                   base::Unretained(this),
+                   upload_interval),
+        upload_interval);
+  }
 }
 
 void UploadService::StartNewLog() {
@@ -46,12 +62,14 @@
   current_log_.reset(log);
 }
 
-// static
-int UploadService::UploadEventStatic(void* uploader) {
-  CHECK(uploader);
-  // This is called by glib with a pointer to an UploadEvent object.
-  static_cast<UploadService*>(uploader)->UploadEvent();
-  return 1;
+void UploadService::UploadEventCallback(const base::TimeDelta& interval) {
+  UploadEvent();
+
+  base::MessageLoop::current()->PostDelayedTask(FROM_HERE,
+      base::Bind(&UploadService::UploadEventCallback,
+                 base::Unretained(this),
+                 interval),
+      interval);
 }
 
 void UploadService::UploadEvent() {
diff --git a/metrics/uploader/upload_service.h b/metrics/uploader/upload_service.h
index 3611794..0b087de 100644
--- a/metrics/uploader/upload_service.h
+++ b/metrics/uploader/upload_service.h
@@ -64,9 +64,8 @@
   // launch as it is destroyed when staging the log.
   void StartNewLog();
 
-  // Glib takes a function pointer and passes the object as a void*.
-  // Uploader is expected to be an UploaderService.
-  static int UploadEventStatic(void* uploader);
+  // Event callback for handling MessageLoop events.
+  void UploadEventCallback(const base::TimeDelta& interval);
 
   // Triggers an upload event.
   void UploadEvent();
@@ -98,6 +97,11 @@
   FRIEND_TEST(UploadServiceTest, UnknownCrashIgnored);
   FRIEND_TEST(UploadServiceTest, ValuesInConfigFileAreSent);
 
+  // Private constructor for use in unit testing.
+  UploadService(SystemProfileSetter* setter,
+                const std::string& server,
+                bool testing);
+
   // If a staged log fails to upload more than kMaxFailedUpload times, it
   // will be discarded.
   static const int kMaxFailedUpload;
@@ -137,6 +141,8 @@
   scoped_ptr<MetricsLog> staged_log_;
 
   std::string metrics_file_;
+
+  bool testing_;
 };
 
 #endif  // METRICS_UPLOADER_UPLOAD_SERVICE_H_
diff --git a/metrics/uploader/upload_service_test.cc b/metrics/uploader/upload_service_test.cc
index 363c8c1..ca90e85 100644
--- a/metrics/uploader/upload_service_test.cc
+++ b/metrics/uploader/upload_service_test.cc
@@ -26,7 +26,7 @@
  protected:
   UploadServiceTest()
       : cache_(true, "/"),
-        upload_service_(new MockSystemProfileSetter(), kMetricsServer),
+        upload_service_(new MockSystemProfileSetter(), kMetricsServer, true),
         exit_manager_(new base::AtExitManager()) {
     sender_ = new SenderMock;
     upload_service_.sender_.reset(sender_);
