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 ec6a2979077eb79c7703163b3192b00d4f190e86..d4d52f683e0c926736e3c8ea0a23f31f1299462f 100644 |
--- a/chrome/browser/ui/extensions/shell_window.cc |
+++ b/chrome/browser/ui/extensions/shell_window.cc |
@@ -212,30 +212,7 @@ 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. |
- // TOOD(mihaip): Can we check for user gestures instead? |
WindowOpenDisposition disposition = params.disposition; |
- if (disposition == CURRENT_TAB) { |
- AddMessageToDevToolsConsole( |
- content::CONSOLE_MESSAGE_LEVEL_ERROR, |
- base::StringPrintf( |
- "Can't open same-window link to \"%s\"; try target=\"_blank\".", |
- params.url.spec().c_str())); |
- return NULL; |
- } |
- |
// These dispositions aren't really navigations. |
if (disposition == SUPPRESS_OPEN || disposition == SAVE_TO_DISK || |
disposition == IGNORE_ACTION) { |
@@ -244,13 +221,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, |