Index: chrome/browser/ui/extensions/shell_window.cc |
diff --git a/chrome/browser/ui/extensions/shell_window.cc b/chrome/browser/ui/extensions/shell_window.cc |
index 12d06c999ad733b5ec9bd72f3df78a0b11f96184..afd0f2cab90d54cc435adbe23b82ba884f275562 100644 |
--- a/chrome/browser/ui/extensions/shell_window.cc |
+++ b/chrome/browser/ui/extensions/shell_window.cc |
@@ -224,19 +224,10 @@ WebContents* ShellWindow::OpenURLFromTab(WebContents* source, |
const content::OpenURLParams& params) { |
DCHECK(source == web_contents_); |
- if (params.url.host() == extension_->id()) { |
- AddMessageToDevToolsConsole( |
- content::CONSOLE_MESSAGE_LEVEL_ERROR, |
- base::StringPrintf( |
- "Can't navigate to \"%s\"; apps do not support navigation.", |
- params.url.spec().c_str())); |
- return NULL; |
- } |
- |
// Don't allow the current tab to be navigated. It would be nice to map all |
// anchor tags (even those without target="_blank") to new tabs, but right |
- // now we can't distinguish between those and <meta> refreshes, which we |
- // don't want to allow. |
+ // now we can't distinguish between those and <meta> refreshes or window.href |
+ // navigations, which we don't want to allow. |
// TOOD(mihaip): Can we check for user gestures instead? |
WindowOpenDisposition disposition = params.disposition; |
if (disposition == CURRENT_TAB) { |
@@ -256,13 +247,24 @@ WebContents* ShellWindow::OpenURLFromTab(WebContents* source, |
// Force all links to open in a new tab, even if they were trying to open a |
// window. |
- content::OpenURLParams new_tab_params = params; |
+ chrome::NavigateParams new_tab_params( |
+ static_cast<Browser*>(NULL), params.url, params.transition); |
new_tab_params.disposition = |
disposition == NEW_BACKGROUND_TAB ? disposition : NEW_FOREGROUND_TAB; |
- Browser* browser = browser::FindOrCreateTabbedBrowser(profile_); |
- WebContents* new_tab = browser->OpenURL(new_tab_params); |
- browser->window()->Show(); |
- return new_tab; |
+ new_tab_params.initiating_profile = profile_; |
+ chrome::Navigate(&new_tab_params); |
+ |
+ WebContents* new_contents = new_tab_params.target_contents ? |
+ new_tab_params.target_contents->web_contents() : NULL; |
+ if (!new_contents) { |
+ AddMessageToDevToolsConsole( |
+ content::CONSOLE_MESSAGE_LEVEL_ERROR, |
+ base::StringPrintf( |
+ "Can't navigate to \"%s\"; apps do not support navigation.", |
+ params.url.spec().c_str())); |
+ } |
+ |
+ return new_contents; |
} |
void ShellWindow::AddNewContents(WebContents* source, |