| Index: chrome/common/extensions/extension.cc
|
| ===================================================================
|
| --- chrome/common/extensions/extension.cc (revision 72219)
|
| +++ chrome/common/extensions/extension.cc (working copy)
|
| @@ -835,19 +835,20 @@
|
| }
|
| result->set_default_title(default_title);
|
|
|
| - // Read sidebar's |default_url| (optional).
|
| - std::string default_url;
|
| - if (extension_sidebar->HasKey(keys::kSidebarDefaultUrl)) {
|
| - if (!extension_sidebar->GetString(keys::kSidebarDefaultUrl, &default_url) ||
|
| - default_url.empty()) {
|
| - *error = errors::kInvalidSidebarDefaultUrl;
|
| + // Read sidebar's |default_page| (optional).
|
| + std::string default_page;
|
| + if (extension_sidebar->HasKey(keys::kSidebarDefaultPage)) {
|
| + if (!extension_sidebar->GetString(keys::kSidebarDefaultPage,
|
| + &default_page) ||
|
| + default_page.empty()) {
|
| + *error = errors::kInvalidSidebarDefaultPage;
|
| return NULL;
|
| }
|
| - GURL resolved_url = extension_sidebar_utils::ResolveAndVerifyUrl(
|
| - default_url, this, error);
|
| - if (!resolved_url.is_valid())
|
| + GURL url = extension_sidebar_utils::ResolveRelativePath(
|
| + default_page, this, error);
|
| + if (!url.is_valid())
|
| return NULL;
|
| - result->set_default_url(resolved_url);
|
| + result->set_default_page(url);
|
| }
|
|
|
| return result.release();
|
| @@ -1897,6 +1898,22 @@
|
| devtools_url_ = GetResourceURL(devtools_str);
|
| }
|
|
|
| + // Initialize sidebar action (optional).
|
| + if (source.HasKey(keys::kSidebar)) {
|
| + DictionaryValue* sidebar_value;
|
| + if (!source.GetDictionary(keys::kSidebar, &sidebar_value)) {
|
| + *error = errors::kInvalidSidebar;
|
| + return false;
|
| + }
|
| + if (!HasApiPermission(Extension::kExperimentalPermission)) {
|
| + *error = errors::kSidebarExperimental;
|
| + return false;
|
| + }
|
| + sidebar_defaults_.reset(LoadExtensionSidebarDefaults(sidebar_value, error));
|
| + if (!sidebar_defaults_.get())
|
| + return false; // Failed to parse sidebar definition.
|
| + }
|
| +
|
| // Initialize text-to-speech voices (optional).
|
| if (source.HasKey(keys::kTts)) {
|
| DictionaryValue* tts_dict;
|
| @@ -1976,23 +1993,6 @@
|
|
|
| InitEffectiveHostPermissions();
|
|
|
| - // Initialize sidebar action (optional). It has to be done after host
|
| - // permissions are initialized to verify default sidebar url.
|
| - if (source.HasKey(keys::kSidebar)) {
|
| - DictionaryValue* sidebar_value;
|
| - if (!source.GetDictionary(keys::kSidebar, &sidebar_value)) {
|
| - *error = errors::kInvalidSidebar;
|
| - return false;
|
| - }
|
| - if (!HasApiPermission(Extension::kExperimentalPermission)) {
|
| - *error = errors::kSidebarExperimental;
|
| - return false;
|
| - }
|
| - sidebar_defaults_.reset(LoadExtensionSidebarDefaults(sidebar_value, error));
|
| - if (!sidebar_defaults_.get())
|
| - return false; // Failed to parse sidebar definition.
|
| - }
|
| -
|
| // Although |source| is passed in as a const, it's still possible to modify
|
| // it. This is dangerous since the utility process re-uses |source| after
|
| // it calls InitFromValue, passing it up to the browser process which calls
|
|
|