buffet: Move HttpTransportClient out of libweave

Not libweave has not dependency on chromeos::http::Transport

BUG=brillo:1250
TEST='FEATURES=test emerge-gizmo libweave buffet'

Change-Id: I8aaead5d9ec527e5746ab000fd9b98983b1ac5b4
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index 660fad8..76b636d 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -14,6 +14,7 @@
 #include <weave/commands.h>
 #include <weave/config.h>
 #include <weave/export.h>
+#include <weave/http_client.h>
 #include <weave/http_server.h>
 #include <weave/mdns.h>
 #include <weave/network.h>
@@ -39,6 +40,7 @@
   virtual ~Device() = default;
 
   virtual void Start(const Options& options,
+                     HttpClient* http_client,
                      Network* network,
                      Mdns* mdns,
                      HttpServer* http_server) = 0;
diff --git a/libweave/libweave.gyp b/libweave/libweave.gyp
index be4d1d7..ba7e026 100644
--- a/libweave/libweave.gyp
+++ b/libweave/libweave.gyp
@@ -34,7 +34,6 @@
         'src/commands/user_role.cc',
         'src/device_manager.cc',
         'src/device_registration_info.cc',
-        'src/http_transport_client.cc',
         'src/notification/notification_parser.cc',
         'src/notification/pull_channel.cc',
         'src/notification/xml_node.cc',
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 344c725..8fce1fb 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -7,13 +7,11 @@
 #include <string>
 
 #include <base/message_loop/message_loop.h>
-#include <chromeos/http/http_transport.h>
 
 #include "libweave/src/base_api_handler.h"
 #include "libweave/src/buffet_config.h"
 #include "libweave/src/commands/command_manager.h"
 #include "libweave/src/device_registration_info.h"
-#include "libweave/src/http_transport_client.h"
 #include "libweave/src/privet/privet_manager.h"
 #include "libweave/src/states/state_change_queue.h"
 #include "libweave/src/states/state_manager.h"
@@ -24,8 +22,6 @@
 
 // Max of 100 state update events should be enough in the queue.
 const size_t kMaxStateChangeQueueSize = 100;
-// The number of seconds each HTTP request will be allowed before timing out.
-const int kRequestTimeoutSeconds = 30;
 
 }  // namespace
 
