Index: chrome/common/extensions/extension.cc |
=================================================================== |
--- chrome/common/extensions/extension.cc (revision 80872) |
+++ chrome/common/extensions/extension.cc (working copy) |
@@ -1618,14 +1618,14 @@ |
return false; |
} |
- DictionaryValue* theme_value; |
+ DictionaryValue* theme_value = NULL; |
if (!source.GetDictionary(keys::kTheme, &theme_value)) { |
*error = errors::kInvalidTheme; |
return false; |
} |
is_theme_ = true; |
- DictionaryValue* images_value; |
+ DictionaryValue* images_value = NULL; |
if (theme_value->GetDictionary(keys::kThemeImages, &images_value)) { |
// Validate that the images are all strings |
for (DictionaryValue::key_iterator iter = images_value->begin_keys(); |
@@ -1639,15 +1639,15 @@ |
theme_images_.reset(images_value->DeepCopy()); |
} |
- DictionaryValue* colors_value; |
+ DictionaryValue* colors_value = NULL; |
if (theme_value->GetDictionary(keys::kThemeColors, &colors_value)) { |
// Validate that the colors are RGB or RGBA lists |
for (DictionaryValue::key_iterator iter = colors_value->begin_keys(); |
iter != colors_value->end_keys(); ++iter) { |
- ListValue* color_list; |
- double alpha; |
- int alpha_int; |
- int color; |
+ ListValue* color_list = NULL; |
+ double alpha = 0.0; |
+ int alpha_int = 0; |
+ int color = 0; |
// The color must be a list |
if (!colors_value->GetListWithoutPathExpansion(*iter, &color_list) || |
// And either 3 items (RGB) or 4 (RGBA) |
@@ -1667,14 +1667,14 @@ |
theme_colors_.reset(colors_value->DeepCopy()); |
} |
- DictionaryValue* tints_value; |
+ DictionaryValue* tints_value = NULL; |
if (theme_value->GetDictionary(keys::kThemeTints, &tints_value)) { |
// Validate that the tints are all reals. |
for (DictionaryValue::key_iterator iter = tints_value->begin_keys(); |
iter != tints_value->end_keys(); ++iter) { |
- ListValue* tint_list; |
- double v; |
- int vi; |
+ ListValue* tint_list = NULL; |
+ double v = 0.0; |
+ int vi = 0; |
if (!tints_value->GetListWithoutPathExpansion(*iter, &tint_list) || |
tint_list->GetSize() != 3 || |
!(tint_list->GetDouble(0, &v) || tint_list->GetInteger(0, &vi)) || |
@@ -1687,7 +1687,7 @@ |
theme_tints_.reset(tints_value->DeepCopy()); |
} |
- DictionaryValue* display_properties_value; |
+ DictionaryValue* display_properties_value = NULL; |
if (theme_value->GetDictionary(keys::kThemeDisplayProperties, |
&display_properties_value)) { |
theme_display_properties_.reset( |
@@ -1699,7 +1699,7 @@ |
// Initialize plugins (optional). |
if (source.HasKey(keys::kPlugins)) { |
- ListValue* list_value; |
+ ListValue* list_value = NULL; |
if (!source.GetList(keys::kPlugins, &list_value)) { |
*error = errors::kInvalidPlugins; |
return false; |
@@ -1713,7 +1713,7 @@ |
#endif |
for (size_t i = 0; i < list_value->GetSize(); ++i) { |
- DictionaryValue* plugin_value; |
+ DictionaryValue* plugin_value = NULL; |
std::string path_str; |
bool is_public = false; |
@@ -1744,6 +1744,45 @@ |
} |
} |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableExperimentalExtensionApis) && |
+ source.HasKey(keys::kNaClModules)) { |
+ ListValue* list_value = NULL; |
+ if (!source.GetList(keys::kNaClModules, &list_value)) { |
+ *error = errors::kInvalidNaClModules; |
+ return false; |
+ } |
+ |
+ for (size_t i = 0; i < list_value->GetSize(); ++i) { |
+ DictionaryValue* module_value = NULL; |
+ std::string path_str; |
+ std::string mime_type; |
+ |
+ if (!list_value->GetDictionary(i, &module_value)) { |
+ *error = errors::kInvalidNaClModules; |
+ return false; |
+ } |
+ |
+ // Get nacl_modules[i].path. |
+ if (!module_value->GetString(keys::kNaClModulesPath, &path_str)) { |
+ *error = ExtensionErrorUtils::FormatErrorMessage( |
+ errors::kInvalidNaClModulesPath, base::IntToString(i)); |
+ return false; |
+ } |
+ |
+ // Get nacl_modules[i].mime_type. |
+ if (!module_value->GetString(keys::kNaClModulesMIMEType, &mime_type)) { |
+ *error = ExtensionErrorUtils::FormatErrorMessage( |
+ errors::kInvalidNaClModulesMIMEType, base::IntToString(i)); |
+ return false; |
+ } |
+ |
+ nacl_modules_.push_back(NaClModuleInfo()); |
+ nacl_modules_.back().path = path().AppendASCII(path_str); |
+ nacl_modules_.back().mime_type = mime_type; |
+ } |
+ } |
+ |
// Initialize background url (optional). |
if (source.HasKey(keys::kBackground)) { |
std::string background_str; |
@@ -1760,7 +1799,7 @@ |
if (CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kEnableExperimentalExtensionApis) && |
source.HasKey(keys::kToolstrips)) { |
- ListValue* list_value; |
+ ListValue* list_value = NULL; |
if (!source.GetList(keys::kToolstrips, &list_value)) { |
*error = errors::kInvalidToolstrips; |
return false; |
@@ -1768,7 +1807,7 @@ |
for (size_t i = 0; i < list_value->GetSize(); ++i) { |
GURL toolstrip; |
- DictionaryValue* toolstrip_value; |
+ DictionaryValue* toolstrip_value = NULL; |
std::string toolstrip_path; |
if (list_value->GetString(i, &toolstrip_path)) { |
// Support a simple URL value for backwards compatibility. |
@@ -1799,7 +1838,7 @@ |
} |
for (size_t i = 0; i < list_value->GetSize(); ++i) { |
- DictionaryValue* content_script; |
+ DictionaryValue* content_script = NULL; |
if (!list_value->GetDictionary(i, &content_script)) { |
*error = ExtensionErrorUtils::FormatErrorMessage( |
errors::kInvalidContentScript, base::IntToString(i)); |
@@ -1822,7 +1861,7 @@ |
DictionaryValue* page_action_value = NULL; |
if (source.HasKey(keys::kPageActions)) { |
- ListValue* list_value; |
+ ListValue* list_value = NULL; |
if (!source.GetList(keys::kPageActions, &list_value)) { |
*error = errors::kInvalidPageActionsList; |
return false; |
@@ -1859,7 +1898,7 @@ |
// Initialize browser action (optional). |
if (source.HasKey(keys::kBrowserAction)) { |
- DictionaryValue* browser_action_value; |
+ DictionaryValue* browser_action_value = NULL; |
if (!source.GetDictionary(keys::kBrowserAction, &browser_action_value)) { |
*error = errors::kInvalidBrowserAction; |
return false; |
@@ -2018,7 +2057,7 @@ |
// Chrome URL overrides (optional) |
if (source.HasKey(keys::kChromeURLOverrides)) { |
- DictionaryValue* overrides; |
+ DictionaryValue* overrides = NULL; |
if (!source.GetDictionary(keys::kChromeURLOverrides, &overrides)) { |
*error = errors::kInvalidChromeURLOverrides; |
return false; |
@@ -2078,7 +2117,7 @@ |
// Initialize sidebar action (optional). |
if (source.HasKey(keys::kSidebar)) { |
- DictionaryValue* sidebar_value; |
+ DictionaryValue* sidebar_value = NULL; |
if (!source.GetDictionary(keys::kSidebar, &sidebar_value)) { |
*error = errors::kInvalidSidebar; |
return false; |
@@ -2094,21 +2133,21 @@ |
// Initialize text-to-speech voices (optional). |
if (source.HasKey(keys::kTts)) { |
- DictionaryValue* tts_dict; |
+ DictionaryValue* tts_dict = NULL; |
if (!source.GetDictionary(keys::kTts, &tts_dict)) { |
*error = errors::kInvalidTts; |
return false; |
} |
if (tts_dict->HasKey(keys::kTtsVoices)) { |
- ListValue* tts_voices; |
+ ListValue* tts_voices = NULL; |
if (!tts_dict->GetList(keys::kTtsVoices, &tts_voices)) { |
*error = errors::kInvalidTtsVoices; |
return false; |
} |
for (size_t i = 0; i < tts_voices->GetSize(); i++) { |
- DictionaryValue* one_tts_voice; |
+ DictionaryValue* one_tts_voice = NULL; |
if (!tts_voices->GetDictionary(i, &one_tts_voice)) { |
*error = errors::kInvalidTtsVoices; |
return false; |