Index: extensions/browser/api/declarative/declarative_api.cc |
diff --git a/extensions/browser/api/declarative/declarative_api.cc b/extensions/browser/api/declarative/declarative_api.cc |
index bac1bcc46b6d9343cef3dc24837dac7c55ee78f7..183ca3e9cd80a5743390e74b6fa5d254edc2444e 100644 |
--- a/extensions/browser/api/declarative/declarative_api.cc |
+++ b/extensions/browser/api/declarative/declarative_api.cc |
@@ -171,10 +171,20 @@ bool EventsEventAddRulesFunction::RunAsyncOnCorrectThread() { |
scoped_ptr<AddRules::Params> params(AddRules::Params::Create(*args_)); |
EXTENSION_FUNCTION_VALIDATE(params.get()); |
- error_ = rules_registry_->AddRules(extension_id(), params->rules); |
+ // TODO(devlin): Remove the dependency on linked_ptr here. |
+ std::vector<linked_ptr<api::events::Rule>> linked_rules; |
+ for (api::events::Rule& rule : params->rules) { |
+ linked_rules.push_back( |
+ make_linked_ptr(new api::events::Rule(std::move(rule)))); |
+ } |
+ error_ = rules_registry_->AddRules(extension_id(), linked_rules); |
- if (error_.empty()) |
- results_ = AddRules::Results::Create(params->rules); |
+ if (error_.empty()) { |
+ scoped_ptr<base::ListValue> rules_value(new base::ListValue()); |
+ for (const auto& rule : linked_rules) |
+ rules_value->Append(rule->ToValue()); |
+ SetResult(std::move(rules_value)); |
+ } |
return error_.empty(); |
} |
@@ -205,7 +215,10 @@ bool EventsEventGetRulesFunction::RunAsyncOnCorrectThread() { |
rules_registry_->GetAllRules(extension_id(), &rules); |
} |
- results_ = GetRules::Results::Create(rules); |
+ scoped_ptr<base::ListValue> rules_value(new base::ListValue()); |
+ for (const auto& rule : rules) |
+ rules_value->Append(rule->ToValue()); |
+ SetResult(std::move(rules_value)); |
return true; |
} |