update_engine: Add locations to the MessageLoop calls.

When running the unittests with --v=1, this patch will show the location
where the tasks were posted to the FakeMessageLoop.

BUG=brillo:91
TEST=Ran unittest with --v=1

Change-Id: I0f9b0a3b67a40c26965a396258f1bd45e38f5ba3
Reviewed-on: https://chromium-review.googlesource.com/280568
Tested-by: Alex Deymo <deymo@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
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)));
     }