Commit 07107815 authored by groby@chromium.org's avatar groby@chromium.org

[OriginChip] Don't crash for invalid extension URL

If the user enters a chrome-extension:// url with an invalid extension
id, let's not crash. That's rude.

Instead, origin chip will display <id> as extension name, show a "page
not available" message.

BUG=375426

Review URL: https://codereview.chromium.org/291173008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273020 0039d316-1c4b-4281-b951-d872f2087c98
parent 8b638e3e
...@@ -111,36 +111,41 @@ bool OriginChipInfo::Update(const content::WebContents* web_contents, ...@@ -111,36 +111,41 @@ bool OriginChipInfo::Update(const content::WebContents* web_contents,
label_); label_);
} }
if (displayed_url_.SchemeIs(extensions::kExtensionScheme)) {
icon_ = IDR_EXTENSIONS_FAVICON;
if (displayed_url_.SchemeIs(extensions::kExtensionScheme)) {
const extensions::Extension* extension = const extensions::Extension* extension =
extensions::ExtensionSystem::Get(profile_)->extension_service()-> extensions::ExtensionSystem::Get(profile_)->extension_service()->
extensions()->GetExtensionOrAppByURL(displayed_url_); extensions()->GetExtensionOrAppByURL(displayed_url_);
extension_icon_image_.reset(
new extensions::IconImage(profile_, if (extension) {
extension, icon_ = IDR_EXTENSIONS_FAVICON;
extensions::IconsInfo::GetIcons(extension), extension_icon_image_.reset(
extension_misc::EXTENSION_ICON_BITTY, new extensions::IconImage(profile_,
extensions::util::GetDefaultAppIcon(), extension,
owner_)); extensions::IconsInfo::GetIcons(extension),
extension_misc::EXTENSION_ICON_BITTY,
// Forces load of the image. extensions::util::GetDefaultAppIcon(),
extension_icon_image_->image_skia().GetRepresentation(1.0f); owner_));
if (!extension_icon_image_->image_skia().image_reps().empty())
owner_->OnExtensionIconImageChanged(extension_icon_image_.get()); // Forces load of the image.
} else { extension_icon_image_->image_skia().GetRepresentation(1.0f);
if (extension_icon_image_) { if (!extension_icon_image_->image_skia().image_reps().empty())
extension_icon_image_.reset(); owner_->OnExtensionIconImageChanged(extension_icon_image_.get());
owner_->OnExtensionIconImageChanged(NULL);
return true;
} }
}
icon_ = (displayed_url_.is_empty() || if (extension_icon_image_) {
displayed_url_.SchemeIs(content::kChromeUIScheme)) ? extension_icon_image_.reset();
IDR_PRODUCT_LOGO_16 : owner_->OnExtensionIconImageChanged(NULL);
toolbar_model->GetIconForSecurityLevel(security_level_);
} }
icon_ = (displayed_url_.is_empty() ||
displayed_url_.SchemeIs(content::kChromeUIScheme)) ?
IDR_PRODUCT_LOGO_16 :
toolbar_model->GetIconForSecurityLevel(security_level_);
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment