libweave: Remove chromeos::Any from commands and state

Now PropValue can be constructed from base::Value.

BUG=brillo:1245, brillo:1246
TEST='FEATURES=test emerge-gizmo buffet'

Change-Id: I9a639aaf320499615da5f9735353d9e8ba9d4ad7
Reviewed-on: https://chromium-review.googlesource.com/289644
Trybot-Ready: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/libweave/src/commands/object_schema_unittest.cc b/libweave/src/commands/object_schema_unittest.cc
index d1c7269..018c28f 100644
--- a/libweave/src/commands/object_schema_unittest.cc
+++ b/libweave/src/commands/object_schema_unittest.cc
@@ -31,7 +31,8 @@
   std::vector<T> values;
   values.reserve(arr.size());
   for (const auto& prop_value : arr) {
-    values.push_back(prop_value->GetValueAsAny().Get<T>());
+    const auto& value = static_cast<const TypedValueBase<T>&>(*prop_value);
+    values.push_back(value.GetValue());
   }
   return values;
 }
@@ -153,12 +154,12 @@
 TEST(CommandSchema, IntPropType_CreateValue) {
   IntPropType prop;
   chromeos::ErrorPtr error;
-  auto val = prop.CreateValue(2, &error);
+  auto val = prop.CreateValue(base::FundamentalValue{2}, &error);
   ASSERT_NE(nullptr, val.get());
   EXPECT_EQ(nullptr, error.get());
-  EXPECT_EQ(2, val->GetValueAsAny().Get<int>());
+  EXPECT_EQ(2, val->GetValue());
 
-  val = prop.CreateValue("blah", &error);
+  val = prop.CreateValue(base::StringValue{"blah"}, &error);
   EXPECT_EQ(nullptr, val.get());
   ASSERT_NE(nullptr, error.get());
   EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode());
@@ -242,12 +243,12 @@
 TEST(CommandSchema, BoolPropType_CreateValue) {
   BooleanPropType prop;
   chromeos::ErrorPtr error;
-  auto val = prop.CreateValue(true, &error);
+  auto val = prop.CreateValue(base::FundamentalValue{true}, &error);
   ASSERT_NE(nullptr, val.get());
   EXPECT_EQ(nullptr, error.get());
-  EXPECT_TRUE(val->GetValueAsAny().Get<bool>());
+  EXPECT_TRUE(val->GetValue());
 
-  val = prop.CreateValue("blah", &error);
+  val = prop.CreateValue(base::StringValue{"blah"}, &error);
   EXPECT_EQ(nullptr, val.get());
   ASSERT_NE(nullptr, error.get());
   EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode());
@@ -359,12 +360,12 @@
 TEST(CommandSchema, DoublePropType_CreateValue) {
   DoublePropType prop;
   chromeos::ErrorPtr error;
-  auto val = prop.CreateValue(2.0, &error);
+  auto val = prop.CreateValue(base::FundamentalValue{2.0}, &error);
   ASSERT_NE(nullptr, val.get());
   EXPECT_EQ(nullptr, error.get());
-  EXPECT_DOUBLE_EQ(2.0, val->GetValueAsAny().Get<double>());
+  EXPECT_DOUBLE_EQ(2.0, val->GetValue());
 
-  val = prop.CreateValue("blah", &error);
+  val = prop.CreateValue(base::StringValue{"blah"}, &error);
   EXPECT_EQ(nullptr, val.get());
   ASSERT_NE(nullptr, error.get());
   EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode());
@@ -484,12 +485,12 @@
 TEST(CommandSchema, StringPropType_CreateValue) {
   StringPropType prop;
   chromeos::ErrorPtr error;
-  auto val = prop.CreateValue(std::string{"blah"}, &error);
+  auto val = prop.CreateValue(base::StringValue{"blah"}, &error);
   ASSERT_NE(nullptr, val.get());
   EXPECT_EQ(nullptr, error.get());
-  EXPECT_EQ("blah", val->GetValueAsAny().Get<std::string>());
+  EXPECT_EQ("blah", val->GetValue());
 
-  val = prop.CreateValue(4, &error);
+  val = prop.CreateValue(base::FundamentalValue{4}, &error);
   EXPECT_EQ(nullptr, val.get());
   ASSERT_NE(nullptr, error.get());
   EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode());
@@ -737,17 +738,18 @@
           .get(),
       nullptr, nullptr));
   ValueMap obj{
-      {"width", int_type.CreateValue(10, nullptr)},
-      {"height", int_type.CreateValue(20, nullptr)},
+      {"width", int_type.CreateValue(base::FundamentalValue{10}, nullptr)},
+      {"height", int_type.CreateValue(base::FundamentalValue{20}, nullptr)},
   };
 
   chromeos::ErrorPtr error;
-  auto val = prop.CreateValue(obj, &error);
+  auto val = prop.CreateValue(
+      *CreateDictionaryValue("{'width': 10, 'height': 20}"), &error);
   ASSERT_NE(nullptr, val.get());
   EXPECT_EQ(nullptr, error.get());
-  EXPECT_EQ(obj, val->GetValueAsAny().Get<ValueMap>());
+  EXPECT_EQ(obj, val->GetValue());
 
-  val = prop.CreateValue("blah", &error);
+  val = prop.CreateValue(base::StringValue{"blah"}, &error);
   EXPECT_EQ(nullptr, val.get());
   ASSERT_NE(nullptr, error.get());
   EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode());
@@ -866,40 +868,21 @@
   chromeos::ErrorPtr error;
   ValueVector arr;
 
-  auto val = prop.CreateValue(arr, &error);
+  auto val = prop.CreateValue(base::ListValue{}, &error);
   ASSERT_NE(nullptr, val.get());
   EXPECT_EQ(nullptr, error.get());
-  EXPECT_EQ(arr, val->GetValueAsAny().Get<ValueVector>());
+  EXPECT_EQ(arr, val->GetValue());
   EXPECT_JSON_EQ("[]", *val->ToJson());
 
-  IntPropType int_type;
-  ObjectPropType obj_type;
-  ASSERT_TRUE(obj_type.FromJson(
-      CreateDictionaryValue(
-          "{'properties':{'width':'integer','height':'integer'}}")
-          .get(),
-      nullptr, nullptr));
-  arr.push_back(obj_type.CreateValue(
-      ValueMap{
-          {"width", int_type.CreateValue(10, nullptr)},
-          {"height", int_type.CreateValue(20, nullptr)},
-      },
-      nullptr));
-  arr.push_back(obj_type.CreateValue(
-      ValueMap{
-          {"width", int_type.CreateValue(17, nullptr)},
-          {"height", int_type.CreateValue(18, nullptr)},
-      },
-      nullptr));
-
-  val = prop.CreateValue(arr, &error);
+  val = prop.CreateValue(
+      *CreateValue("[{'height':20,'width':10},{'width':17, 'height':18}]"),
+      &error);
   ASSERT_NE(nullptr, val.get());
   EXPECT_EQ(nullptr, error.get());
-  EXPECT_EQ(arr, val->GetValueAsAny().Get<ValueVector>());
   EXPECT_JSON_EQ("[{'height':20,'width':10},{'height':18,'width':17}]",
                  *val->ToJson());
 
-  val = prop.CreateValue("blah", &error);
+  val = prop.CreateValue(base::StringValue{"blah"}, &error);
   EXPECT_EQ(nullptr, val.get());
   ASSERT_NE(nullptr, error.get());
   EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode());