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

Side by Side Diff: chrome/browser/extensions/extension.cc

Issue 31014: Port DictionaryValue to use string16 instead of wstring. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/dom_ui/new_tab_ui.cc ('k') | chrome/browser/extensions/extension_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/extension.h" 5 #include "chrome/browser/extensions/extension.h"
6 6
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "net/base/net_util.h" 10 #include "net/base/net_util.h"
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 path_ = FilePath(path_str); 156 path_ = FilePath(path_str);
157 #else 157 #else
158 path_ = path; 158 path_ = path;
159 #endif 159 #endif
160 } 160 }
161 161
162 bool Extension::InitFromValue(const DictionaryValue& source, 162 bool Extension::InitFromValue(const DictionaryValue& source,
163 std::string* error) { 163 std::string* error) {
164 // Check format version. 164 // Check format version.
165 int format_version = 0; 165 int format_version = 0;
166 if (!source.GetInteger(kFormatVersionKey, &format_version) || 166 if (!source.GetInteger(WideToUTF16Hack(kFormatVersionKey), &format_version) ||
167 static_cast<uint32>(format_version) != kExpectedFormatVersion) { 167 static_cast<uint32>(format_version) != kExpectedFormatVersion) {
168 *error = kInvalidFormatVersionError; 168 *error = kInvalidFormatVersionError;
169 return false; 169 return false;
170 } 170 }
171 171
172 // Initialize id. 172 // Initialize id.
173 if (!source.GetString(kIdKey, &id_)) { 173 if (!source.GetString(WideToUTF16Hack(kIdKey), &id_)) {
174 *error = kInvalidIdError; 174 *error = kInvalidIdError;
175 return false; 175 return false;
176 } 176 }
177 177
178 // Normalize the string to lowercase, so it can be used as an URL component 178 // Normalize the string to lowercase, so it can be used as an URL component
179 // (where GURL will lowercase it). 179 // (where GURL will lowercase it).
180 StringToLowerASCII(&id_); 180 StringToLowerASCII(&id_);
181 181
182 // Verify that the id is legal. The id is a hex string of the SHA-1 hash of 182 // Verify that the id is legal. The id is a hex string of the SHA-1 hash of
183 // the public key. 183 // the public key.
184 std::vector<uint8> id_bytes; 184 std::vector<uint8> id_bytes;
185 if (!HexStringToBytes(id_, &id_bytes) || id_bytes.size() != kIdSize) { 185 if (!HexStringToBytes(id_, &id_bytes) || id_bytes.size() != kIdSize) {
186 *error = kInvalidIdError; 186 *error = kInvalidIdError;
187 return false; 187 return false;
188 } 188 }
189 189
190 // Initialize URL. 190 // Initialize URL.
191 extension_url_ = GURL(std::string(chrome::kExtensionScheme) + 191 extension_url_ = GURL(std::string(chrome::kExtensionScheme) +
192 chrome::kStandardSchemeSeparator + id_ + "/"); 192 chrome::kStandardSchemeSeparator + id_ + "/");
193 193
194 // Initialize version. 194 // Initialize version.
195 std::string version_str; 195 std::string version_str;
196 if (!source.GetString(kVersionKey, &version_str)) { 196 if (!source.GetString(WideToUTF16Hack(kVersionKey), &version_str)) {
197 *error = kInvalidVersionError; 197 *error = kInvalidVersionError;
198 return false; 198 return false;
199 } 199 }
200 version_.reset(Version::GetVersionFromString(version_str)); 200 version_.reset(Version::GetVersionFromString(version_str));
201 if (!version_.get()) { 201 if (!version_.get()) {
202 *error = kInvalidVersionError; 202 *error = kInvalidVersionError;
203 return false; 203 return false;
204 } 204 }
205 205
206 // Initialize name. 206 // Initialize name.
207 if (!source.GetString(kNameKey, &name_)) { 207 if (!source.GetString(WideToUTF16Hack(kNameKey), &name_)) {
208 *error = kInvalidNameError; 208 *error = kInvalidNameError;
209 return false; 209 return false;
210 } 210 }
211 211
212 // Initialize description (optional). 212 // Initialize description (optional).
213 if (source.HasKey(kDescriptionKey)) { 213 if (source.HasKey(WideToUTF16Hack(kDescriptionKey))) {
214 if (!source.GetString(kDescriptionKey, &description_)) { 214 if (!source.GetString(WideToUTF16Hack(kDescriptionKey), &description_)) {
215 *error = kInvalidDescriptionError; 215 *error = kInvalidDescriptionError;
216 return false; 216 return false;
217 } 217 }
218 } 218 }
219 219
220 // Initialize zip hash (only present in zip) 220 // Initialize zip hash (only present in zip)
221 // There's no need to verify it at this point. If it's in a bogus format 221 // There's no need to verify it at this point. If it's in a bogus format
222 // it won't pass the hash verify step. 222 // it won't pass the hash verify step.
223 if (source.HasKey(kZipHashKey)) { 223 if (source.HasKey(WideToUTF16Hack(kZipHashKey))) {
224 if (!source.GetString(kZipHashKey, &zip_hash_)) { 224 if (!source.GetString(WideToUTF16Hack(kZipHashKey), &zip_hash_)) {
225 *error = kInvalidZipHashError; 225 *error = kInvalidZipHashError;
226 return false; 226 return false;
227 } 227 }
228 } 228 }
229 229
230 // Initialize plugins dir (optional). 230 // Initialize plugins dir (optional).
231 if (source.HasKey(kPluginsDirKey)) { 231 if (source.HasKey(WideToUTF16Hack(kPluginsDirKey))) {
232 std::string plugins_dir; 232 std::string plugins_dir;
233 if (!source.GetString(kPluginsDirKey, &plugins_dir)) { 233 if (!source.GetString(WideToUTF16Hack(kPluginsDirKey), &plugins_dir)) {
234 *error = kInvalidPluginsDirError; 234 *error = kInvalidPluginsDirError;
235 return false; 235 return false;
236 } 236 }
237 plugins_dir_ = path_.AppendASCII(plugins_dir); 237 plugins_dir_ = path_.AppendASCII(plugins_dir);
238 } 238 }
239 239
240 // Initialize content scripts (optional). 240 // Initialize content scripts (optional).
241 if (source.HasKey(kContentScriptsKey)) { 241 if (source.HasKey(WideToUTF16Hack(kContentScriptsKey))) {
242 ListValue* list_value; 242 ListValue* list_value;
243 if (!source.GetList(kContentScriptsKey, &list_value)) { 243 if (!source.GetList(WideToUTF16Hack(kContentScriptsKey), &list_value)) {
244 *error = kInvalidContentScriptsListError; 244 *error = kInvalidContentScriptsListError;
245 return false; 245 return false;
246 } 246 }
247 247
248 for (size_t i = 0; i < list_value->GetSize(); ++i) { 248 for (size_t i = 0; i < list_value->GetSize(); ++i) {
249 DictionaryValue* content_script; 249 DictionaryValue* content_script;
250 if (!list_value->GetDictionary(i, &content_script)) { 250 if (!list_value->GetDictionary(i, &content_script)) {
251 *error = FormatErrorMessage(kInvalidContentScriptError, IntToString(i)); 251 *error = FormatErrorMessage(kInvalidContentScriptError, IntToString(i));
252 return false; 252 return false;
253 } 253 }
254 254
255 ListValue* matches; 255 ListValue* matches;
256 ListValue* js; 256 ListValue* js;
257 257
258 if (!content_script->GetList(kMatchesKey, &matches)) { 258 if (!content_script->GetList(WideToUTF16Hack(kMatchesKey), &matches)) {
259 *error = FormatErrorMessage(kInvalidMatchesError, IntToString(i)); 259 *error = FormatErrorMessage(kInvalidMatchesError, IntToString(i));
260 return false; 260 return false;
261 } 261 }
262 262
263 if (!content_script->GetList(kJsKey, &js)) { 263 if (!content_script->GetList(WideToUTF16Hack(kJsKey), &js)) {
264 *error = FormatErrorMessage(kInvalidJsListError, IntToString(i)); 264 *error = FormatErrorMessage(kInvalidJsListError, IntToString(i));
265 return false; 265 return false;
266 } 266 }
267 267
268 if (matches->GetSize() == 0) { 268 if (matches->GetSize() == 0) {
269 *error = FormatErrorMessage(kInvalidMatchCountError, IntToString(i)); 269 *error = FormatErrorMessage(kInvalidMatchCountError, IntToString(i));
270 return false; 270 return false;
271 } 271 }
272 272
273 // NOTE: Only one file is supported right now. 273 // NOTE: Only one file is supported right now.
274 if (js->GetSize() != 1) { 274 if (js->GetSize() != 1) {
275 *error = FormatErrorMessage(kInvalidJsCountError, IntToString(i)); 275 *error = FormatErrorMessage(kInvalidJsCountError, IntToString(i));
276 return false; 276 return false;
277 } 277 }
278 278
279 UserScript script; 279 UserScript script;
280 if (content_script->HasKey(kRunAtKey)) { 280 if (content_script->HasKey(WideToUTF16Hack(kRunAtKey))) {
281 std::string run_location; 281 std::string run_location;
282 if (!content_script->GetString(kRunAtKey, &run_location)) { 282 if (!content_script->GetString(WideToUTF16Hack(kRunAtKey),
283 &run_location)) {
283 *error = FormatErrorMessage(kInvalidRunAtError, IntToString(i)); 284 *error = FormatErrorMessage(kInvalidRunAtError, IntToString(i));
284 return false; 285 return false;
285 } 286 }
286 287
287 if (run_location == kRunAtDocumentStartValue) { 288 if (run_location == kRunAtDocumentStartValue) {
288 script.set_run_location(UserScript::DOCUMENT_START); 289 script.set_run_location(UserScript::DOCUMENT_START);
289 } else if (run_location == kRunAtDocumentEndValue) { 290 } else if (run_location == kRunAtDocumentEndValue) {
290 script.set_run_location(UserScript::DOCUMENT_END); 291 script.set_run_location(UserScript::DOCUMENT_END);
291 } else { 292 } else {
292 *error = FormatErrorMessage(kInvalidRunAtError, IntToString(i)); 293 *error = FormatErrorMessage(kInvalidRunAtError, IntToString(i));
(...skipping 28 matching lines...) Expand all
321 } 322 }
322 script.set_path(Extension::GetResourcePath(path(), file)); 323 script.set_path(Extension::GetResourcePath(path(), file));
323 script.set_url(Extension::GetResourceURL(url(), file)); 324 script.set_url(Extension::GetResourceURL(url(), file));
324 325
325 content_scripts_.push_back(script); 326 content_scripts_.push_back(script);
326 } 327 }
327 } 328 }
328 329
329 return true; 330 return true;
330 } 331 }
331
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/new_tab_ui.cc ('k') | chrome/browser/extensions/extension_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698