diff --git a/main.cc b/main.cc
index 159c88f..51a04ec 100644
--- a/main.cc
+++ b/main.cc
@@ -10,6 +10,7 @@
 #include <base/at_exit.h>
 #include <base/command_line.h>
 #include <base/files/file_util.h>
+#include <base/location.h>
 #include <base/logging.h>
 #include <base/strings/string_util.h>
 #include <base/strings/stringprintf.h>
@@ -223,18 +224,19 @@
 
   // Update boot flags after 45 seconds.
   loop.PostDelayedTask(
+      FROM_HERE,
       base::Bind(&chromeos_update_engine::UpdateAttempter::UpdateBootFlags,
                  base::Unretained(update_attempter)),
       base::TimeDelta::FromSeconds(45));
 
   // Broadcast the update engine status on startup to ensure consistent system
   // state on crashes.
-  loop.PostTask(base::Bind(
+  loop.PostTask(FROM_HERE, base::Bind(
       &chromeos_update_engine::UpdateAttempter::BroadcastStatus,
       base::Unretained(update_attempter)));
 
   // Run the UpdateEngineStarted() method on |update_attempter|.
-  loop.PostTask(base::Bind(
+  loop.PostTask(FROM_HERE, base::Bind(
       &chromeos_update_engine::UpdateAttempter::UpdateEngineStarted,
       base::Unretained(update_attempter)));
 
diff --git a/testrunner.cc b/testrunner.cc
index 6ca791e..4786c74 100644
--- a/testrunner.cc
+++ b/testrunner.cc
@@ -6,6 +6,7 @@
 
 #include <base/at_exit.h>
 #include <base/command_line.h>
+#include <chromeos/test_helpers.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-bindings.h>
 #include <dbus/dbus-glib-lowlevel.h>
@@ -31,7 +32,7 @@
   LOG(INFO) << "parsing command line arguments";
   base::CommandLine::Init(argc, argv);
   LOG(INFO) << "initializing gtest";
-  ::testing::InitGoogleTest(&argc, argv);
+  SetUpTests(&argc, argv, true);
   LOG(INFO) << "running unit tests";
   int test_result = RUN_ALL_TESTS();
   LOG(INFO) << "unittest return value: " << test_result;
diff --git a/update_manager/evaluation_context.cc b/update_manager/evaluation_context.cc
index 856c5cd..66275de 100644
--- a/update_manager/evaluation_context.cc
+++ b/update_manager/evaluation_context.cc
@@ -10,6 +10,7 @@
 
 #include <base/bind.h>
 #include <base/json/json_writer.h>
+#include <base/location.h>
 #include <base/strings/string_util.h>
 #include <base/values.h>
 
@@ -204,6 +205,7 @@
     DLOG(INFO) << "Waiting for timeout in "
                << chromeos_update_engine::utils::FormatTimeDelta(timeout);
     timeout_event_ = MessageLoop::current()->PostDelayedTask(
+        FROM_HERE,
         base::Bind(&EvaluationContext::OnTimeout,
                    weak_ptr_factory_.GetWeakPtr()),
         timeout);
diff --git a/update_manager/evaluation_context_unittest.cc b/update_manager/evaluation_context_unittest.cc
index 0ba9594..2b59026 100644
--- a/update_manager/evaluation_context_unittest.cc
+++ b/update_manager/evaluation_context_unittest.cc
@@ -323,14 +323,15 @@
 // Test that timed events fired after removal of the EvaluationContext don't
 // crash.
 TEST_F(UmEvaluationContextTest, TimeoutEventAfterDeleteTest) {
-  FakeVariable<string> fake_short_poll_var = {"fake_short_poll", TimeDelta()};
+  FakeVariable<string> fake_short_poll_var = {"fake_short_poll",
+                                              TimeDelta::FromSeconds(1)};
   fake_short_poll_var.reset(new string("Polled value"));
   eval_ctx_->GetValue(&fake_short_poll_var);
   bool value = false;
   EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&SetTrue, &value)));
   // Remove the last reference to the EvaluationContext and run the loop for
-  // 1 second to give time to the main loop to trigger the timeout Event (of 0
-  // seconds). Our callback should not be called because the EvaluationContext
+  // 10 seconds to give time to the main loop to trigger the timeout Event (of 1
+  // second). Our callback should not be called because the EvaluationContext
   // was removed before the timeout event is attended.
   eval_ctx_ = nullptr;
   MessageLoopRunUntil(MessageLoop::current(),
diff --git a/update_manager/real_device_policy_provider.cc b/update_manager/real_device_policy_provider.cc
index 557987f..6f484f7 100644
--- a/update_manager/real_device_policy_provider.cc
+++ b/update_manager/real_device_policy_provider.cc
@@ -6,6 +6,7 @@
 
 #include <stdint.h>
 
+#include <base/location.h>
 #include <base/logging.h>
 #include <base/time/time.h>
 #include <chromeos/dbus/service_constants.h>
@@ -85,6 +86,7 @@
 void RealDevicePolicyProvider::RefreshDevicePolicyAndReschedule() {
   RefreshDevicePolicy();
   scheduled_refresh_ = MessageLoop::current()->PostDelayedTask(
+      FROM_HERE,
       base::Bind(&RealDevicePolicyProvider::RefreshDevicePolicyAndReschedule,
                  base::Unretained(this)),
       TimeDelta::FromMinutes(kDevicePolicyRefreshRateInMinutes));
diff --git a/update_manager/update_manager-inl.h b/update_manager/update_manager-inl.h
index 9463c76..b8fef28 100644
--- a/update_manager/update_manager-inl.h
+++ b/update_manager/update_manager-inl.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include <base/bind.h>
+#include <base/location.h>
 #include <chromeos/message_loops/message_loop.h>
 
 #include "update_engine/update_manager/evaluation_context.h"
@@ -144,7 +145,7 @@
   base::Closure eval_callback = base::Bind(
       &UpdateManager::OnPolicyReadyToEvaluate<R, ExpectedArgs...>,
       base::Unretained(this), ec, callback, policy_method, args...);
-  chromeos::MessageLoop::current()->PostTask(eval_callback);
+  chromeos::MessageLoop::current()->PostTask(FROM_HERE, eval_callback);
 }
 
 }  // namespace chromeos_update_manager
diff --git a/update_manager/variable.h b/update_manager/variable.h
index 9f80461..7ce2af8 100644
--- a/update_manager/variable.h
+++ b/update_manager/variable.h
@@ -10,6 +10,7 @@
 #include <string>
 
 #include <base/bind.h>
+#include <base/location.h>
 #include <base/logging.h>
 #include <base/time/time.h>
 #include <chromeos/message_loops/message_loop.h>
@@ -108,6 +109,7 @@
     // first the list of observers.
     if (!observer_list_.empty()) {
       chromeos::MessageLoop::current()->PostTask(
+          FROM_HERE,
           base::Bind(&BaseVariable::OnValueChangedNotification,
                      base::Unretained(this)));
     }
