Index: chrome/browser/ui/browser.cc |
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc |
index c733bf1be8ffffef6abd272717722c6a206d8c45..11fc1c1106670472d16e1fa001b362a38ff85951 100644 |
--- a/chrome/browser/ui/browser.cc |
+++ b/chrome/browser/ui/browser.cc |
@@ -617,9 +617,17 @@ TabContents* Browser::OpenApplicationTab(Profile* profile, |
if (launch_type == ExtensionPrefs::LAUNCH_PINNED) |
add_type |= TabStripModel::ADD_PINNED; |
+ // For extensions lacking launch urls, determine a reasonable fallback. |
+ GURL extension_url = extension->GetFullLaunchURL(); |
+ if (!extension_url.is_valid()) { |
+ extension_url = extension->options_url(); |
+ if (!extension_url.is_valid()) |
+ extension_url = GURL(chrome::kChromeUIExtensionsURL); |
+ } |
+ |
// TODO(erikkay): START_PAGE doesn't seem like the right transition in all |
// cases. |
- browser::NavigateParams params(browser, extension->GetFullLaunchURL(), |
+ browser::NavigateParams params(browser, extension_url, |
PageTransition::START_PAGE); |
params.tabstrip_add_types = add_type; |