@@ -34,6 +30,7 @@
 DeviceManager::~DeviceManager() {}
 
 void DeviceManager::Start(const Options& options,
+                          HttpClient* http_client,
                           Network* network,
                           Mdns* mdns,
                           HttpServer* http_server) {
@@ -44,18 +41,13 @@
   state_manager_ = std::make_shared<StateManager>(state_change_queue_.get());
   state_manager_->Startup();
 
-  auto transport = chromeos::http::Transport::CreateDefault();
-  transport->SetDefaultTimeout(
-      base::TimeDelta::FromSeconds(kRequestTimeoutSeconds));
-
   std::unique_ptr<BuffetConfig> config{new BuffetConfig{options.state_path}};
   config->Load(options.config_path);
 
-  http_client_.reset(new buffet::HttpTransportClient{transport});
   // TODO(avakulenko): Figure out security implications of storing
   // device info state data unencrypted.
   device_info_.reset(new DeviceRegistrationInfo(
-      command_manager_, state_manager_, std::move(config), http_client_.get(),
+      command_manager_, state_manager_, std::move(config), http_client,
       base::MessageLoop::current()->task_runner(), options.xmpp_enabled,
       network));
   base_api_handler_.reset(
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h
index 2e65ffe..216c9ff 100644
--- a/libweave/src/device_manager.h
+++ b/libweave/src/device_manager.h
@@ -8,10 +8,6 @@
 #include <base/memory/weak_ptr.h>
 #include <weave/device.h>
 
-namespace buffet {
-class HttpTransportClient;
-}  // namespace buffet
-
 namespace weave {
 
 class BaseApiHandler;
@@ -31,6 +27,7 @@
   ~DeviceManager() override;
 
   void Start(const Options& options,
+             HttpClient* http_client,
              Network* network,
              Mdns* mdns,
              HttpServer* http_server) override;
@@ -49,8 +46,6 @@
 
   void OnWiFiBootstrapStateChanged(weave::WifiSetupState state);
 
-  // TODO(vitalybuka): Move to buffet.
-  std::unique_ptr<buffet::HttpTransportClient> http_client_;
   std::shared_ptr<CommandManager> command_manager_;
   std::unique_ptr<StateChangeQueue> state_change_queue_;
   std::shared_ptr<StateManager> state_manager_;
diff --git a/libweave/src/device_registration_info.h b/libweave/src/device_registration_info.h
index 3c8dff3..6f94573 100644
--- a/libweave/src/device_registration_info.h
+++ b/libweave/src/device_registration_info.h
@@ -21,7 +21,6 @@
 #include <chromeos/backoff_entry.h>
 #include <chromeos/data_encoding.h>
 #include <chromeos/errors/error.h>
-#include <chromeos/http/http_transport.h>
 #include <weave/cloud.h>
 #include <weave/config.h>
 #include <weave/http_client.h>
diff --git a/libweave/src/http_transport_client.cc b/libweave/src/http_transport_client.cc
deleted file mode 100644
index dbe0ffc..0000000
--- a/libweave/src/http_transport_client.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2015 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.
-
-#include "libweave/src/http_transport_client.h"
-
-#include <base/bind.h>
-#include <chromeos/errors/error.h>
-#include <chromeos/http/http_request.h>
-#include <chromeos/http/http_utils.h>
-
-namespace buffet {
-
-namespace {
-
-class ResponseImpl : public weave::HttpClient::Response {
- public:
-  ~ResponseImpl() override = default;
-  explicit ResponseImpl(std::unique_ptr<chromeos::http::Response> response)
-      : response_{std::move(response)},
-        data_{response_->ExtractDataAsString()} {}
-
-  // weave::HttpClient::Response implementation
-  int GetStatusCode() const override { return response_->GetStatusCode(); }
-
-  std::string GetContentType() const override {
-    return response_->GetContentType();
-  }
-
-  const std::string& GetData() const override { return data_; }
-
- private:
-  std::unique_ptr<chromeos::http::Response> response_;
-  std::string data_;
-  DISALLOW_COPY_AND_ASSIGN(ResponseImpl);
-};
-
-void OnSuccessCallback(
-    const weave::HttpClient::SuccessCallback& success_callback,
-    int id,
-    std::unique_ptr<chromeos::http::Response> response) {
-  success_callback.Run(id, ResponseImpl{std::move(response)});
-}
-
-void OnErrorCallback(const weave::HttpClient::ErrorCallback& error_callback,
-                     int id,
-                     const chromeos::Error* error) {
-  error_callback.Run(id, error);
-}
-
-}  // anonymous namespace
-
-HttpTransportClient::HttpTransportClient(
-    const std::shared_ptr<chromeos::http::Transport>& transport)
-    : transport_{transport} {}
-
-HttpTransportClient::~HttpTransportClient() {}
-
-std::unique_ptr<weave::HttpClient::Response>
-HttpTransportClient::SendRequestAndBlock(const std::string& method,
-                                         const std::string& url,
-                                         const std::string& data,
-                                         const std::string& mime_type,
-                                         const Headers& headers,
-                                         chromeos::ErrorPtr* error) {
-  return std::unique_ptr<weave::HttpClient::Response>{
-      new ResponseImpl{chromeos::http::SendRequestAndBlock(
-          method, url, data.data(), data.size(), mime_type, headers, transport_,
-          error)}};
-}
-
-int HttpTransportClient::SendRequest(const std::string& method,
-                                     const std::string& url,
-                                     const std::string& data,
-                                     const std::string& mime_type,
-                                     const Headers& headers,
-                                     const SuccessCallback& success_callback,
-                                     const ErrorCallback& error_callback) {
-  return chromeos::http::SendRequest(
-      method, url, data.data(), data.size(), mime_type, headers, transport_,
-      base::Bind(&OnSuccessCallback, success_callback),
-      base::Bind(&OnErrorCallback, error_callback));
-}
-
-}  // namespace buffet
diff --git a/libweave/src/http_transport_client.h b/libweave/src/http_transport_client.h
deleted file mode 100644
index 0eb5579..0000000
--- a/libweave/src/http_transport_client.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2015 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 LIBWEAVE_SRC_HTTP_TRANSPORT_CLIENT_H_
-#define LIBWEAVE_SRC_HTTP_TRANSPORT_CLIENT_H_
-
-#include <memory>
-#include <string>
-
-#include <weave/http_client.h>
-
-namespace chromeos {
-namespace http {
-class Transport;
-}
-}
-
-namespace buffet {
-
-class HttpTransportClient : public weave::HttpClient {
- public:
-  explicit HttpTransportClient(
-      const std::shared_ptr<chromeos::http::Transport>& transport);
-
-  ~HttpTransportClient() override;
-
-  // weave::HttpClient implementation.
-  std::unique_ptr<Response> SendRequestAndBlock(
-      const std::string& method,
-      const std::string& url,
-      const std::string& data,
-      const std::string& mime_type,
-      const Headers& headers,
-      chromeos::ErrorPtr* error) override;
-
-  int SendRequest(const std::string& method,
-                  const std::string& url,
-                  const std::string& data,
-                  const std::string& mime_type,
-                  const Headers& headers,
-                  const SuccessCallback& success_callback,
-                  const ErrorCallback& error_callback) override;
-
- private:
-  std::shared_ptr<chromeos::http::Transport> transport_;
-  DISALLOW_COPY_AND_ASSIGN(HttpTransportClient);
-};
-
-}  // namespace buffet
-
-#endif  // LIBWEAVE_SRC_HTTP_TRANSPORT_CLIENT_H_