Chromium Code Reviews| Index: chrome/browser/extensions/extension_tabs_module.cc |
| diff --git a/chrome/browser/extensions/extension_tabs_module.cc b/chrome/browser/extensions/extension_tabs_module.cc |
| index 2bb87d91b3100ad3200570b64de4cc768b9fb9c3..ee6c4cd0d39a073ca21b47932daeb7e4712fea31 100644 |
| --- a/chrome/browser/extensions/extension_tabs_module.cc |
| +++ b/chrome/browser/extensions/extension_tabs_module.cc |
| @@ -123,6 +123,18 @@ std::string GetWindowTypeText(const Browser* browser) { |
| return keys::kWindowTypeValueNormal; |
| } |
| +bool IsCrashURL(const GURL& url) { |
| + if (url == GURL(chrome::kAboutBrowserCrash) || |
| + url == GURL(chrome::kAboutCrashURL)) |
| + return true; |
| + |
| + bool has_chrome_scheme = url.SchemeIs(chrome::kAboutScheme) || |
| + url.SchemeIs(chrome::kChromeUIScheme); |
| + bool has_crash_host = url.host() == chrome::kChromeUIBrowserCrashHost || |
| + url.host() == chrome::kChromeUICrashHost; |
| + return (has_chrome_scheme && has_crash_host); |
| +} |
| + |
| } // namespace |
| int ExtensionTabUtil::GetWindowId(const Browser* browser) { |
| @@ -402,20 +414,16 @@ bool CreateWindowFunction::RunImpl() { |
| keys::kInvalidUrlError, *i); |
| return false; |
| } |
| + // Don't let the extension crash the browser or renderers. |
|
msw
2011/05/31 20:58:25
comment outdented...
|
| + if (IsCrashURL(url)) { |
| + error_ = keys::kNoCrashBrowserError; |
| + return false; |
| + } |
| urls.push_back(url); |
| } |
| } |
| } |
| - // Don't let the extension crash the browser or renderers. |
| - GURL browser_crash(chrome::kAboutBrowserCrash); |
| - GURL renderer_crash(chrome::kAboutCrashURL); |
| - if (std::find(urls.begin(), urls.end(), browser_crash) != urls.end() || |
| - std::find(urls.begin(), urls.end(), renderer_crash) != urls.end()) { |
| - error_ = keys::kNoCrashBrowserError; |
| - return false; |
| - } |
| - |
| // Look for optional tab id. |
| if (args) { |
| int tab_id; |
| @@ -749,8 +757,7 @@ bool CreateTabFunction::RunImpl() { |
| } |
| // Don't let extensions crash the browser or renderers. |
| - if (url == GURL(chrome::kAboutBrowserCrash) || |
| - url == GURL(chrome::kAboutCrashURL)) { |
| + if (IsCrashURL(url)) { |
| error_ = keys::kNoCrashBrowserError; |
| return false; |
| } |
| @@ -867,7 +874,7 @@ bool UpdateTabFunction::RunImpl() { |
| // -title |
| // -favIconUrl |
| - // Navigate the tab to a new location if the url different. |
| + // Navigate the tab to a new location if the url is different. |
| std::string url_string; |
| if (update_props->HasKey(keys::kUrlKey)) { |
| EXTENSION_FUNCTION_VALIDATE(update_props->GetString( |
| @@ -881,8 +888,7 @@ bool UpdateTabFunction::RunImpl() { |
| } |
| // Don't let the extension crash the browser or renderers. |
| - if (url == GURL(chrome::kAboutBrowserCrash) || |
| - url == GURL(chrome::kAboutCrashURL)) { |
| + if (IsCrashURL(url)) { |
| error_ = keys::kNoCrashBrowserError; |
| return false; |
| } |