Split ValueSerializer into separate Serializer and Deserializer classes.

This CL removes the Deserializer functionality from ValueSerializer,
and puts into separate class ValueDeserializer, so that class responsibility
is maintained.

BUG=455453
TBR=brettw@chromium.org

Review URL: https://codereview.chromium.org/925783002

Cr-Commit-Position: refs/heads/master@{#319239}


CrOS-Libchrome-Original-Commit: 54a99450c633d64842217b10fa6841b2a3e7eb77
diff --git a/base/values.h b/base/values.h
index 4648283..1e1cae3 100644
--- a/base/values.h
+++ b/base/values.h
@@ -492,13 +492,20 @@
   DISALLOW_COPY_AND_ASSIGN(ListValue);
 };
 
-// This interface is implemented by classes that know how to serialize and
-// deserialize Value objects.
+// This interface is implemented by classes that know how to serialize
+// Value objects.
 class BASE_EXPORT ValueSerializer {
  public:
   virtual ~ValueSerializer();
 
   virtual bool Serialize(const Value& root) = 0;
+};
+
+// This interface is implemented by classes that know how to deserialize Value
+// objects.
+class BASE_EXPORT ValueDeserializer {
+ public:
+  virtual ~ValueDeserializer();
 
   // This method deserializes the subclass-specific format into a Value object.
   // If the return value is non-NULL, the caller takes ownership of returned