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

Unified Diff: chrome/browser/extensions/menu_manager.cc

Issue 10809094: Context Menus now uses the JSON Schema Compiler. (Closed) Base URL: http://git.chromium.org/chromium/src.git@json_functions_as_properties
Patch Set: renamed unittest in url_pattern_set_unittest Created 8 years, 4 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/menu_manager.cc
diff --git a/chrome/browser/extensions/menu_manager.cc b/chrome/browser/extensions/menu_manager.cc
index 92154f981e8a0f222515f477b05df60376a12daa..4bace409825e1d6b9f13e3d1612e2f70aa62c5da 100644
--- a/chrome/browser/extensions/menu_manager.cc
+++ b/chrome/browser/extensions/menu_manager.cc
@@ -203,14 +203,14 @@ MenuItem* MenuItem::Populate(const std::string& extension_id,
if (!value.GetString(kStringUIDKey, &id.string_uid))
return NULL;
int type_int;
- Type type;
+ Type type = NORMAL;
if (!value.GetInteger(kTypeKey, &type_int))
return NULL;
type = static_cast<Type>(type_int);
std::string title;
if (type != SEPARATOR && !value.GetString(kTitleKey, &title))
return NULL;
- bool checked;
+ bool checked = false;
if ((type == CHECKBOX || type == RADIO) &&
!value.GetBoolean(kCheckedKey, &checked)) {
return NULL;
@@ -228,9 +228,38 @@ MenuItem* MenuItem::Populate(const std::string& extension_id,
scoped_ptr<MenuItem> result(new MenuItem(
id, title, checked, enabled, type, contexts));
- if (!result->PopulateURLPatterns(
- value, kDocumentURLPatternsKey, kTargetURLPatternsKey, error))
+ std::vector<std::string> document_url_patterns;
+ if (value.HasKey(kDocumentURLPatternsKey)) {
not at google - send to devlin 2012/08/07 02:00:11 code is basically repeated. Could you pull this ou
chebert 2012/08/13 22:41:52 Done.
+ const ListValue* list = NULL;
+ if (!value.GetList(kDocumentURLPatternsKey, &list))
+ return NULL;
+
+ for (size_t i = 0; i < list->GetSize(); ++i) {
+ std::string pattern;
+ if (!list->GetString(i, &pattern))
+ return NULL;
+ document_url_patterns.push_back(pattern);
+ }
+ }
+
+ std::vector<std::string> target_url_patterns;
+ if (value.HasKey(kTargetURLPatternsKey)) {
+ const ListValue* list = NULL;
+ if (!value.GetList(kTargetURLPatternsKey, &list))
+ return NULL;
+
+ for (size_t i = 0; i < list->GetSize(); ++i) {
+ std::string pattern;
+ if (!list->GetString(i, &pattern))
+ return NULL;
+ target_url_patterns.push_back(pattern);
+ }
+ }
+ if (!result->PopulateURLPatterns(&document_url_patterns,
+ &target_url_patterns,
+ error)) {
return NULL;
+ }
// parent_id is filled in from the value, but it might not be valid. It's left
// to be validated upon being added (via AddChildItem) to the menu manager.
@@ -243,25 +272,19 @@ MenuItem* MenuItem::Populate(const std::string& extension_id,
return result.release();
}
-bool MenuItem::PopulateURLPatterns(const DictionaryValue& properties,
- const char* document_url_patterns_key,
- const char* target_url_patterns_key,
- std::string* error) {
- if (properties.HasKey(document_url_patterns_key)) {
- const ListValue* list = NULL;
- if (!properties.GetList(document_url_patterns_key, &list))
- return false;
+bool MenuItem::PopulateURLPatterns(
+ std::vector<std::string>* document_url_patterns,
+ std::vector<std::string>* target_url_patterns,
+ std::string* error) {
+ if (document_url_patterns) {
if (!document_url_patterns_.Populate(
- *list, URLPattern::SCHEME_ALL, true, error)) {
+ *document_url_patterns, URLPattern::SCHEME_ALL, true, error)) {
return false;
}
}
- if (properties.HasKey(target_url_patterns_key)) {
- const ListValue* list = NULL;
- if (!properties.GetList(target_url_patterns_key, &list))
- return false;
+ if (target_url_patterns) {
if (!target_url_patterns_.Populate(
- *list, URLPattern::SCHEME_ALL, true, error)) {
+ *target_url_patterns, URLPattern::SCHEME_ALL, true, error)) {
return false;
}
}

Powered by Google App Engine
This is Rietveld 408576698