diff options
author | mad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-27 22:12:58 +0000 |
---|---|---|
committer | mad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-27 22:12:58 +0000 |
commit | d5fbc00d5d55132f03f229f3dba001fc62ee6795 (patch) | |
tree | cbcb664bf2fd23a48395dcdb730e32352c5f6525 /chrome/browser/browser.cc | |
parent | 81fa3a476c24ff3d021019f441243cbea96497e0 (diff) | |
download | chromium_src-d5fbc00d5d55132f03f229f3dba001fc62ee6795.zip chromium_src-d5fbc00d5d55132f03f229f3dba001fc62ee6795.tar.gz chromium_src-d5fbc00d5d55132f03f229f3dba001fc62ee6795.tar.bz2 |
When we open a popup window from an app window, we used to identify this popup window as an app too.
To not lose this functionality, yet fix bug 5739 about those app popup windows which would persist their window placement, I decided to add a new enum browser type item which is a bit combination of both popup and app so we can track those.
bug= http://crbug.com/5739
Review URL: http://codereview.chromium.org/28271
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10636 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser.cc')
-rw-r--r-- | chrome/browser/browser.cc | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 7e1268f..c58b93c 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -266,8 +266,8 @@ Browser* Browser::CreateForPopup(Profile* profile) { // static Browser* Browser::CreateForApp(const std::wstring& app_name, - Profile* profile) { - Browser* browser = new Browser(TYPE_APP, profile); + Profile* profile, bool is_popup) { + Browser* browser = new Browser(is_popup? TYPE_APP_POPUP : TYPE_APP, profile); browser->app_name_ = app_name; browser->CreateBrowserWindow(); return browser; @@ -317,7 +317,7 @@ void Browser::OpenApplicationWindow(Profile* profile, const GURL& url) { std::wstring app_name = ComputeApplicationNameFromURL(url); RegisterAppPrefs(app_name); - Browser* browser = Browser::CreateForApp(app_name, profile); + Browser* browser = Browser::CreateForApp(app_name, profile, false); browser->AddTabWithURL(url, GURL(), PageTransition::START_PAGE, true, NULL); browser->window()->Show(); // TODO(jcampan): http://crbug.com/8123 we should not need to set the initial @@ -339,7 +339,7 @@ std::wstring Browser::GetWindowPlacementKey() const { bool Browser::ShouldSaveWindowPlacement() const { // We don't save window position for popups. - return type() != TYPE_POPUP; + return (type() & TYPE_POPUP) == 0; } void Browser::SaveWindowPlacement(const gfx::Rect& bounds, bool maximized) { @@ -479,7 +479,7 @@ void Browser::OnWindowClosing() { TabContents* Browser::AddTabWithURL( const GURL& url, const GURL& referrer, PageTransition::Type transition, bool foreground, SiteInstance* instance) { - if (type_ == TYPE_APP && tabstrip_model_.count() == 1) { + if ((type_ & TYPE_APP) != 0 && tabstrip_model_.count() == 1) { NOTREACHED() << "Cannot add a tab in a mono tab application."; return NULL; } @@ -1310,8 +1310,8 @@ void Browser::DuplicateContentsAt(int index) { PageTransition::LINK, true); } else { Browser* browser = NULL; - if (type_ == TYPE_APP) { - browser = Browser::CreateForApp(app_name_, profile_); + if (type_ & TYPE_APP) { + browser = Browser::CreateForApp(app_name_, profile_, type_ & TYPE_POPUP); } else if (type_ == TYPE_POPUP) { browser = Browser::CreateForPopup(profile_); } @@ -1541,7 +1541,7 @@ void Browser::OpenURLFromTab(TabContents* source, // If this is an application we can only have one tab so a new tab always // goes into a tabbed browser window. - if (disposition != NEW_WINDOW && type_ == TYPE_APP) { + if (disposition != NEW_WINDOW && type_ & TYPE_APP) { // If the disposition is OFF_THE_RECORD we don't want to create a new // browser that will itself create another OTR browser. This will result in // a browser leak (and crash below because no tab is created or selected). @@ -1666,7 +1666,7 @@ void Browser::AddNewContents(TabContents* source, // This means we need to open the tab with the START PAGE transition. // AddNewContents doesn't support this but the TabStripModel's // AddTabContents method does. - if (type_ == TYPE_APP) + if (type_ & TYPE_APP) transition = PageTransition::START_PAGE; b->tabstrip_model()->AddTabContents(new_contents, -1, transition, true); b->window()->Show(); @@ -1724,7 +1724,7 @@ void Browser::CloseContents(TabContents* source) { } void Browser::MoveContents(TabContents* source, const gfx::Rect& pos) { - if (type() != TYPE_POPUP) { + if ((type() & TYPE_POPUP) == 0) { NOTREACHED() << "moving invalid browser type"; return; } @@ -1733,7 +1733,7 @@ void Browser::MoveContents(TabContents* source, const gfx::Rect& pos) { bool Browser::IsPopup(TabContents* source) { // A non-tabbed BROWSER is an unconstrained popup. - return (type() == TYPE_POPUP); + return (type() & TYPE_POPUP); } void Browser::ToolbarSizeChanged(TabContents* source, bool is_animating) { @@ -1779,7 +1779,7 @@ void Browser::ContentsZoomChange(bool zoom_in) { } bool Browser::IsApplication() const { - return type_ == TYPE_APP; + return (type_ & TYPE_APP) != 0; } void Browser::ConvertContentsToApplication(TabContents* contents) { @@ -1792,7 +1792,7 @@ void Browser::ConvertContentsToApplication(TabContents* contents) { RegisterAppPrefs(app_name); tabstrip_model_.DetachTabContentsAt(index); - Browser* browser = Browser::CreateForApp(app_name, profile_); + Browser* browser = Browser::CreateForApp(app_name, profile_, false); browser->tabstrip_model()->AppendTabContents(contents, true); browser->window()->Show(); } @@ -2091,7 +2091,7 @@ void Browser::UpdateCommandsForFullscreenMode(bool is_fullscreen) { // Window management commands command_updater_.UpdateCommandEnabled(IDC_PROFILE_MENU, show_main_ui); command_updater_.UpdateCommandEnabled(IDC_SHOW_AS_TAB, - (type() == TYPE_POPUP) && !is_fullscreen); + (type() & TYPE_POPUP) && !is_fullscreen); // Focus various bits of UI command_updater_.UpdateCommandEnabled(IDC_FOCUS_TOOLBAR, show_main_ui); @@ -2376,7 +2376,7 @@ void Browser::BuildPopupWindow(TabContents* source, TabContents* new_contents, const gfx::Rect& initial_pos) { Browser* browser = - new Browser((type_ == TYPE_APP) ? TYPE_APP : TYPE_POPUP, profile_); + new Browser((type_ & TYPE_APP) ? TYPE_APP_POPUP : TYPE_POPUP, profile_); browser->set_override_bounds(initial_pos); browser->CreateBrowserWindow(); // We need to Show before AddNewContents, otherwise AddNewContents will focus |