| Index: chrome/browser/browser.cc
|
| ===================================================================
|
| --- chrome/browser/browser.cc (revision 55729)
|
| +++ chrome/browser/browser.cc (working copy)
|
| @@ -447,7 +447,7 @@
|
| // TODO(eroman): should we have referrer here?
|
| browser->AddTabWithURL(
|
| url, GURL(), PageTransition::LINK, -1, TabStripModel::ADD_SELECTED, NULL,
|
| - std::string());
|
| + std::string(), &browser);
|
| browser->window()->Show();
|
| }
|
|
|
| @@ -537,10 +537,10 @@
|
| case Extension::LAUNCH_WINDOW:
|
| case Extension::LAUNCH_PANEL:
|
| tab = Browser::OpenApplicationWindow(profile, extension, container,
|
| - GURL());
|
| + GURL(), &browser);
|
| break;
|
| case Extension::LAUNCH_TAB: {
|
| - tab = Browser::OpenApplicationTab(profile, extension);
|
| + tab = Browser::OpenApplicationTab(profile, extension, &browser);
|
| break;
|
| }
|
| default:
|
| @@ -548,7 +548,6 @@
|
| break;
|
| }
|
| if (tab) {
|
| - Browser* browser = tab->delegate()->GetBrowser();
|
| if (browser && extension && extension->launch_fullscreen())
|
| browser->window()->SetFullscreen(true);
|
| }
|
| @@ -560,7 +559,8 @@
|
| Profile* profile,
|
| Extension* extension,
|
| Extension::LaunchContainer container,
|
| - const GURL& url_input) {
|
| + const GURL& url_input,
|
| + Browser** browser) {
|
| GURL url;
|
| if (!url_input.is_empty()) {
|
| if (extension)
|
| @@ -576,15 +576,15 @@
|
| RegisterAppPrefs(app_name);
|
|
|
| bool as_panel = extension && (container == Extension::LAUNCH_PANEL);
|
| - Browser* browser = Browser::CreateForApp(app_name, extension, profile,
|
| - as_panel);
|
| - TabContents* tab_contents = browser->AddTabWithURL(
|
| + Browser* local_browser = Browser::CreateForApp(app_name, extension, profile,
|
| + as_panel);
|
| + TabContents* tab_contents = local_browser->AddTabWithURL(
|
| url, GURL(), PageTransition::START_PAGE, -1, TabStripModel::ADD_SELECTED,
|
| - NULL, std::string());
|
| + NULL, std::string(), &local_browser);
|
|
|
| tab_contents->GetMutableRendererPrefs()->can_accept_load_drops = false;
|
| tab_contents->render_view_host()->SyncRendererPrefs();
|
| - browser->window()->Show();
|
| + local_browser->window()->Show();
|
|
|
| // TODO(jcampan): http://crbug.com/8123 we should not need to set the initial
|
| // focus explicitly.
|
| @@ -597,33 +597,42 @@
|
| // OnDidGetApplicationInfo, which calls
|
| // web_app::UpdateShortcutForTabContents when it sees UPDATE_SHORTCUT as
|
| // pending web app action.
|
| - browser->pending_web_app_action_ = UPDATE_SHORTCUT;
|
| + local_browser->pending_web_app_action_ = UPDATE_SHORTCUT;
|
| }
|
|
|
| + if (browser)
|
| + *browser = local_browser;
|
| +
|
| return tab_contents;
|
| }
|
|
|
| // static
|
| TabContents* Browser::OpenApplicationWindow(Profile* profile,
|
| - GURL& url) {
|
| - return OpenApplicationWindow(profile, NULL, Extension::LAUNCH_WINDOW, url);
|
| + GURL& url, Browser** browser) {
|
| + return OpenApplicationWindow(profile, NULL, Extension::LAUNCH_WINDOW, url,
|
| + browser);
|
| }
|
|
|
| // static
|
| TabContents* Browser::OpenApplicationTab(Profile* profile,
|
| - Extension* extension) {
|
| - Browser* browser = BrowserList::GetLastActiveWithProfile(profile);
|
| - if (!browser || browser->type() != Browser::TYPE_NORMAL)
|
| + Extension* extension,
|
| + Browser** browser) {
|
| + Browser* local_browser = BrowserList::GetLastActiveWithProfile(profile);
|
| + if (!local_browser || local_browser->type() != Browser::TYPE_NORMAL)
|
| return NULL;
|
|
|
| // TODO(erikkay): This doesn't seem like the right transition in all cases.
|
| PageTransition::Type transition = PageTransition::START_PAGE;
|
| GURL url = extension->GetFullLaunchURL();
|
| TabContents* tab_contents =
|
| - browser->CreateTabContentsForURL(url, GURL(), profile,
|
| - transition, false, NULL);
|
| + local_browser->CreateTabContentsForURL(url, GURL(), profile,
|
| + transition, false, NULL);
|
| tab_contents->SetExtensionApp(extension);
|
| - browser->AddTab(tab_contents, transition);
|
| + local_browser->AddTab(tab_contents, transition);
|
| +
|
| + if (browser)
|
| + *browser = local_browser;
|
| +
|
| return tab_contents;
|
| }
|
|
|
| @@ -877,7 +886,8 @@
|
| int index,
|
| int add_types,
|
| SiteInstance* instance,
|
| - const std::string& extension_app_id) {
|
| + const std::string& extension_app_id,
|
| + Browser** browser_used) {
|
| TabContents* contents = NULL;
|
| if (CanSupportWindowFeature(FEATURE_TABSTRIP) || tabstrip_model()->empty()) {
|
| GURL url_to_load = url;
|
| @@ -895,6 +905,9 @@
|
| // TabStripModel::AddTabContents invokes HideContents if not foreground.
|
| contents->WasHidden();
|
| }
|
| +
|
| + if (browser_used)
|
| + *browser_used = this;
|
| } else {
|
| // We're in an app window or a popup window. Find an existing browser to
|
| // open this URL in, creating one if none exists.
|
| @@ -903,8 +916,11 @@
|
| if (!b)
|
| b = Browser::Create(profile_);
|
| contents = b->AddTabWithURL(url, referrer, transition, index, add_types,
|
| - instance, extension_app_id);
|
| + instance, extension_app_id, &b);
|
| b->window()->Show();
|
| +
|
| + if (browser_used)
|
| + *browser_used = b;
|
| }
|
| return contents;
|
| }
|
| @@ -1032,7 +1048,7 @@
|
|
|
| // Otherwise, just create a new tab.
|
| AddTabWithURL(url, GURL(), PageTransition::AUTO_BOOKMARK, -1,
|
| - TabStripModel::ADD_SELECTED, NULL, std::string());
|
| + TabStripModel::ADD_SELECTED, NULL, std::string(), NULL);
|
| }
|
|
|
| void Browser::UpdateCommandsForFullscreenMode(bool is_fullscreen) {
|
| @@ -1837,7 +1853,7 @@
|
| void Browser::OpenHelpTab() {
|
| GURL help_url = google_util::AppendGoogleLocaleParam(GURL(kHelpContentUrl));
|
| AddTabWithURL(help_url, GURL(), PageTransition::AUTO_BOOKMARK, -1,
|
| - TabStripModel::ADD_SELECTED, NULL, std::string());
|
| + TabStripModel::ADD_SELECTED, NULL, std::string(), NULL);
|
| }
|
|
|
| void Browser::OpenThemeGalleryTabAndActivate() {
|
| @@ -2189,7 +2205,7 @@
|
| TabContents* tab_contents = AddTabWithURL(
|
| GURL(chrome::kChromeUINewTabURL), GURL(), PageTransition::TYPED, index,
|
| foreground ? TabStripModel::ADD_SELECTED : TabStripModel::ADD_NONE, NULL,
|
| - std::string());
|
| + std::string(), NULL);
|
| tab_contents->set_new_tab_start_time(new_tab_start_time);
|
| return tab_contents;
|
| }
|
| @@ -2379,6 +2395,13 @@
|
| UseVerticalTabsChanged();
|
| }
|
|
|
| +bool Browser::LargeIconsPermitted() const {
|
| + // We don't show the big icons in tabs for TYPE_EXTENSION_APP windows because
|
| + // for those windows, we already have a big icon in the top-left outside any
|
| + // tab. Having big tab icons too looks kinda redonk.
|
| + return TYPE_EXTENSION_APP != type();
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // Browser, TabStripModelObserver implementation:
|
|
|
| @@ -2944,10 +2967,6 @@
|
| pending_web_app_action_ = NONE;
|
| }
|
|
|
| -Browser* Browser::GetBrowser() {
|
| - return this;
|
| -}
|
| -
|
| void Browser::ContentTypeChanged(TabContents* source) {
|
| if (source == GetSelectedTabContents())
|
| UpdateZoomCommandsForTabState();
|
| @@ -3758,7 +3777,7 @@
|
| if (destination_extension->launch_container() ==
|
| Extension::LAUNCH_WINDOW) {
|
| Browser::OpenApplicationWindow(profile_, destination_extension,
|
| - Extension::LAUNCH_WINDOW, url);
|
| + Extension::LAUNCH_WINDOW, url, NULL);
|
| return true;
|
| }
|
| }
|
| @@ -3912,7 +3931,8 @@
|
| Browser* browser = Browser::Create(profile_);
|
| new_contents = browser->AddTabWithURL(
|
| url, referrer, transition, index,
|
| - TabStripModel::ADD_SELECTED | add_types, instance, std::string());
|
| + TabStripModel::ADD_SELECTED | add_types, instance, std::string(),
|
| + &browser);
|
| browser->window()->Show();
|
| } else if ((disposition == CURRENT_TAB) && current_tab) {
|
| tabstrip_model_.TabNavigating(current_tab, transition);
|
| @@ -3947,7 +3967,7 @@
|
| if (disposition != NEW_BACKGROUND_TAB)
|
| add_types |= TabStripModel::ADD_SELECTED;
|
| new_contents = AddTabWithURL(url, referrer, transition, index, add_types,
|
| - instance, std::string());
|
| + instance, std::string(), NULL);
|
| }
|
|
|
| if (disposition != NEW_BACKGROUND_TAB && source_tab_was_frontmost &&
|
|
|