libweave: Remove error pointer from ToJson methods Converting to Json should not ever fail. BUG=brillo:1246 TEST='FEATURES=test emerge-gizmo buffet' Change-Id: I90b76927ae5bf50c21e8278b9c0e6c411bd61b56 Reviewed-on: https://chromium-review.googlesource.com/289303 Reviewed-by: Vitaly Buka <vitalybuka@chromium.org> Commit-Queue: Vitaly Buka <vitalybuka@chromium.org> Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/manager.cc b/buffet/manager.cc index 06de9f1..1ee1793 100644 --- a/buffet/manager.cc +++ b/buffet/manager.cc
@@ -144,9 +144,8 @@ } bool Manager::GetState(chromeos::ErrorPtr* error, std::string* state) { - auto json = device_->GetState()->GetStateValuesAsJson(error); - if (!json) - return false; + auto json = device_->GetState()->GetStateValuesAsJson(); + CHECK(json); base::JSONWriter::WriteWithOptions( *json, base::JSONWriter::OPTIONS_PRETTY_PRINT, state); return true; @@ -251,7 +250,7 @@ } void Manager::OnStateChanged() { - auto state = device_->GetState()->GetStateValuesAsJson(nullptr); + auto state = device_->GetState()->GetStateValuesAsJson(); CHECK(state); std::string json; base::JSONWriter::WriteWithOptions(
diff --git a/libweave/include/weave/state.h b/libweave/include/weave/state.h index bf87a64..d34b408 100644 --- a/libweave/include/weave/state.h +++ b/libweave/include/weave/state.h
@@ -22,8 +22,8 @@ // Returns aggregated state properties across all registered packages as // a JSON object that can be used to send the device state to the GCD server. - virtual std::unique_ptr<base::DictionaryValue> GetStateValuesAsJson( - chromeos::ErrorPtr* error) const = 0; + virtual std::unique_ptr<base::DictionaryValue> GetStateValuesAsJson() + const = 0; protected: virtual ~State() = default;
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc index 3e35bd9..46b80f7 100644 --- a/libweave/src/base_api_handler_unittest.cc +++ b/libweave/src/base_api_handler_unittest.cc
@@ -124,7 +124,7 @@ 'network': {} } })"; - EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson()); AddCommand(R"({ 'name' : 'base.updateBaseConfiguration', @@ -146,7 +146,7 @@ 'network': {} } })"; - EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *state_manager_->GetStateValuesAsJson()); } TEST_F(BaseApiHandlerTest, UpdateDeviceInfo) {
diff --git a/libweave/src/commands/command_dictionary.cc b/libweave/src/commands/command_dictionary.cc index 536c7fc..8359be5 100644 --- a/libweave/src/commands/command_dictionary.cc +++ b/libweave/src/commands/command_dictionary.cc
@@ -222,9 +222,8 @@ continue; std::unique_ptr<base::DictionaryValue> parameters = - pair.second->GetParameters()->ToJson(full_schema, true, error); - if (!parameters) - return {}; + pair.second->GetParameters()->ToJson(full_schema, true); + CHECK(parameters); // Progress and results are not part of public commandDefs. auto cmd_name_parts = chromeos::string_utils::SplitAtFirst(pair.first, ".");
diff --git a/libweave/src/commands/command_dictionary_unittest.cc b/libweave/src/commands/command_dictionary_unittest.cc index 093aee3..5348777 100644 --- a/libweave/src/commands/command_dictionary_unittest.cc +++ b/libweave/src/commands/command_dictionary_unittest.cc
@@ -92,11 +92,11 @@ EXPECT_EQ(UserRole::kViewer, cmd->GetMinimalRole()); EXPECT_JSON_EQ("{'height': {'type': 'integer'}}", - *cmd->GetParameters()->ToJson(true, true, nullptr)); + *cmd->GetParameters()->ToJson(true, true)); EXPECT_JSON_EQ("{'progress': {'type': 'integer'}}", - *cmd->GetProgress()->ToJson(true, false, nullptr)); + *cmd->GetProgress()->ToJson(true, false)); EXPECT_JSON_EQ("{'success': {'type': 'boolean'}}", - *cmd->GetResults()->ToJson(true, false, nullptr)); + *cmd->GetResults()->ToJson(true, false)); } TEST(CommandDictionary, LoadCommands_Failures) {
diff --git a/libweave/src/commands/command_instance.cc b/libweave/src/commands/command_instance.cc index d2efcb4..8c4b89a 100644 --- a/libweave/src/commands/command_instance.cc +++ b/libweave/src/commands/command_instance.cc
@@ -83,15 +83,15 @@ } std::unique_ptr<base::DictionaryValue> CommandInstance::GetParameters() const { - return TypedValueToJson(parameters_, nullptr); + return TypedValueToJson(parameters_); } std::unique_ptr<base::DictionaryValue> CommandInstance::GetProgress() const { - return TypedValueToJson(progress_, nullptr); + return TypedValueToJson(progress_); } std::unique_ptr<base::DictionaryValue> CommandInstance::GetResults() const { - return TypedValueToJson(results_, nullptr); + return TypedValueToJson(results_); } bool CommandInstance::SetProgress(const base::DictionaryValue& progress, @@ -240,11 +240,11 @@ json->SetString(commands::attributes::kCommand_Id, id_); json->SetString(commands::attributes::kCommand_Name, name_); json->Set(commands::attributes::kCommand_Parameters, - TypedValueToJson(parameters_, nullptr).release()); + TypedValueToJson(parameters_).release()); json->Set(commands::attributes::kCommand_Progress, - TypedValueToJson(progress_, nullptr).release()); + TypedValueToJson(progress_).release()); json->Set(commands::attributes::kCommand_Results, - TypedValueToJson(results_, nullptr).release()); + TypedValueToJson(results_).release()); json->SetString(commands::attributes::kCommand_State, EnumToString(status_)); return json;
diff --git a/libweave/src/commands/object_schema.cc b/libweave/src/commands/object_schema.cc index 1f7b7fa..f117b6b 100644 --- a/libweave/src/commands/object_schema.cc +++ b/libweave/src/commands/object_schema.cc
@@ -299,16 +299,15 @@ p->second->MakeRequired(true); return true; } + std::unique_ptr<base::DictionaryValue> ObjectSchema::ToJson( bool full_schema, - bool in_command_def, - chromeos::ErrorPtr* error) const { + bool in_command_def) const { std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue); for (const auto& pair : properties_) { - auto PropDef = pair.second->ToJson(full_schema, in_command_def, error); - if (!PropDef) - return {}; - value->SetWithoutPathExpansion(pair.first, PropDef.release()); + auto prop_def = pair.second->ToJson(full_schema, in_command_def); + CHECK(prop_def); + value->SetWithoutPathExpansion(pair.first, prop_def.release()); } return value; }
diff --git a/libweave/src/commands/object_schema.h b/libweave/src/commands/object_schema.h index 51c555f..b971dd8 100644 --- a/libweave/src/commands/object_schema.h +++ b/libweave/src/commands/object_schema.h
@@ -67,10 +67,8 @@ // Saves the object schema to JSON. When |full_schema| is set to true, // then all properties and constraints are saved, otherwise, only // the overridden (not inherited) ones are saved. - std::unique_ptr<base::DictionaryValue> ToJson( - bool full_schema, - bool in_command_def, - chromeos::ErrorPtr* error) const; + std::unique_ptr<base::DictionaryValue> ToJson(bool full_schema, + bool in_command_def) const; // Loads the object schema from JSON. If |object_schema| is not nullptr, it is // used as a base schema to inherit omitted properties and constraints from.
diff --git a/libweave/src/commands/object_schema_unittest.cc b/libweave/src/commands/object_schema_unittest.cc index d927c7b..1bb8e01 100644 --- a/libweave/src/commands/object_schema_unittest.cc +++ b/libweave/src/commands/object_schema_unittest.cc
@@ -68,26 +68,25 @@ TEST(CommandSchema, IntPropType_ToJson) { IntPropType prop; - EXPECT_JSON_EQ("'integer'", *prop.ToJson(false, false, nullptr)); - EXPECT_JSON_EQ("{'type':'integer'}", *prop.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ("'integer'", *prop.ToJson(false, false)); + EXPECT_JSON_EQ("{'type':'integer'}", *prop.ToJson(true, false)); IntPropType param2; param2.FromJson(CreateDictionaryValue("{}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'minimum':3}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'minimum':3}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'minimum':3}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'maximum':-7}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'maximum':-7}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'maximum':-7}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'minimum':0,'maximum':5}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'maximum':5,'minimum':0}", - *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'maximum':5,'minimum':0}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'enum':[1,2,3]}").get(), &prop, nullptr); - EXPECT_JSON_EQ("[1,2,3]", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("[1,2,3]", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'default':123}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'default':123}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'default':123}", *param2.ToJson(false, false)); } TEST(CommandSchema, IntPropType_FromJson) { @@ -188,19 +187,19 @@ TEST(CommandSchema, BoolPropType_ToJson) { BooleanPropType prop; - EXPECT_JSON_EQ("'boolean'", *prop.ToJson(false, false, nullptr)); - EXPECT_JSON_EQ("{'type':'boolean'}", *prop.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ("'boolean'", *prop.ToJson(false, false)); + EXPECT_JSON_EQ("{'type':'boolean'}", *prop.ToJson(true, false)); BooleanPropType param2; param2.FromJson(CreateDictionaryValue("{}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'enum':[true,false]}").get(), &prop, nullptr); - EXPECT_JSON_EQ("[true,false]", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("[true,false]", *param2.ToJson(false, false)); EXPECT_JSON_EQ("{'enum':[true,false],'type':'boolean'}", - *param2.ToJson(true, false, nullptr)); + *param2.ToJson(true, false)); param2.FromJson(CreateDictionaryValue("{'default':true}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'default':true}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'default':true}", *param2.ToJson(false, false)); } TEST(CommandSchema, BoolPropType_FromJson) { @@ -278,23 +277,22 @@ TEST(CommandSchema, DoublePropType_ToJson) { DoublePropType prop; - EXPECT_JSON_EQ("'number'", *prop.ToJson(false, false, nullptr)); - EXPECT_JSON_EQ("{'type':'number'}", *prop.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ("'number'", *prop.ToJson(false, false)); + EXPECT_JSON_EQ("{'type':'number'}", *prop.ToJson(true, false)); DoublePropType param2; param2.FromJson(CreateDictionaryValue("{}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'minimum':3}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'minimum':3.0}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'minimum':3.0}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'maximum':-7}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'maximum':-7.0}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'maximum':-7.0}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'minimum':0,'maximum':5}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'maximum':5.0,'minimum':0.0}", - *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'maximum':5.0,'minimum':0.0}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'default':12.3}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'default':12.3}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'default':12.3}", *param2.ToJson(false, false)); } TEST(CommandSchema, DoublePropType_FromJson) { @@ -396,24 +394,23 @@ TEST(CommandSchema, StringPropType_ToJson) { StringPropType prop; - EXPECT_JSON_EQ("'string'", *prop.ToJson(false, false, nullptr)); - EXPECT_JSON_EQ("{'type':'string'}", *prop.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ("'string'", *prop.ToJson(false, false)); + EXPECT_JSON_EQ("{'type':'string'}", *prop.ToJson(true, false)); StringPropType param2; param2.FromJson(CreateDictionaryValue("{}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'minLength':3}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'minLength':3}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'minLength':3}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'maxLength':7}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'maxLength':7}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'maxLength':7}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'minLength':0,'maxLength':5}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'maxLength':5,'minLength':0}", - *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'maxLength':5,'minLength':0}", *param2.ToJson(false, false)); param2.FromJson(CreateDictionaryValue("{'default':'abcd'}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'default':'abcd'}", *param2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'default':'abcd'}", *param2.ToJson(false, false)); } TEST(CommandSchema, StringPropType_FromJson) { @@ -521,14 +518,14 @@ TEST(CommandSchema, ObjectPropType_ToJson) { ObjectPropType prop; EXPECT_JSON_EQ("{'additionalProperties':false,'properties':{}}", - *prop.ToJson(false, false, nullptr)); + *prop.ToJson(false, false)); EXPECT_JSON_EQ( "{'additionalProperties':false,'properties':{},'type':'object'}", - *prop.ToJson(true, false, nullptr)); + *prop.ToJson(true, false)); EXPECT_FALSE(prop.IsBasedOnSchema()); ObjectPropType prop2; prop2.FromJson(CreateDictionaryValue("{}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{}", *prop2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{}", *prop2.ToJson(false, false)); EXPECT_TRUE(prop2.IsBasedOnSchema()); auto schema = ObjectSchema::Create(); @@ -547,7 +544,7 @@ } } })"; - EXPECT_JSON_EQ(expected, *prop2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ(expected, *prop2.ToJson(false, false)); expected = R"({ 'additionalProperties': false, @@ -563,7 +560,7 @@ }, 'type': 'object' })"; - EXPECT_JSON_EQ(expected, *prop2.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ(expected, *prop2.ToJson(true, false)); ObjectPropType prop3; ASSERT_TRUE( @@ -577,7 +574,7 @@ 'password': 'abracadabra' } })"; - EXPECT_JSON_EQ(expected, *prop3.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ(expected, *prop3.ToJson(false, false)); expected = R"({ 'additionalProperties': false, @@ -597,7 +594,7 @@ }, 'type': 'object' })"; - EXPECT_JSON_EQ(expected, *prop3.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ(expected, *prop3.ToJson(true, false)); ObjectPropType prop4; ASSERT_TRUE( @@ -620,7 +617,7 @@ } } })"; - EXPECT_JSON_EQ(expected, *prop4.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ(expected, *prop4.ToJson(false, false)); expected = R"({ 'additionalProperties': true, @@ -640,7 +637,7 @@ }, 'type': 'object' })"; - EXPECT_JSON_EQ(expected, *prop4.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ(expected, *prop4.ToJson(true, false)); } TEST(CommandSchema, ObjectPropType_FromJson) { @@ -784,20 +781,20 @@ TEST(CommandSchema, ArrayPropType_ToJson) { ArrayPropType prop; prop.SetItemType(PropType::Create(ValueType::Int)); - EXPECT_JSON_EQ("{'items':'integer'}", *prop.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'items':'integer'}", *prop.ToJson(false, false)); EXPECT_JSON_EQ("{'items':{'type':'integer'},'type':'array'}", - *prop.ToJson(true, false, nullptr)); + *prop.ToJson(true, false)); EXPECT_FALSE(prop.IsBasedOnSchema()); ArrayPropType prop2; prop2.FromJson(CreateDictionaryValue("{}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{}", *prop2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{}", *prop2.ToJson(false, false)); EXPECT_TRUE(prop2.IsBasedOnSchema()); prop2.FromJson(CreateDictionaryValue("{'default':[1,2,3]}").get(), &prop, nullptr); - EXPECT_JSON_EQ("{'default':[1,2,3]}", *prop2.ToJson(false, false, nullptr)); + EXPECT_JSON_EQ("{'default':[1,2,3]}", *prop2.ToJson(false, false)); EXPECT_JSON_EQ( "{'default':[1,2,3],'items':{'type':'integer'},'type':'array'}", - *prop2.ToJson(true, false, nullptr)); + *prop2.ToJson(true, false)); } TEST(CommandSchema, ArrayPropType_FromJson) { @@ -879,7 +876,7 @@ ASSERT_NE(nullptr, val.get()); EXPECT_EQ(nullptr, error.get()); EXPECT_EQ(arr, val->GetValueAsAny().Get<ValueVector>()); - EXPECT_JSON_EQ("[]", *val->ToJson(nullptr)); + EXPECT_JSON_EQ("[]", *val->ToJson()); IntPropType int_type; ObjectPropType obj_type; @@ -906,7 +903,7 @@ 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(nullptr)); + *val->ToJson()); val = prop.CreateValue("blah", &error); EXPECT_EQ(nullptr, val.get()); @@ -1484,14 +1481,14 @@ IntPropType prop; prop.MakeRequired(false); - EXPECT_JSON_EQ("{'type':'integer'}", *prop.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ("{'type':'integer'}", *prop.ToJson(true, false)); EXPECT_JSON_EQ("{'isRequired':false,'type':'integer'}", - *prop.ToJson(true, true, nullptr)); + *prop.ToJson(true, true)); prop.MakeRequired(true); - EXPECT_JSON_EQ("{'type':'integer'}", *prop.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ("{'type':'integer'}", *prop.ToJson(true, false)); EXPECT_JSON_EQ("{'isRequired':true,'type':'integer'}", - *prop.ToJson(true, true, nullptr)); + *prop.ToJson(true, true)); IntPropType prop2; EXPECT_TRUE(prop2.FromJson(CreateDictionaryValue("{}").get(), &prop, @@ -1502,9 +1499,9 @@ CreateDictionaryValue("{'isRequired': false}").get(), &prop, nullptr)); EXPECT_FALSE(prop2.IsRequired()); - EXPECT_JSON_EQ("{'type':'integer'}", *prop2.ToJson(true, false, nullptr)); + EXPECT_JSON_EQ("{'type':'integer'}", *prop2.ToJson(true, false)); EXPECT_JSON_EQ("{'isRequired':false,'type':'integer'}", - *prop2.ToJson(true, true, nullptr)); + *prop2.ToJson(true, true)); } TEST(CommandSchema, RequiredProperties_Object) { @@ -1528,14 +1525,14 @@ 'prop3': 'boolean', 'prop4': {'items': 'string'} })"; - EXPECT_JSON_EQ(expected1, *schema->ToJson(false, false, nullptr)); + EXPECT_JSON_EQ(expected1, *schema->ToJson(false, false)); auto expected2 = R"({ 'prop1': {'type':'integer','isRequired': true}, 'prop2': {'type':'string','isRequired': false}, 'prop3': {'type':'boolean','isRequired': true}, 'prop4': {'items': 'string'} })"; - EXPECT_JSON_EQ(expected2, *schema->ToJson(false, true, nullptr)); + EXPECT_JSON_EQ(expected2, *schema->ToJson(false, true)); obj_type.SetObjectSchema(std::move(schema)); auto expected3 = R"({ @@ -1548,8 +1545,8 @@ }, 'required': ['prop1','prop3'] })"; - EXPECT_JSON_EQ(expected3, *obj_type.ToJson(false, false, nullptr)); - EXPECT_JSON_EQ(expected3, *obj_type.ToJson(false, true, nullptr)); + EXPECT_JSON_EQ(expected3, *obj_type.ToJson(false, false)); + EXPECT_JSON_EQ(expected3, *obj_type.ToJson(false, true)); } TEST(CommandSchema, RequiredProperties_Schema_FromJson) { @@ -1564,7 +1561,7 @@ EXPECT_TRUE(schema.GetProp("prop1")->IsRequired()); EXPECT_FALSE(schema.GetProp("prop2")->IsRequired()); EXPECT_FALSE(schema.GetProp("prop3")->IsRequired()); - EXPECT_JSON_EQ(schema_str, *schema.ToJson(false, true, nullptr)); + EXPECT_JSON_EQ(schema_str, *schema.ToJson(false, true)); } TEST(CommandSchema, RequiredProperties_Schema_FromJson_Inherit) { @@ -1596,7 +1593,7 @@ 'prop3': {}, 'prop4': {} })"; - EXPECT_JSON_EQ(expected, *schema.ToJson(false, true, nullptr)); + EXPECT_JSON_EQ(expected, *schema.ToJson(false, true)); } TEST(CommandSchema, RequiredProperties_ObjectPropType_FromJson) {
diff --git a/libweave/src/commands/prop_constraints.cc b/libweave/src/commands/prop_constraints.cc index 9d9f81e..4f730f7 100644 --- a/libweave/src/commands/prop_constraints.cc +++ b/libweave/src/commands/prop_constraints.cc
@@ -17,9 +17,9 @@ // error reporting. std::string PropValueToString(const PropValue& value) { std::string result; - auto json = value.ToJson(nullptr); - if (json) - base::JSONWriter::Write(*json, &result); + auto json = value.ToJson(); + CHECK(json); + base::JSONWriter::Write(*json, &result); return result; } @@ -62,16 +62,13 @@ return false; } -bool Constraint::AddToJsonDict(base::DictionaryValue* dict, - bool overridden_only, - chromeos::ErrorPtr* error) const { +void Constraint::AddToJsonDict(base::DictionaryValue* dict, + bool overridden_only) const { if (!overridden_only || HasOverriddenAttributes()) { - auto value = ToJson(error); - if (!value) - return false; + auto value = ToJson(); + CHECK(value); dict->SetWithoutPathExpansion(GetDictKey(), value.release()); } - return true; } // ConstraintStringLength ----------------------------------------------------- @@ -86,9 +83,8 @@ return !limit_.is_inherited; } -std::unique_ptr<base::Value> ConstraintStringLength::ToJson( - chromeos::ErrorPtr* error) const { - return TypedValueToJson(limit_.value, error); +std::unique_ptr<base::Value> ConstraintStringLength::ToJson() const { + return TypedValueToJson(limit_.value); } // ConstraintStringLengthMin -------------------------------------------------- @@ -205,9 +201,8 @@ return std::unique_ptr<Constraint>{new ConstraintOneOf{std::move(cloned)}}; } -std::unique_ptr<base::Value> ConstraintOneOf::ToJson( - chromeos::ErrorPtr* error) const { - return TypedValueToJson(set_.value, error); +std::unique_ptr<base::Value> ConstraintOneOf::ToJson() const { + return TypedValueToJson(set_.value); } const char* ConstraintOneOf::GetDictKey() const {
diff --git a/libweave/src/commands/prop_constraints.h b/libweave/src/commands/prop_constraints.h index d325a00..80ecbb9 100644 --- a/libweave/src/commands/prop_constraints.h +++ b/libweave/src/commands/prop_constraints.h
@@ -55,17 +55,15 @@ // Saves the constraint into the specified JSON |dict| object, representing // the object schema. If |overridden_only| is set to true, then the // inherited constraints will not be added to the schema object. - virtual bool AddToJsonDict(base::DictionaryValue* dict, - bool overridden_only, - chromeos::ErrorPtr* error) const; + virtual void AddToJsonDict(base::DictionaryValue* dict, + bool overridden_only) const; // Saves the value of constraint to JSON value. E.g., if the numeric // constraint was defined as {"minimum":20} this will create a JSON value // of 20. The current design implies that each constraint has one value // only. If this assumption changes, this interface needs to be updated // accordingly. - virtual std::unique_ptr<base::Value> ToJson( - chromeos::ErrorPtr* error) const = 0; + virtual std::unique_ptr<base::Value> ToJson() const = 0; // Overloaded by the concrete class implementation, it should return the // JSON object property name to store the constraint's value as. @@ -107,9 +105,8 @@ bool HasOverriddenAttributes() const override { return !limit_.is_inherited; } // Implementation of Constraint::ToJson(). - std::unique_ptr<base::Value> ToJson( - chromeos::ErrorPtr* error) const override { - return TypedValueToJson(limit_.value, error); + std::unique_ptr<base::Value> ToJson() const override { + return TypedValueToJson(limit_.value); } // Stores the upper/lower value limit for maximum/minimum constraint. @@ -213,7 +210,7 @@ // Implementation of Constraint::HasOverriddenAttributes(). bool HasOverriddenAttributes() const override; // Implementation of Constraint::ToJson(). - std::unique_ptr<base::Value> ToJson(chromeos::ErrorPtr* error) const override; + std::unique_ptr<base::Value> ToJson() const override; // Stores the upper/lower value limit for string length constraint. // |limit_.is_inherited| indicates whether the constraint is inherited @@ -306,7 +303,7 @@ std::unique_ptr<Constraint> CloneAsInherited() const override; // Implementation of Constraint::ToJson(). - std::unique_ptr<base::Value> ToJson(chromeos::ErrorPtr* error) const override; + std::unique_ptr<base::Value> ToJson() const override; // Implementation of Constraint::GetDictKey(). const char* GetDictKey() const override;
diff --git a/libweave/src/commands/prop_types.cc b/libweave/src/commands/prop_types.cc index 3105e6d..ffec8f4 100644 --- a/libweave/src/commands/prop_types.cc +++ b/libweave/src/commands/prop_types.cc
@@ -52,8 +52,7 @@ } std::unique_ptr<base::Value> PropType::ToJson(bool full_schema, - bool in_command_def, - chromeos::ErrorPtr* error) const { + bool in_command_def) const { // Determine if we need to output "isRequired" attribute. const bool include_required = in_command_def && !required_.is_inherited; @@ -66,7 +65,7 @@ if (!full_schema && !HasOverriddenAttributes()) { if (based_on_schema_) return std::unique_ptr<base::Value>(new base::DictionaryValue); - return TypedValueToJson(GetTypeAsString(), error); + return TypedValueToJson(GetTypeAsString()); } std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); @@ -93,20 +92,17 @@ // {'enum':[1,2,3]} auto p = constraints_.find(ConstraintType::OneOf); if (p != constraints_.end()) { - return p->second->ToJson(error); + return p->second->ToJson(); } } - for (const auto& pair : constraints_) { - if (!pair.second->AddToJsonDict(dict.get(), !full_schema, error)) - return std::unique_ptr<base::Value>(); - } + for (const auto& pair : constraints_) + pair.second->AddToJsonDict(dict.get(), !full_schema); if (default_.value && (full_schema || !default_.is_inherited)) { - auto defval = default_.value->ToJson(error); - if (!defval) - return std::unique_ptr<base::Value>(); - dict->Set(commands::attributes::kDefault, defval.release()); + auto def_val = default_.value->ToJson(); + CHECK(def_val); + dict->Set(commands::attributes::kDefault, def_val.release()); } if (include_required) @@ -495,35 +491,29 @@ return cloned; } -std::unique_ptr<base::Value> ObjectPropType::ToJson( - bool full_schema, - bool in_command_def, - chromeos::ErrorPtr* error) const { +std::unique_ptr<base::Value> ObjectPropType::ToJson(bool full_schema, + bool in_command_def) const { std::unique_ptr<base::Value> value = - PropType::ToJson(full_schema, in_command_def, error); - if (value) { - base::DictionaryValue* dict = nullptr; - CHECK(value->GetAsDictionary(&dict)) << "Expecting a JSON object"; - if (!object_schema_.is_inherited || full_schema) { - auto object_schema = - object_schema_.value->ToJson(full_schema, false, error); - if (!object_schema) { - value.reset(); - return value; - } - dict->SetWithoutPathExpansion(commands::attributes::kObject_Properties, - object_schema.release()); - dict->SetBooleanWithoutPathExpansion( - commands::attributes::kObject_AdditionalProperties, - object_schema_.value->GetExtraPropertiesAllowed()); - std::unique_ptr<base::ListValue> required{new base::ListValue}; - for (const auto& pair : object_schema_.value->GetProps()) { - if (pair.second->IsRequired()) - required->AppendString(pair.first); - } - if (required->GetSize() > 0) { - dict->Set(commands::attributes::kObject_Required, required.release()); - } + PropType::ToJson(full_schema, in_command_def); + CHECK(value); + base::DictionaryValue* dict = nullptr; + CHECK(value->GetAsDictionary(&dict)) << "Expecting a JSON object"; + if (!object_schema_.is_inherited || full_schema) { + auto object_schema = object_schema_.value->ToJson(full_schema, false); + CHECK(object_schema); + + dict->SetWithoutPathExpansion(commands::attributes::kObject_Properties, + object_schema.release()); + dict->SetBooleanWithoutPathExpansion( + commands::attributes::kObject_AdditionalProperties, + object_schema_.value->GetExtraPropertiesAllowed()); + std::unique_ptr<base::ListValue> required{new base::ListValue}; + for (const auto& pair : object_schema_.value->GetProps()) { + if (pair.second->IsRequired()) + required->AppendString(pair.first); + } + if (required->GetSize() > 0) { + dict->Set(commands::attributes::kObject_Required, required.release()); } } return value; @@ -660,22 +650,17 @@ return cloned; } -std::unique_ptr<base::Value> ArrayPropType::ToJson( - bool full_schema, - bool in_command_def, - chromeos::ErrorPtr* error) const { +std::unique_ptr<base::Value> ArrayPropType::ToJson(bool full_schema, + bool in_command_def) const { std::unique_ptr<base::Value> value = - PropType::ToJson(full_schema, in_command_def, error); - if (value && (!item_type_.is_inherited || full_schema)) { + PropType::ToJson(full_schema, in_command_def); + CHECK(value); + if (!item_type_.is_inherited || full_schema) { base::DictionaryValue* dict = nullptr; CHECK(value->GetAsDictionary(&dict)) << "Expecting a JSON object"; - auto type = item_type_.value->ToJson(full_schema, false, error); - if (!type) { - value.reset(); - return value; - } - dict->SetWithoutPathExpansion(commands::attributes::kItems, - type.release()); + auto type = item_type_.value->ToJson(full_schema, false); + CHECK(type); + dict->SetWithoutPathExpansion(commands::attributes::kItems, type.release()); } return value; }
diff --git a/libweave/src/commands/prop_types.h b/libweave/src/commands/prop_types.h index 09420f1..eb605a7 100644 --- a/libweave/src/commands/prop_types.h +++ b/libweave/src/commands/prop_types.h
@@ -121,8 +121,7 @@ // Command definitions handle required parameters differently (using // "isRequired" property as opposed to "required" list for object properties). virtual std::unique_ptr<base::Value> ToJson(bool full_schema, - bool in_command_def, - chromeos::ErrorPtr* error) const; + bool in_command_def) const; // Parses an JSON parameter type definition. Optional |base_schema| may // specify the base schema type definition this type should be based upon. // If not specified (nullptr), the parameter type is assumed to be a full @@ -363,8 +362,7 @@ std::unique_ptr<PropType> Clone() const override; std::unique_ptr<base::Value> ToJson(bool full_schema, - bool in_command_def, - chromeos::ErrorPtr* error) const override; + bool in_command_def) const override; bool ObjectSchemaFromJson(const base::DictionaryValue* value, const PropType* base_schema, std::set<std::string>* processed_keys, @@ -403,8 +401,7 @@ std::unique_ptr<PropType> Clone() const override; std::unique_ptr<base::Value> ToJson(bool full_schema, - bool in_command_def, - chromeos::ErrorPtr* error) const override; + bool in_command_def) const override; bool ObjectSchemaFromJson(const base::DictionaryValue* value, const PropType* base_schema,
diff --git a/libweave/src/commands/prop_values.h b/libweave/src/commands/prop_values.h index 4740a3f..d0b2dc7 100644 --- a/libweave/src/commands/prop_values.h +++ b/libweave/src/commands/prop_values.h
@@ -112,11 +112,8 @@ // Makes a full copy of this value class. virtual std::unique_ptr<PropValue> Clone() const = 0; - // Saves the value as a JSON object. - // If it fails, returns nullptr value and fills in the details for the - // failure in the |error| parameter. - virtual std::unique_ptr<base::Value> ToJson( - chromeos::ErrorPtr* error) const = 0; + // Saves the value as a JSON object. Never fails. + virtual std::unique_ptr<base::Value> ToJson() const = 0; // Parses a value from JSON. // If it fails, it returns false and provides additional information // via the |error| parameter. @@ -154,9 +151,8 @@ return std::move(derived); } - std::unique_ptr<base::Value> ToJson( - chromeos::ErrorPtr* error) const override { - return TypedValueToJson(value_, error); + std::unique_ptr<base::Value> ToJson() const override { + return TypedValueToJson(value_); } bool FromJson(const base::Value* value, chromeos::ErrorPtr* error) override {
diff --git a/libweave/src/commands/schema_utils.cc b/libweave/src/commands/schema_utils.cc index a171109..04b8bcb 100644 --- a/libweave/src/commands/schema_utils.cc +++ b/libweave/src/commands/schema_utils.cc
@@ -55,52 +55,40 @@ } // namespace // Specializations of TypedValueToJson<T>() for supported C++ types. -std::unique_ptr<base::FundamentalValue> TypedValueToJson( - bool value, - chromeos::ErrorPtr* error) { +std::unique_ptr<base::FundamentalValue> TypedValueToJson(bool value) { return std::unique_ptr<base::FundamentalValue>( new base::FundamentalValue(value)); } -std::unique_ptr<base::FundamentalValue> TypedValueToJson( - int value, - chromeos::ErrorPtr* error) { +std::unique_ptr<base::FundamentalValue> TypedValueToJson(int value) { return std::unique_ptr<base::FundamentalValue>( new base::FundamentalValue(value)); } -std::unique_ptr<base::FundamentalValue> TypedValueToJson( - double value, - chromeos::ErrorPtr* error) { +std::unique_ptr<base::FundamentalValue> TypedValueToJson(double value) { return std::unique_ptr<base::FundamentalValue>( new base::FundamentalValue(value)); } -std::unique_ptr<base::StringValue> TypedValueToJson(const std::string& value, - chromeos::ErrorPtr* error) { +std::unique_ptr<base::StringValue> TypedValueToJson(const std::string& value) { return std::unique_ptr<base::StringValue>(new base::StringValue(value)); } -std::unique_ptr<base::DictionaryValue> TypedValueToJson( - const ValueMap& value, - chromeos::ErrorPtr* error) { +std::unique_ptr<base::DictionaryValue> TypedValueToJson(const ValueMap& value) { std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); for (const auto& pair : value) { - auto prop_value = pair.second->ToJson(error); - if (!prop_value) - return nullptr; + auto prop_value = pair.second->ToJson(); + CHECK(prop_value); dict->SetWithoutPathExpansion(pair.first, prop_value.release()); } return dict; } -std::unique_ptr<base::ListValue> TypedValueToJson(const ValueVector& value, - chromeos::ErrorPtr* error) { +std::unique_ptr<base::ListValue> TypedValueToJson(const ValueVector& value) { std::unique_ptr<base::ListValue> list(new base::ListValue); for (const auto& item : value) { - auto json = item->ToJson(error); - if (!json) - return nullptr; + auto json = item->ToJson(); + CHECK(json); list->Append(json.release()); } return list; @@ -264,14 +252,14 @@ } std::string ToString(const ValueMap& obj) { - auto val = TypedValueToJson(obj, nullptr); + auto val = TypedValueToJson(obj); std::string str; base::JSONWriter::Write(*val, &str); return str; } std::string ToString(const ValueVector& arr) { - auto val = TypedValueToJson(arr, nullptr); + auto val = TypedValueToJson(arr); std::string str; base::JSONWriter::Write(*val, &str); return str;
diff --git a/libweave/src/commands/schema_utils.h b/libweave/src/commands/schema_utils.h index 6d1b342..ea1639f 100644 --- a/libweave/src/commands/schema_utils.h +++ b/libweave/src/commands/schema_utils.h
@@ -54,30 +54,19 @@ // A bunch of helper function to create base::Value for specific C++ classes, // including vectors of types. These are used in template classes below // to simplify specialization logic. -std::unique_ptr<base::FundamentalValue> TypedValueToJson( - bool value, - chromeos::ErrorPtr* error); -std::unique_ptr<base::FundamentalValue> TypedValueToJson( - int value, - chromeos::ErrorPtr* error); -std::unique_ptr<base::FundamentalValue> TypedValueToJson( - double value, - chromeos::ErrorPtr* error); -std::unique_ptr<base::StringValue> TypedValueToJson(const std::string& value, - chromeos::ErrorPtr* error); -std::unique_ptr<base::DictionaryValue> TypedValueToJson( - const ValueMap& value, - chromeos::ErrorPtr* error); -std::unique_ptr<base::ListValue> TypedValueToJson(const ValueVector& value, - chromeos::ErrorPtr* error); +std::unique_ptr<base::FundamentalValue> TypedValueToJson(bool value); +std::unique_ptr<base::FundamentalValue> TypedValueToJson(int value); +std::unique_ptr<base::FundamentalValue> TypedValueToJson(double value); +std::unique_ptr<base::StringValue> TypedValueToJson(const std::string& value); +std::unique_ptr<base::DictionaryValue> TypedValueToJson(const ValueMap& value); +std::unique_ptr<base::ListValue> TypedValueToJson(const ValueVector& value); template <typename T> -std::unique_ptr<base::ListValue> TypedValueToJson(const std::vector<T>& values, - chromeos::ErrorPtr* error) { +std::unique_ptr<base::ListValue> TypedValueToJson( + const std::vector<T>& values) { std::unique_ptr<base::ListValue> list(new base::ListValue); for (const auto& v : values) { - auto json = TypedValueToJson(v, error); - if (!json) - return nullptr; + auto json = TypedValueToJson(v); + CHECK(json); list->Append(json.release()); } return list;
diff --git a/libweave/src/commands/schema_utils_unittest.cc b/libweave/src/commands/schema_utils_unittest.cc index b3181df..6924d3b 100644 --- a/libweave/src/commands/schema_utils_unittest.cc +++ b/libweave/src/commands/schema_utils_unittest.cc
@@ -25,29 +25,29 @@ using chromeos::VariantDictionary; TEST(CommandSchemaUtils, TypedValueToJson_Scalar) { - EXPECT_JSON_EQ("true", *TypedValueToJson(true, nullptr)); - EXPECT_JSON_EQ("false", *TypedValueToJson(false, nullptr)); + EXPECT_JSON_EQ("true", *TypedValueToJson(true)); + EXPECT_JSON_EQ("false", *TypedValueToJson(false)); - EXPECT_JSON_EQ("0", *TypedValueToJson(0, nullptr)); - EXPECT_JSON_EQ("-10", *TypedValueToJson(-10, nullptr)); - EXPECT_JSON_EQ("20", *TypedValueToJson(20, nullptr)); + EXPECT_JSON_EQ("0", *TypedValueToJson(0)); + EXPECT_JSON_EQ("-10", *TypedValueToJson(-10)); + EXPECT_JSON_EQ("20", *TypedValueToJson(20)); - EXPECT_JSON_EQ("0.0", *TypedValueToJson(0.0, nullptr)); - EXPECT_JSON_EQ("1.2", *TypedValueToJson(1.2, nullptr)); + EXPECT_JSON_EQ("0.0", *TypedValueToJson(0.0)); + EXPECT_JSON_EQ("1.2", *TypedValueToJson(1.2)); - EXPECT_JSON_EQ("'abc'", *TypedValueToJson(std::string("abc"), nullptr)); + EXPECT_JSON_EQ("'abc'", *TypedValueToJson(std::string("abc"))); std::vector<bool> bool_array{true, false}; - EXPECT_JSON_EQ("[true,false]", *TypedValueToJson(bool_array, nullptr)); + EXPECT_JSON_EQ("[true,false]", *TypedValueToJson(bool_array)); std::vector<int> int_array{1, 2, 5}; - EXPECT_JSON_EQ("[1,2,5]", *TypedValueToJson(int_array, nullptr)); + EXPECT_JSON_EQ("[1,2,5]", *TypedValueToJson(int_array)); std::vector<double> dbl_array{1.1, 2.2}; - EXPECT_JSON_EQ("[1.1,2.2]", *TypedValueToJson(dbl_array, nullptr)); + EXPECT_JSON_EQ("[1.1,2.2]", *TypedValueToJson(dbl_array)); std::vector<std::string> str_array{"a", "bc"}; - EXPECT_JSON_EQ("['a','bc']", *TypedValueToJson(str_array, nullptr)); + EXPECT_JSON_EQ("['a','bc']", *TypedValueToJson(str_array)); } TEST(CommandSchemaUtils, TypedValueToJson_Object) { @@ -56,8 +56,7 @@ object.insert(std::make_pair("width", int_type.CreateValue(640, nullptr))); object.insert(std::make_pair("height", int_type.CreateValue(480, nullptr))); - EXPECT_JSON_EQ("{'height':480,'width':640}", - *TypedValueToJson(object, nullptr)); + EXPECT_JSON_EQ("{'height':480,'width':640}", *TypedValueToJson(object)); } TEST(CommandSchemaUtils, TypedValueToJson_Array) { @@ -66,7 +65,7 @@ arr.push_back(int_type.CreateValue(640, nullptr)); arr.push_back(int_type.CreateValue(480, nullptr)); - EXPECT_JSON_EQ("[640,480]", *TypedValueToJson(arr, nullptr)); + EXPECT_JSON_EQ("[640,480]", *TypedValueToJson(arr)); } TEST(CommandSchemaUtils, TypedValueFromJson_Bool) {
diff --git a/libweave/src/device_registration_info.cc b/libweave/src/device_registration_info.cc index e733d1b..e6d90bb 100644 --- a/libweave/src/device_registration_info.cc +++ b/libweave/src/device_registration_info.cc
@@ -398,9 +398,8 @@ return nullptr; std::unique_ptr<base::DictionaryValue> state = - state_manager_->GetStateValuesAsJson(error); - if (!state) - return nullptr; + state_manager_->GetStateValuesAsJson(); + CHECK(state); std::unique_ptr<base::DictionaryValue> resource{new base::DictionaryValue}; if (!config_->device_id().empty()) @@ -1040,10 +1039,8 @@ std::unique_ptr<base::DictionaryValue> changes{new base::DictionaryValue}; for (const auto& pair : state_change.changed_properties) { - auto value = pair.second->ToJson(nullptr); - if (!value) { - return; - } + auto value = pair.second->ToJson(); + CHECK(value); // The key in |pair.first| is the full property name in format // "package.property_name", so must use DictionaryValue::Set() instead of // DictionaryValue::SetWithoutPathExpansion to recreate the JSON
diff --git a/libweave/src/privet/cloud_delegate.cc b/libweave/src/privet/cloud_delegate.cc index 33d8a25..80bb052 100644 --- a/libweave/src/privet/cloud_delegate.cc +++ b/libweave/src/privet/cloud_delegate.cc
@@ -266,7 +266,7 @@ void OnStateChanged() { state_.Clear(); - auto state = state_manager_->GetStateValuesAsJson(nullptr); + auto state = state_manager_->GetStateValuesAsJson(); CHECK(state); state_.MergeDictionary(state.get()); NotifyOnStateChanged();
diff --git a/libweave/src/states/state_manager.cc b/libweave/src/states/state_manager.cc index 158d79c..850541d 100644 --- a/libweave/src/states/state_manager.cc +++ b/libweave/src/states/state_manager.cc
@@ -97,15 +97,12 @@ cb.Run(); } -std::unique_ptr<base::DictionaryValue> StateManager::GetStateValuesAsJson( - chromeos::ErrorPtr* error) const { +std::unique_ptr<base::DictionaryValue> StateManager::GetStateValuesAsJson() + const { std::unique_ptr<base::DictionaryValue> dict{new base::DictionaryValue}; for (const auto& pair : packages_) { - auto pkg_value = pair.second->GetValuesAsJson(error); - if (!pkg_value) { - dict.reset(); - break; - } + auto pkg_value = pair.second->GetValuesAsJson(); + CHECK(pkg_value); dict->SetWithoutPathExpansion(pair.first, pkg_value.release()); } return dict;
diff --git a/libweave/src/states/state_manager.h b/libweave/src/states/state_manager.h index 99f561d..8b22c2f 100644 --- a/libweave/src/states/state_manager.h +++ b/libweave/src/states/state_manager.h
@@ -41,8 +41,7 @@ void AddOnChangedCallback(const base::Closure& callback) override; bool SetProperties(const chromeos::VariantDictionary& property_set, chromeos::ErrorPtr* error) override; - std::unique_ptr<base::DictionaryValue> GetStateValuesAsJson( - chromeos::ErrorPtr* error) const override; + std::unique_ptr<base::DictionaryValue> GetStateValuesAsJson() const override; // Initializes the state manager and load device state fragments. // Called by Buffet daemon at startup.
diff --git a/libweave/src/states/state_manager_unittest.cc b/libweave/src/states/state_manager_unittest.cc index 60eafcd..15030eb 100644 --- a/libweave/src/states/state_manager_unittest.cc +++ b/libweave/src/states/state_manager_unittest.cc
@@ -103,7 +103,7 @@ 'target': '' } })"; - EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson()); } TEST_F(StateManagerTest, LoadStateDefinition) { @@ -128,7 +128,7 @@ 'target': '' } })"; - EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson()); } TEST_F(StateManagerTest, SetPropertyValue) { @@ -149,7 +149,7 @@ 'target': 'John Connor' } })"; - EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson()); } TEST_F(StateManagerTest, SetPropertyValue_Error_NoName) { @@ -224,7 +224,7 @@ 'target': '' } })"; - EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson()); } } // namespace weave
diff --git a/libweave/src/states/state_package.cc b/libweave/src/states/state_package.cc index 98f5b9a..b34fc39 100644 --- a/libweave/src/states/state_package.cc +++ b/libweave/src/states/state_package.cc
@@ -66,15 +66,11 @@ return true; } -std::unique_ptr<base::DictionaryValue> StatePackage::GetValuesAsJson( - chromeos::ErrorPtr* error) const { +std::unique_ptr<base::DictionaryValue> StatePackage::GetValuesAsJson() const { std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); for (const auto& pair : values_) { - auto value = pair.second->ToJson(error); - if (!value) { - dict.reset(); - break; - } + auto value = pair.second->ToJson(); + CHECK(value); dict->SetWithoutPathExpansion(pair.first, value.release()); } return dict;
diff --git a/libweave/src/states/state_package.h b/libweave/src/states/state_package.h index e4e9942..1fceb2e 100644 --- a/libweave/src/states/state_package.h +++ b/libweave/src/states/state_package.h
@@ -52,8 +52,7 @@ // "message": "Printer low on cyan ink" // } // } - std::unique_ptr<base::DictionaryValue> GetValuesAsJson( - chromeos::ErrorPtr* error) const; + std::unique_ptr<base::DictionaryValue> GetValuesAsJson() const; // Gets the value for a specific state property. |property_name| must not // include the package name as part of the property name.
diff --git a/libweave/src/states/state_package_unittest.cc b/libweave/src/states/state_package_unittest.cc index 6d14731..74075fa 100644 --- a/libweave/src/states/state_package_unittest.cc +++ b/libweave/src/states/state_package_unittest.cc
@@ -109,7 +109,7 @@ 'type': 'boolean' } })"; - EXPECT_JSON_EQ(expected, *GetTypes(package).ToJson(true, false, nullptr)); + EXPECT_JSON_EQ(expected, *GetTypes(package).ToJson(true, false)); expected = R"({ 'color': '', @@ -117,7 +117,7 @@ 'iso': 0, 'light': false })"; - EXPECT_JSON_EQ(expected, *package.GetValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *package.GetValuesAsJson()); } TEST(StatePackage, AddValuesFromJson_OnEmpty) { @@ -134,7 +134,7 @@ 'iso': 200, 'light': true })"; - EXPECT_JSON_EQ(expected, *package.GetValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *package.GetValuesAsJson()); } TEST_F(StatePackageTest, AddSchemaFromJson_AddMore) { @@ -171,7 +171,7 @@ 'type': 'boolean' } })"; - EXPECT_JSON_EQ(expected, *GetTypes(*package_).ToJson(true, false, nullptr)); + EXPECT_JSON_EQ(expected, *GetTypes(*package_).ToJson(true, false)); expected = R"({ 'brightness': '', @@ -183,7 +183,7 @@ 'iso': 200, 'light': true })"; - EXPECT_JSON_EQ(expected, *package_->GetValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *package_->GetValuesAsJson()); } TEST_F(StatePackageTest, AddValuesFromJson_AddMore) { @@ -202,7 +202,7 @@ 'iso': 200, 'light': true })"; - EXPECT_JSON_EQ(expected, *package_->GetValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *package_->GetValuesAsJson()); } TEST_F(StatePackageTest, AddSchemaFromJson_Error_Redefined) { @@ -281,7 +281,7 @@ 'iso': 200, 'light': true })"; - EXPECT_JSON_EQ(expected, *package_->GetValuesAsJson(nullptr)); + EXPECT_JSON_EQ(expected, *package_->GetValuesAsJson()); } TEST_F(StatePackageTest, SetPropertyValue_Error_TypeMismatch) {