buffet: Extract StorageInterface and implementations into separate files

This will make it easy to reuse file storage and memory storage
implementations in the forthcoming state aggregator.

BUG=chromium:369322
TEST=Unittests

Change-Id: Ie0dc0dbbfcc13e038352ecf77e2ad28bd41907d9
Reviewed-on: https://chromium-review.googlesource.com/198045
Tested-by: Christopher Wiley <wiley@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/device_registration_info_unittest.cc b/buffet/device_registration_info_unittest.cc
index 2357904..93584b4 100644
--- a/buffet/device_registration_info_unittest.cc
+++ b/buffet/device_registration_info_unittest.cc
@@ -12,30 +12,13 @@
 #include "buffet/http_request.h"
 #include "buffet/http_transport_fake.h"
 #include "buffet/mime_utils.h"
+#include "buffet/storage_impls.h"
 
 using namespace buffet;
 using namespace chromeos;
 using namespace chromeos::http;
 
 namespace {
-// StorageInterface for testing. Just stores the values in memory.
-class MemStorage : public DeviceRegistrationInfo::StorageInterface {
- public:
-  virtual std::unique_ptr<base::Value> Load() override {
-    return std::unique_ptr<base::Value>(cache_->DeepCopy());
-  }
-
-  virtual bool Save(const base::Value* config) {
-    cache_.reset(config->DeepCopy());
-    ++save_count_;
-    return true;
-  }
-
-  int save_count_ = 0;
-
-private:
-  std::unique_ptr<base::Value> cache_;
-};
 
 namespace test_data {
 
@@ -332,10 +315,10 @@
   transport->AddHandler(dev_reg->GetOAuthURL("token"), request_type::kPost,
                         base::Bind(OAuth2Handler));
 
-  storage->save_count_ = 0;
+  storage->reset_save_count();
   DeviceRegistrationInfo::TestHelper::SetTestTicketId(dev_reg.get());
   EXPECT_TRUE(dev_reg->FinishRegistration(""));
-  EXPECT_EQ(1, storage->save_count_); // The device info must have been saved.
+  EXPECT_EQ(1, storage->save_count()); // The device info must have been saved.
   EXPECT_EQ(2, transport->GetRequestCount());
 
   // Validate the device info saved to storage...
@@ -401,9 +384,9 @@
   transport->AddHandler(ticket_url, request_type::kPatch,
                         base::Bind(email_patch_handler));
 
-  storage->save_count_ = 0;
+  storage->reset_save_count();
   DeviceRegistrationInfo::TestHelper::SetTestTicketId(dev_reg.get());
   EXPECT_TRUE(dev_reg->FinishRegistration(test_data::kUserAccountAuthCode));
-  EXPECT_EQ(1, storage->save_count_); // The device info must have been saved.
+  EXPECT_EQ(1, storage->save_count()); // The device info must have been saved.
   EXPECT_EQ(4, transport->GetRequestCount());
 }