libchromeos: Move http_utils from Buffet to libchromeos

http_utils have dependency on libcurl, so not to add this
dependency onto libchromeos-core, created a new sub-library,
libchromeos-http where all http_utils production code goes.

There are some fake classes used for testing purposes,
so added them to a new static library, libchromeos-test-271506.a
and created a separate package for it, so that other
components can link to this test library when then needed,
independently from the rest of libchromeos.

BUG=chromium:405714
TEST=USE=buffet ./build_packages
CQ-DEPEND=CL:213562

Change-Id: I37fab53fd5ccfc824b62555869e7581f99aca41c
Reviewed-on: https://chromium-review.googlesource.com/213366
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/device_registration_info_unittest.cc b/buffet/device_registration_info_unittest.cc
index 779e29e..27aeaa0 100644
--- a/buffet/device_registration_info_unittest.cc
+++ b/buffet/device_registration_info_unittest.cc
@@ -5,6 +5,8 @@
 #include <base/json/json_reader.h>
 #include <base/values.h>
 #include <chromeos/bind_lambda.h>
+#include <chromeos/http_request.h>
+#include <chromeos/http_transport_fake.h>
 #include <chromeos/mime_utils.h>
 #include <gtest/gtest.h>
 
@@ -12,12 +14,13 @@
 #include "buffet/commands/unittest_utils.h"
 #include "buffet/device_registration_info.h"
 #include "buffet/device_registration_storage_keys.h"
-#include "buffet/http_request.h"
-#include "buffet/http_transport_fake.h"
 #include "buffet/storage_impls.h"
 
