| Index: chrome/browser/extensions/extension.cc
|
| diff --git a/chrome/browser/extensions/extension.cc b/chrome/browser/extensions/extension.cc
|
| index d8ab40379d0c0fde26f59ff8b724fc6bde4ea053..1aeaeaab67229608fc479c79caf011ac1a3cb298 100644
|
| --- a/chrome/browser/extensions/extension.cc
|
| +++ b/chrome/browser/extensions/extension.cc
|
| @@ -103,21 +103,6 @@ Extension::Extension(const Extension& rhs)
|
| theme_paths_(rhs.theme_paths_) {
|
| }
|
|
|
| -const GURL& Extension::url() {
|
| - if (!extension_url_.is_valid())
|
| - extension_url_ = GURL(std::string(chrome::kExtensionScheme) +
|
| - chrome::kStandardSchemeSeparator + id_ + "/");
|
| -
|
| - return extension_url_;
|
| -}
|
| -
|
| -void Extension::set_id(const std::string& id) {
|
| - id_ = id;
|
| -
|
| - // Reset url_ so that it gets reinitialized next time.
|
| - extension_url_ = GURL();
|
| -}
|
| -
|
| const std::string Extension::VersionString() const {
|
| return version_->GetString();
|
| }
|
| @@ -335,10 +320,9 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script,
|
| return true;
|
| }
|
|
|
| -bool Extension::InitFromValue(const DictionaryValue& source,
|
| +bool Extension::InitFromValue(const DictionaryValue& source, bool require_id,
|
| std::string* error) {
|
| - // Initialize id. The ID is not required here because we don't require IDs for
|
| - // extensions used with --load-extension.
|
| + // Initialize id.
|
| if (source.HasKey(kIdKey)) {
|
| if (!source.GetString(kIdKey, &id_)) {
|
| *error = kInvalidIdError;
|
| @@ -356,8 +340,23 @@ bool Extension::InitFromValue(const DictionaryValue& source,
|
| *error = kInvalidIdError;
|
| return false;
|
| }
|
| + } else if (require_id) {
|
| + *error = kInvalidIdError;
|
| + return false;
|
| + } else {
|
| + // Generate a random ID
|
| + static int counter = 0;
|
| + id_ = StringPrintf("%x", counter);
|
| + ++counter;
|
| +
|
| + // pad the string out to 40 chars with zeroes.
|
| + id_.insert(0, 40 - id_.length(), '0');
|
| }
|
|
|
| + // Initialize the URL.
|
| + extension_url_ = GURL(std::string(chrome::kExtensionScheme) +
|
| + chrome::kStandardSchemeSeparator + id_ + "/");
|
| +
|
| // Initialize version.
|
| std::string version_str;
|
| if (!source.GetString(kVersionKey, &version_str)) {
|
| @@ -457,6 +456,7 @@ bool Extension::InitFromValue(const DictionaryValue& source,
|
| UserScript script;
|
| if (!LoadUserScriptHelper(content_script, i, error, &script))
|
| return false; // Failed to parse script context definition
|
| + script.set_extension_id(id());
|
| content_scripts_.push_back(script);
|
| }
|
| }
|
|
|