Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6390)

Unified Diff: chrome/browser/extensions/api/declarative/declarative_api.cc

Issue 9315010: RulesRegistry for declarative APIs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/declarative/declarative_api.cc
diff --git a/chrome/browser/extensions/api/declarative/declarative_api.cc b/chrome/browser/extensions/api/declarative/declarative_api.cc
index e3806675770561476bd146bfdff8f2956178916f..956dd5f289ea38d6acb75ade469a46265d26aed2 100644
--- a/chrome/browser/extensions/api/declarative/declarative_api.cc
+++ b/chrome/browser/extensions/api/declarative/declarative_api.cc
@@ -5,29 +5,95 @@
#include "chrome/browser/extensions/api/declarative/declarative_api.h"
#include "base/values.h"
+#include "chrome/browser/extensions/api/declarative/rules_registry.h"
+#include "chrome/browser/extensions/api/declarative/rules_registry_service.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/profiles/profile.h"
namespace extensions {
bool AddRulesFunction::RunImpl() {
- // LOG(ERROR) << "AddRulesFunction called";
+ std::string event_name;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &event_name));
ListValue* rules_list = NULL;
EXTENSION_FUNCTION_VALIDATE(args_->GetList(1, &rules_list));
- // TODO(battre): Generate unique IDs and priorities here.
+ std::vector<DictionaryValue*> rules;
+ for (ListValue::iterator i = rules_list->begin();
+ i != rules_list->end();
+ ++i) {
+ DictionaryValue* rule;
+ EXTENSION_FUNCTION_VALIDATE((*i)->GetAsDictionary(&rule));
+ rules.push_back(rule);
+ }
+
+ RulesRegistryService* rules_registry =
+ profile()->GetExtensionService()->GetRulesRegistryService();
+
+ if (!rules_registry->AddRules(event_name, extension_id(), rules, &error_))
+ return false;
result_.reset(rules_list->DeepCopy());
return true;
}
bool RemoveRulesFunction::RunImpl() {
- // LOG(ERROR) << "RemoveRulesFunction called";
+ std::string event_name;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &event_name));
+
+ ListValue* rule_identifiers_list = NULL;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetList(1, &rule_identifiers_list));
+
+ std::vector<std::string> rule_identifiers;
+ for (ListValue::iterator i = rule_identifiers_list->begin();
+ i != rule_identifiers_list->end();
+ ++i) {
+ std::string rule_id;
+ EXTENSION_FUNCTION_VALIDATE((*i)->GetAsString(&rule_id));
+ rule_identifiers.push_back(rule_id);
+ }
+
+ RulesRegistryService* rules_registry =
+ profile()->GetExtensionService()->GetRulesRegistryService();
+
+ if (!rules_registry->RemoveRules(event_name, extension_id(), rule_identifiers,
+ &error_))
+ return false;
+
return true;
}
bool GetRulesFunction::RunImpl() {
- // LOG(ERROR) << "GetRulesFunction called";
- result_.reset(new ListValue());
+ std::string event_name;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &event_name));
+
+ ListValue* rule_identifiers_list = NULL;
+ EXTENSION_FUNCTION_VALIDATE(args_->GetList(1, &rule_identifiers_list));
+
+ std::vector<std::string> rule_identifiers;
+ for (ListValue::iterator i = rule_identifiers_list->begin();
+ i != rule_identifiers_list->end();
+ ++i) {
+ std::string rule_id;
+ EXTENSION_FUNCTION_VALIDATE((*i)->GetAsString(&rule_id));
+ rule_identifiers.push_back(rule_id);
+ }
+
+ RulesRegistryService* rules_registry =
+ profile()->GetExtensionService()->GetRulesRegistryService();
+
+ typedef std::vector<DictionaryValue*> RulesList;
+
+ RulesList rules;
+ rules_registry->GetRules(
+ event_name, extension_id(), rule_identifiers, &rules);
+
+ scoped_ptr<ListValue> result(new ListValue);
+ for (RulesList::iterator i = rules.begin(); i != rules.end(); ++i)
+ result->Append(*i);
+
+ result_.reset(result.release());
return true;
}

Powered by Google App Engine
This is Rietveld 408576698