thermald: libchrome r860220 uprev

* base/bind_helpers.h is deleted after its content being moved to
  base/callback_helpers.h
* base::CallbackListSubscription made stand-alone class

BUG=chromium:1179608
TEST=FEATURES=test emerge-mistral thermald with old and new libchrome

Change-Id: If1f3819b2591783e3e3eb27007ba7ead801d337d
Reviewed-on: https://chrome-internal-review.googlesource.com/c/chromeos/thermald/+/3696362
Tested-by: Grace Cham <hscham@google.com>
Reviewed-by: Qijiang Fan <fqj@google.com>
Commit-Queue: Grace Cham <hscham@google.com>
diff --git a/key_value_publisher.h b/key_value_publisher.h
index addb21f..7341a0e 100644
--- a/key_value_publisher.h
+++ b/key_value_publisher.h
@@ -20,8 +20,10 @@
  public:
   typedef base::Callback<void(const std::string &, int)>
       KeyValuePublisherCallback;
+#if BASE_VER < 860220
   typedef base::CallbackList<void(const std::string &, int)>::Subscription
       Subscription;
+#endif
 
   KeyValuePublisher() {}
 
@@ -34,7 +36,12 @@
   // Returns a subscription object. The caller must keep a reference to this
   // object for the time the subscription should be active. The subscription
   // is canceled when the object is deleted.
+#if BASE_VER < 860220
   std::unique_ptr<Subscription> Subscribe(const KeyValuePublisherCallback &cb) {
+#else
+  base::CallbackListSubscription Subscribe(
+      const KeyValuePublisherCallback &cb) {
+#endif
     return subscribers_.Add(cb);
   }
 
diff --git a/key_value_publisher_unittest.cc b/key_value_publisher_unittest.cc
index 56fa544..452bcec 100644
--- a/key_value_publisher_unittest.cc
+++ b/key_value_publisher_unittest.cc
@@ -8,8 +8,13 @@
 #include "gtest/gtest.h"
 
 #include "base/bind.h"
+#if BASE_VER < 860220
 #include "base/bind_helpers.h"
+#endif
 #include "base/callback.h"
+#if BASE_VER >= 860220
+#include "base/callback_helpers.h"
+#endif
 
 #include "thermald/key_value_publisher.h"
 
diff --git a/metrics_reporter.h b/metrics_reporter.h
index b5fae2e..5f51303 100644
--- a/metrics_reporter.h
+++ b/metrics_reporter.h
@@ -81,9 +81,15 @@
   MetricsLibraryInterface *metrics_lib_;
   const base::TimeDelta reporting_period_;
   std::unique_ptr<base::RepeatingTimer> timer_;
+#if BASE_VER < 860220
   std::unique_ptr<KeyValuePublisher::Subscription> subscription_outputs_;
   std::vector<std::unique_ptr<TemperatureMonitorInterface::Subscription>>
       temperature_monitor_subscriptions_;
+#else
+  base::CallbackListSubscription subscription_outputs_;
+  std::vector<base::CallbackListSubscription>
+      temperature_monitor_subscriptions_;
+#endif
   base::WeakPtrFactory<MetricsReporter> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(MetricsReporter);
diff --git a/mock_temperature_monitor.h b/mock_temperature_monitor.h
index 08ee289..8c54f41 100644
--- a/mock_temperature_monitor.h
+++ b/mock_temperature_monitor.h
@@ -25,7 +25,12 @@
                    base::Unretained(this)));
   }
 
