libchromeos: Migrate bind_lambda.h from Buffet

Now that libchromeos is converted to C++11 I can finally move
this common code to the place where it belongs and can be
reused by different projects.

BUG=chromium:405714
TEST=USE=buffet ./build_packages

Change-Id: I6605d2ccc61b33627cfaaa9b868dc404cf78dd0c
Reviewed-on: https://chromium-review.googlesource.com/213320
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/bind_lambda.h b/buffet/bind_lambda.h
deleted file mode 100644
index 0172ab3..0000000
--- a/buffet/bind_lambda.h
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BUFFET_BIND_LAMBDA_H_
-#define BUFFET_BIND_LAMBDA_H_
-
-#include <base/bind.h>
-
-////////////////////////////////////////////////////////////////////////////////
-// This file is an extension to base/bind_internal.h and adds a RunnableAdapter
-// class specialization that wraps a functor (including lambda objects), so
-// they can be used in base::Callback/base::Bind constructs.
-// By including this file you will gain the ability to write expressions like:
-//    base::Callback<int(int)> callback = base::Bind([](int value) {
-//      return value * value;
-//    });
-////////////////////////////////////////////////////////////////////////////////
-namespace base {
-namespace internal {
-
-// LambdaAdapter is a helper class that specializes on different function call
-// signatures and provides the RunType and Run() method required by
-// RunnableAdapter<> class.
-template <typename Lambda, typename Sig>
-class LambdaAdapter;
-
-// R(...)
-template <typename Lambda, typename R, typename... Args>
-class LambdaAdapter<Lambda, R(Lambda::*)(Args... args)> {
- public:
-  typedef R(RunType)(Args...);
-  LambdaAdapter(Lambda lambda) : lambda_(lambda) {}
-  R Run(Args... args) { return lambda_(args...); }
-
- private:
-  Lambda lambda_;
-};
-
-// R(...) const
-template <typename Lambda, typename R, typename... Args>
-class LambdaAdapter<Lambda, R(Lambda::*)(Args... args) const> {
- public:
-  typedef R(RunType)(Args...);
-  LambdaAdapter(Lambda lambda) : lambda_(lambda) {}
-  R Run(Args... args) { return lambda_(args...); }
-
- private:
-  Lambda lambda_;
-};
-
-template <typename Lambda>
-class RunnableAdapter : public LambdaAdapter<Lambda,
-                                             decltype(&Lambda::operator())> {
- public:
-  explicit RunnableAdapter(Lambda lambda) :
-      LambdaAdapter<Lambda, decltype(&Lambda::operator())>(lambda) {
-  }
-};
-
-
-}  // namespace internal
-}  // namespace base
-
-#endif  // BUFFET_BIND_LAMBDA_H_
diff --git a/buffet/device_registration_info_unittest.cc b/buffet/device_registration_info_unittest.cc
index 635b539..f883802 100644
--- a/buffet/device_registration_info_unittest.cc
+++ b/buffet/device_registration_info_unittest.cc
@@ -4,9 +4,9 @@
 
 #include <base/json/json_reader.h>
 #include <base/values.h>
+#include <chromeos/bind_lambda.h>
 #include <gtest/gtest.h>
 
-#include "buffet/bind_lambda.h"
 #include "buffet/commands/command_manager.h"
 #include "buffet/commands/unittest_utils.h"
 #include "buffet/device_registration_info.h"
diff --git a/buffet/http_transport_fake.cc b/buffet/http_transport_fake.cc
index 2c59cb3..d4b7f44 100644
--- a/buffet/http_transport_fake.cc
+++ b/buffet/http_transport_fake.cc
@@ -9,8 +9,8 @@
 #include <base/json/json_reader.h>
 #include <base/json/json_writer.h>
 #include <base/logging.h>
+#include <chromeos/bind_lambda.h>
 
-#include "buffet/bind_lambda.h"
 #include "buffet/http_connection_fake.h"
 #include "buffet/http_request.h"
 #include "buffet/mime_utils.h"
diff --git a/buffet/http_utils_unittest.cc b/buffet/http_utils_unittest.cc
index 190b566..22c2209 100644
--- a/buffet/http_utils_unittest.cc
+++ b/buffet/http_utils_unittest.cc
@@ -6,9 +6,9 @@
 #include <vector>
 
 #include <base/values.h>
+#include <chromeos/bind_lambda.h>
 #include <gtest/gtest.h>
 
-#include "buffet/bind_lambda.h"
 #include "buffet/http_transport_fake.h"
 #include "buffet/http_utils.h"
 #include "buffet/mime_utils.h"