-using namespace buffet;          // NOLINT(build/namespaces)
-using namespace buffet::http;    // NOLINT(build/namespaces)
+using chromeos::http::request_header::kAuthorization;
+using chromeos::http::fake::ServerRequest;
+using chromeos::http::fake::ServerResponse;
+
+namespace buffet {
 
 namespace {
 
@@ -69,8 +72,7 @@
   data->SetString(storage_keys::kRobotAccount, test_data::kRobotAccountEmail);
 }
 
-void OAuth2Handler(const fake::ServerRequest& request,
-                  fake::ServerResponse* response) {
+void OAuth2Handler(const ServerRequest& request, ServerResponse* response) {
   base::DictionaryValue json;
   if (request.GetFormField("grant_type") == "refresh_token") {
     // Refresh device access token.
@@ -109,15 +111,15 @@
     FAIL() << "Unexpected grant type";
   }
   json.SetInteger("expires_in", 3600);
-  response->ReplyJson(status_code::Ok, &json);
+  response->ReplyJson(chromeos::http::status_code::Ok, &json);
 }
 
-void DeviceInfoHandler(const fake::ServerRequest& request,
-                       fake::ServerResponse* response) {
+void DeviceInfoHandler(const ServerRequest& request, ServerResponse* response) {
   std::string auth = "Bearer ";
   auth += test_data::kAccessToken;
-  EXPECT_EQ(auth, request.GetHeader(http::request_header::kAuthorization));
-  response->ReplyJson(status_code::Ok, {
+  EXPECT_EQ(auth,
+            request.GetHeader(chromeos::http::request_header::kAuthorization));
+  response->ReplyJson(chromeos::http::status_code::Ok, {
     {"channel.supportedType", "xmpp"},
     {"deviceKind", "vendor"},
     {"id", test_data::kDeviceId},
@@ -125,12 +127,12 @@
   });
 }
 
-void FinalizeTicketHandler(const fake::ServerRequest& request,
-                           fake::ServerResponse* response) {
+void FinalizeTicketHandler(const ServerRequest& request,
+                           ServerResponse* response) {
   EXPECT_EQ(test_data::kApiKey, request.GetFormField("key"));
   EXPECT_TRUE(request.GetData().empty());
 
-  response->ReplyJson(status_code::Ok, {
+  response->ReplyJson(chromeos::http::status_code::Ok, {
     {"id", test_data::kClaimTicketId},
     {"kind", "clouddevices#registrationTicket"},
     {"oauthClientId", test_data::kClientId},
@@ -161,7 +163,7 @@
     InitDefaultStorage(&data_);
     storage_ = std::make_shared<MemStorage>();
     storage_->Save(&data_);
-    transport_ = std::make_shared<fake::Transport>();
+    transport_ = std::make_shared<chromeos::http::fake::Transport>();
     command_manager_ = std::make_shared<CommandManager>();
     dev_reg_ = std::unique_ptr<DeviceRegistrationInfo>(
         new DeviceRegistrationInfo(command_manager_, transport_, storage_));
@@ -169,7 +171,7 @@
 
   base::DictionaryValue data_;
   std::shared_ptr<MemStorage> storage_;
-  std::shared_ptr<fake::Transport> transport_;
+  std::shared_ptr<chromeos::http::fake::Transport> transport_;
   std::unique_ptr<DeviceRegistrationInfo> dev_reg_;
   std::shared_ptr<CommandManager> command_manager_;
 };
@@ -219,7 +221,8 @@
   storage_->Save(&data_);
   EXPECT_TRUE(dev_reg_->Load());
 
-  transport_->AddHandler(dev_reg_->GetOAuthURL("token"), request_type::kPost,
+  transport_->AddHandler(dev_reg_->GetOAuthURL("token"),
+                         chromeos::http::request_type::kPost,
                          base::Bind(OAuth2Handler));
   transport_->ResetRequestCount();
   EXPECT_TRUE(dev_reg_->CheckRegistration(nullptr));
@@ -231,9 +234,11 @@
   storage_->Save(&data_);
   EXPECT_TRUE(dev_reg_->Load());
 
-  transport_->AddHandler(dev_reg_->GetOAuthURL("token"), request_type::kPost,
+  transport_->AddHandler(dev_reg_->GetOAuthURL("token"),
+                         chromeos::http::request_type::kPost,
                          base::Bind(OAuth2Handler));
-  transport_->AddHandler(dev_reg_->GetDeviceURL(), request_type::kGet,
+  transport_->AddHandler(dev_reg_->GetDeviceURL(),
+                         chromeos::http::request_type::kGet,
                          base::Bind(DeviceInfoHandler));
   transport_->ResetRequestCount();
   auto device_info = dev_reg_->GetDeviceInfo(nullptr);
@@ -251,9 +256,11 @@
   storage_->Save(&data_);
   EXPECT_TRUE(dev_reg_->Load());
 
-  transport_->AddHandler(dev_reg_->GetOAuthURL("token"), request_type::kPost,
+  transport_->AddHandler(dev_reg_->GetOAuthURL("token"),
+                         chromeos::http::request_type::kPost,
                          base::Bind(OAuth2Handler));
-  transport_->AddHandler(dev_reg_->GetDeviceURL(), request_type::kGet,
+  transport_->AddHandler(dev_reg_->GetDeviceURL(),
+                         chromeos::http::request_type::kGet,
                          base::Bind(DeviceInfoHandler));
   std::string id = dev_reg_->GetDeviceId(nullptr);
   EXPECT_EQ(test_data::kDeviceId, id);
@@ -262,8 +269,8 @@
 TEST_F(DeviceRegistrationInfoTest, StartRegistration) {
   EXPECT_TRUE(dev_reg_->Load());
 
-  auto create_ticket = [](const fake::ServerRequest& request,
-                          fake::ServerResponse* response) {
+  auto create_ticket = [](const ServerRequest& request,
+                          ServerResponse* response) {
     EXPECT_EQ(test_data::kApiKey, request.GetFormField("key"));
     auto json = request.GetDataAsJson();
     EXPECT_NE(nullptr, json.get());
@@ -294,7 +301,7 @@
     device_draft->SetString("kind", "clouddevices#device");
     json_resp.Set("deviceDraft", device_draft);
 
-    response->ReplyJson(status_code::Ok, &json_resp);
+    response->ReplyJson(chromeos::http::status_code::Ok, &json_resp);
   };
 
   auto json_base = buffet::unittests::CreateDictionaryValue(R"({
@@ -323,7 +330,7 @@
   EXPECT_TRUE(command_manager_->LoadCommands(*json_cmds, "", nullptr));
 
   transport_->AddHandler(dev_reg_->GetServiceURL("registrationTickets"),
-                         request_type::kPost,
+                         chromeos::http::request_type::kPost,
                          base::Bind(create_ticket));
   std::map<std::string, std::string> params;
   std::string json_resp = dev_reg_->StartRegistration(params, nullptr);
@@ -345,10 +352,12 @@
   std::string ticket_url =
       dev_reg_->GetServiceURL("registrationTickets/" +
                              std::string(test_data::kClaimTicketId));
-  transport_->AddHandler(ticket_url + "/finalize", request_type::kPost,
+  transport_->AddHandler(ticket_url + "/finalize",
+                         chromeos::http::request_type::kPost,
                          base::Bind(FinalizeTicketHandler));
 
-  transport_->AddHandler(dev_reg_->GetOAuthURL("token"), request_type::kPost,
+  transport_->AddHandler(dev_reg_->GetOAuthURL("token"),
+                         chromeos::http::request_type::kPost,
                          base::Bind(OAuth2Handler));
 
   storage_->reset_save_count();
@@ -389,26 +398,28 @@
   std::string ticket_url =
       dev_reg_->GetServiceURL("registrationTickets/" +
                              std::string(test_data::kClaimTicketId));
-  transport_->AddHandler(ticket_url + "/finalize", request_type::kPost,
+  transport_->AddHandler(ticket_url + "/finalize",
+                         chromeos::http::request_type::kPost,
                          base::Bind(FinalizeTicketHandler));
 
-  transport_->AddHandler(dev_reg_->GetOAuthURL("token"), request_type::kPost,
+  transport_->AddHandler(dev_reg_->GetOAuthURL("token"),
+                         chromeos::http::request_type::kPost,
                          base::Bind(OAuth2Handler));
 
   // Handle patching in the user email onto the device record.
-  auto email_patch_handler = [](const fake::ServerRequest& request,
-                                fake::ServerResponse* response) {
+  auto email_patch_handler = [](const ServerRequest& request,
+                                ServerResponse* response) {
     std::string auth_header = "Bearer ";
     auth_header += test_data::kUserAccessToken;
     EXPECT_EQ(auth_header,
-              request.GetHeader(http::request_header::kAuthorization));
+        request.GetHeader(chromeos::http::request_header::kAuthorization));
     auto json = request.GetDataAsJson();
     EXPECT_NE(nullptr, json.get());
     std::string value;
     EXPECT_TRUE(json->GetString("userEmail", &value));
     EXPECT_EQ("me", value);
 
-    response->ReplyJson(status_code::Ok, {
+    response->ReplyJson(chromeos::http::status_code::Ok, {
       {"id", test_data::kClaimTicketId},
       {"kind", "clouddevices#registrationTicket"},
       {"oauthClientId", test_data::kClientId},
@@ -418,7 +429,7 @@
       {"deviceDraft.channel.supportedType", "xmpp"},
     });
   };
-  transport_->AddHandler(ticket_url, request_type::kPatch,
+  transport_->AddHandler(ticket_url, chromeos::http::request_type::kPatch,
                          base::Bind(email_patch_handler));
 
   storage_->reset_save_count();
@@ -429,3 +440,5 @@
             storage_->save_count());  // The device info must have been saved.
   EXPECT_EQ(4, transport_->GetRequestCount());
 }
+
+}  // namespace buffet