+#if BASE_VER < 860220
   std::unique_ptr<Subscription> Subscribe(const TemperatureMonitorCallback &cb) {
+#else
+  base::CallbackListSubscription Subscribe(
+      const TemperatureMonitorCallback &cb) {
+#endif
     // Call mockable Subscribe().
     Subscribe();
 
diff --git a/temperature_monitor_interface.h b/temperature_monitor_interface.h
index 7a2f992..0f25310 100644
--- a/temperature_monitor_interface.h
+++ b/temperature_monitor_interface.h
@@ -22,7 +22,9 @@
 class TemperatureMonitorInterface {
  public:
   typedef base::Callback<void(int)> TemperatureMonitorCallback;
+#if BASE_VER < 860220
   typedef base::CallbackList<void(int)>::Subscription Subscription;
+#endif
 
   TemperatureMonitorInterface() {}
   virtual ~TemperatureMonitorInterface() {}
@@ -34,7 +36,11 @@
   // Returns a subscription object. The caller must keep a reference to this
   // object for the time the subscription should be active. The subscription
   // is canceled when the object is deleted.
+#if BASE_VER < 860220
   virtual std::unique_ptr<Subscription> Subscribe(
+#else
+  virtual base::CallbackListSubscription Subscribe(
+#endif
       const TemperatureMonitorCallback &cb) = 0;
 
  private:
diff --git a/temperature_sensor_monitor.cc b/temperature_sensor_monitor.cc
index e55a821..3ed7bbd 100644
--- a/temperature_sensor_monitor.cc
+++ b/temperature_sensor_monitor.cc
@@ -83,7 +83,11 @@
   }
 }
 
+#if BASE_VER < 860220
 std::unique_ptr<TemperatureMonitorInterface::Subscription>
+#else
+base::CallbackListSubscription
+#endif
 TemperatureSensorMonitor::Subscribe(const TemperatureMonitorCallback &cb) {
   if (subscribers_.empty()) {
     StartSampling();
diff --git a/temperature_sensor_monitor.h b/temperature_sensor_monitor.h
index f665b61..23eaa35 100644
--- a/temperature_sensor_monitor.h
+++ b/temperature_sensor_monitor.h
@@ -41,8 +41,12 @@
 
   std::string name() const;
 
-  std::unique_ptr<TemperatureMonitorInterface::Subscription> Subscribe(
-      const TemperatureMonitorCallback &cb);
+#if BASE_VER < 860220
+  std::unique_ptr<TemperatureMonitorInterface::Subscription>
+#else
+  base::CallbackListSubscription
+#endif
+  Subscribe(const TemperatureMonitorCallback &cb);
 
  private:
   friend class TemperatureSensorMonitorTest;
diff --git a/temperature_sensor_monitor_unittest.cc b/temperature_sensor_monitor_unittest.cc
index 4900a39..2b14b5d 100644
--- a/temperature_sensor_monitor_unittest.cc
+++ b/temperature_sensor_monitor_unittest.cc
@@ -53,7 +53,11 @@
 
   void Unsubscribe() {
     if (monitor_ != nullptr) {
+#if BASE_VER < 860220
       subscription_.reset();
+#else
+      subscription_ = {};
+#endif
       monitor_ = nullptr;
     }
   }
@@ -71,7 +75,11 @@
   }
 
   TemperatureMonitorInterface *monitor_;
+#if BASE_VER < 860220
   std::unique_ptr<base::CallbackList<void(int)>::Subscription> subscription_;
+#else
+  base::CallbackListSubscription subscription_;
+#endif
   base::Callback<void(int)> cb_;
   // This is no longer memory safe by taking a pointer of std::unique_ptr.
   // It is only for a leakless base::RunLoop** to track current run_loop in
diff --git a/thermal_output_processor.cc b/thermal_output_processor.cc
index 5a5a2b3..e60049b 100644
--- a/thermal_output_processor.cc
+++ b/thermal_output_processor.cc
@@ -40,9 +40,14 @@
     LOG(WARNING) << "Failed to get cpufreq devices";
   }
 
+#if BASE_VER < 860220
   subscription_.reset(outputs->Subscribe(base::Bind(
       &ThermalOutputProcessor::OnOutputSet,
       weak_ptr_factory_.GetWeakPtr())).release());
+#else
+  subscription_ = outputs->Subscribe(base::Bind(
+      &ThermalOutputProcessor::OnOutputSet, weak_ptr_factory_.GetWeakPtr()));
+#endif
 }
 
 ThermalOutputProcessor::Status ThermalOutputProcessor::ProcessValueAth10k(
diff --git a/thermal_output_processor.h b/thermal_output_processor.h
index 94577e7..6b0bdf4 100644
--- a/thermal_output_processor.h
+++ b/thermal_output_processor.h
@@ -54,7 +54,11 @@
   std::map<std::string, int> deferred_values_;
   base::RepeatingTimer deferred_values_timer_;
   std::vector<std::unique_ptr<CpufreqDevice>> cpufreq_devices_;
+#if BASE_VER < 860220
   std::unique_ptr<KeyValuePublisher::Subscription> subscription_;
+#else
+  base::CallbackListSubscription subscription_;
+#endif
   base::WeakPtrFactory<ThermalOutputProcessor> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(ThermalOutputProcessor);
diff --git a/thermal_zone_controller.h b/thermal_zone_controller.h
index 3d8da0f..983860e 100644
--- a/thermal_zone_controller.h
+++ b/thermal_zone_controller.h
@@ -56,8 +56,12 @@
 
   const ThermalZone *zone_;
   std::vector<TemperatureMonitorInterface *> temperature_monitors_;
+#if BASE_VER < 860220
   std::vector<std::unique_ptr<TemperatureMonitorInterface::Subscription>>
       subscriptions_;
+#else
+  std::vector<base::CallbackListSubscription> subscriptions_;
+#endif
   bool is_running_;
   ThermalStateEngine thermal_state_engine_;
   const ThermalState *cur_thermal_state_;
diff --git a/thermal_zone_controller_unittest.cc b/thermal_zone_controller_unittest.cc
index 972a8c2..973295a 100644
--- a/thermal_zone_controller_unittest.cc
+++ b/thermal_zone_controller_unittest.cc
@@ -63,7 +63,11 @@
 
   unique_ptr<ThermalZoneController> zone_controller_;
   KeyValuePublisher output_publisher_;
+#if BASE_VER < 860220
   std::unique_ptr<KeyValuePublisher::Subscription> subscription_;
+#else
+  base::CallbackListSubscription subscription_;
+#endif
   MockTemperatureMonitor temp_monitor_0_;
   MockTemperatureMonitor temp_monitor_1_;
   static ThermalZone thermal_zone_;