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

Side by Side Diff: extensions/common/extension.cc

Issue 481433005: Extensions: Move id_util functions to crx_file component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: revert last patchset. function returns Extension* and can't use an assert. Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « extensions/common/extension.h ('k') | extensions/common/extension_resource_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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "extensions/common/extension.h" 5 #include "extensions/common/extension.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
11 #include "base/i18n/rtl.h" 11 #include "base/i18n/rtl.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/memory/singleton.h" 13 #include "base/memory/singleton.h"
14 #include "base/stl_util.h" 14 #include "base/stl_util.h"
15 #include "base/strings/string16.h" 15 #include "base/strings/string16.h"
16 #include "base/strings/string_number_conversions.h" 16 #include "base/strings/string_number_conversions.h"
17 #include "base/strings/string_piece.h" 17 #include "base/strings/string_piece.h"
18 #include "base/strings/string_util.h" 18 #include "base/strings/string_util.h"
19 #include "base/strings/stringprintf.h" 19 #include "base/strings/stringprintf.h"
20 #include "base/strings/utf_string_conversions.h" 20 #include "base/strings/utf_string_conversions.h"
21 #include "base/values.h" 21 #include "base/values.h"
22 #include "base/version.h" 22 #include "base/version.h"
23 #include "components/crx_file/id_util.h"
23 #include "content/public/common/url_constants.h" 24 #include "content/public/common/url_constants.h"
24 #include "extensions/common/constants.h" 25 #include "extensions/common/constants.h"
25 #include "extensions/common/error_utils.h" 26 #include "extensions/common/error_utils.h"
26 #include "extensions/common/id_util.h"
27 #include "extensions/common/manifest.h" 27 #include "extensions/common/manifest.h"
28 #include "extensions/common/manifest_constants.h" 28 #include "extensions/common/manifest_constants.h"
29 #include "extensions/common/manifest_handler.h" 29 #include "extensions/common/manifest_handler.h"
30 #include "extensions/common/manifest_handlers/permissions_parser.h" 30 #include "extensions/common/manifest_handlers/permissions_parser.h"
31 #include "extensions/common/permissions/permission_set.h" 31 #include "extensions/common/permissions/permission_set.h"
32 #include "extensions/common/permissions/permissions_data.h" 32 #include "extensions/common/permissions/permissions_data.h"
33 #include "extensions/common/permissions/permissions_info.h" 33 #include "extensions/common/permissions/permissions_info.h"
34 #include "extensions/common/switches.h" 34 #include "extensions/common/switches.h"
35 #include "extensions/common/url_pattern.h" 35 #include "extensions/common/url_pattern.h"
36 #include "net/base/filename_util.h" 36 #include "net/base/filename_util.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 extension->install_warnings_.swap(install_warnings); 126 extension->install_warnings_.swap(install_warnings);
127 127
128 if (!extension->InitFromValue(flags, &error)) { 128 if (!extension->InitFromValue(flags, &error)) {
129 *utf8_error = base::UTF16ToUTF8(error); 129 *utf8_error = base::UTF16ToUTF8(error);
130 return NULL; 130 return NULL;
131 } 131 }
132 132
133 return extension; 133 return extension;
134 } 134 }
135 135
136 // static
137 bool Extension::IdIsValid(const std::string& id) {
138 // Verify that the id is legal.
139 if (id.size() != (id_util::kIdSize * 2))
140 return false;
141
142 // We only support lowercase IDs, because IDs can be used as URL components
143 // (where GURL will lowercase it).
144 std::string temp = base::StringToLowerASCII(id);
145 for (size_t i = 0; i < temp.size(); i++)
146 if (temp[i] < 'a' || temp[i] > 'p')
147 return false;
148
149 return true;
150 }
151
152 Manifest::Type Extension::GetType() const { 136 Manifest::Type Extension::GetType() const {
153 return converted_from_user_script() ? 137 return converted_from_user_script() ?
154 Manifest::TYPE_USER_SCRIPT : manifest_->type(); 138 Manifest::TYPE_USER_SCRIPT : manifest_->type();
155 } 139 }
156 140
157 // static 141 // static
158 GURL Extension::GetResourceURL(const GURL& extension_url, 142 GURL Extension::GetResourceURL(const GURL& extension_url,
159 const std::string& relative_path) { 143 const std::string& relative_path) {
160 DCHECK(extension_url.SchemeIs(extensions::kExtensionScheme)); 144 DCHECK(extension_url.SchemeIs(extensions::kExtensionScheme));
161 DCHECK_EQ("/", extension_url.path()); 145 DCHECK_EQ("/", extension_url.path());
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 } 447 }
464 448
465 if (manifest->HasKey(keys::kPublicKey)) { 449 if (manifest->HasKey(keys::kPublicKey)) {
466 std::string public_key; 450 std::string public_key;
467 std::string public_key_bytes; 451 std::string public_key_bytes;
468 if (!manifest->GetString(keys::kPublicKey, &public_key) || 452 if (!manifest->GetString(keys::kPublicKey, &public_key) ||
469 !ParsePEMKeyBytes(public_key, &public_key_bytes)) { 453 !ParsePEMKeyBytes(public_key, &public_key_bytes)) {
470 *error = base::ASCIIToUTF16(errors::kInvalidKey); 454 *error = base::ASCIIToUTF16(errors::kInvalidKey);
471 return false; 455 return false;
472 } 456 }
473 std::string extension_id = id_util::GenerateId(public_key_bytes); 457 std::string extension_id = crx_file::id_util::GenerateId(public_key_bytes);
474 manifest->set_extension_id(extension_id); 458 manifest->set_extension_id(extension_id);
475 return true; 459 return true;
476 } 460 }
477 461
478 if (creation_flags & REQUIRE_KEY) { 462 if (creation_flags & REQUIRE_KEY) {
479 *error = base::ASCIIToUTF16(errors::kInvalidKey); 463 *error = base::ASCIIToUTF16(errors::kInvalidKey);
480 return false; 464 return false;
481 } else { 465 } else {
482 // If there is a path, we generate the ID from it. This is useful for 466 // If there is a path, we generate the ID from it. This is useful for
483 // development mode, because it keeps the ID stable across restarts and 467 // development mode, because it keeps the ID stable across restarts and
484 // reloading the extension. 468 // reloading the extension.
485 std::string extension_id = id_util::GenerateIdForPath(path); 469 std::string extension_id = crx_file::id_util::GenerateIdForPath(path);
486 if (extension_id.empty()) { 470 if (extension_id.empty()) {
487 NOTREACHED() << "Could not create ID from path."; 471 NOTREACHED() << "Could not create ID from path.";
488 return false; 472 return false;
489 } 473 }
490 manifest->set_extension_id(extension_id); 474 manifest->set_extension_id(extension_id);
491 return true; 475 return true;
492 } 476 }
493 } 477 }
494 478
495 Extension::Extension(const base::FilePath& path, 479 Extension::Extension(const base::FilePath& path,
496 scoped_ptr<extensions::Manifest> manifest) 480 scoped_ptr<extensions::Manifest> manifest)
497 : manifest_version_(0), 481 : manifest_version_(0),
498 converted_from_user_script_(false), 482 converted_from_user_script_(false),
499 manifest_(manifest.release()), 483 manifest_(manifest.release()),
500 finished_parsing_manifest_(false), 484 finished_parsing_manifest_(false),
501 display_in_launcher_(true), 485 display_in_launcher_(true),
502 display_in_new_tab_page_(true), 486 display_in_new_tab_page_(true),
503 wants_file_access_(false), 487 wants_file_access_(false),
504 creation_flags_(0) { 488 creation_flags_(0) {
505 DCHECK(path.empty() || path.IsAbsolute()); 489 DCHECK(path.empty() || path.IsAbsolute());
506 path_ = id_util::MaybeNormalizePath(path); 490 path_ = crx_file::id_util::MaybeNormalizePath(path);
507 } 491 }
508 492
509 Extension::~Extension() { 493 Extension::~Extension() {
510 } 494 }
511 495
512 bool Extension::InitFromValue(int flags, base::string16* error) { 496 bool Extension::InitFromValue(int flags, base::string16* error) {
513 DCHECK(error); 497 DCHECK(error);
514 498
515 creation_flags_ = flags; 499 creation_flags_ = flags;
516 500
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 763
780 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( 764 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo(
781 const Extension* extension, 765 const Extension* extension,
782 const PermissionSet* permissions, 766 const PermissionSet* permissions,
783 Reason reason) 767 Reason reason)
784 : reason(reason), 768 : reason(reason),
785 extension(extension), 769 extension(extension),
786 permissions(permissions) {} 770 permissions(permissions) {}
787 771
788 } // namespace extensions 772 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/common/extension.h ('k') | extensions/common/extension_resource_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698