| Index: chrome/browser/browser_navigator.cc
|
| ===================================================================
|
| --- chrome/browser/browser_navigator.cc (revision 66837)
|
| +++ chrome/browser/browser_navigator.cc (working copy)
|
| @@ -114,11 +114,28 @@
|
| params->disposition = NEW_FOREGROUND_TAB;
|
| }
|
|
|
| - // Disposition trumps add types. ADD_SELECTED is a default, so we need to
|
| - // remove it if disposition implies the tab is going to open in the
|
| - // background.
|
| - if (params->disposition == NEW_BACKGROUND_TAB)
|
| - params->tabstrip_add_types &= ~TabStripModel::ADD_SELECTED;
|
| + switch (params->disposition) {
|
| + case NEW_BACKGROUND_TAB:
|
| + // Disposition trumps add types. ADD_SELECTED is a default, so we need to
|
| + // remove it if disposition implies the tab is going to open in the
|
| + // background.
|
| + params->tabstrip_add_types &= ~TabStripModel::ADD_SELECTED;
|
| + break;
|
| +
|
| + case NEW_WINDOW:
|
| + case NEW_POPUP:
|
| + // Code that wants to open a new window typically expects it to be shown
|
| + // automatically.
|
| + params->show_window = true;
|
| + // Fall-through.
|
| + case NEW_FOREGROUND_TAB:
|
| + case SINGLETON_TAB:
|
| + params->tabstrip_add_types |= TabStripModel::ADD_SELECTED;
|
| + break;
|
| +
|
| + default:
|
| + break;
|
| + }
|
| }
|
|
|
| // This class makes sure the Browser object held in |params| is made visible
|
| @@ -208,12 +225,19 @@
|
| }
|
|
|
| void Navigate(NavigateParams* params, NavigatorDelegate* delegate) {
|
| + Browser* browser = params->browser;
|
| DCHECK(delegate);
|
| params->browser = GetBrowserForDisposition(params);
|
| if (!params->browser)
|
| return;
|
| // Navigate() must not return early after this point.
|
|
|
| + if (browser != params->browser &&
|
| + params->browser->tabstrip_model()->empty()) {
|
| + // A new window has been created. So it needs to be displayed.
|
| + params->show_window = true;
|
| + }
|
| +
|
| // Make sure the Browser is shown if params call for it.
|
| ScopedBrowserDisplayer displayer(params);
|
|
|
|
|