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 bcfe4d28c14d6a0ffc9add047aea9043438e5922..3835d560cafa0fad879ffe915438fae600c0b6ab 100644 |
--- a/chrome/browser/ui/extensions/shell_window.cc |
+++ b/chrome/browser/ui/extensions/shell_window.cc |
@@ -210,30 +210,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 |
Evan Stade
2012/09/06 18:29:52
you can view this change as a proposal. Here is a
Mihai Parparita -not on Chrome
2012/09/06 18:40:35
This seems OK to me. To make it more obvious in th
|
- // 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) { |
@@ -242,13 +219,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, |