| 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,
|
|
|