diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-29 05:14:03 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-29 05:14:03 +0000 |
commit | 50220030753d7d0ba1fcea95e5f889033bdeb382 (patch) | |
tree | f9f86e738cc0db5157239bcc571b31769ffabda9 | |
parent | b77cb305630599d4d19d4cbf2cbfa8ef59a0ecc9 (diff) | |
download | chromium_src-50220030753d7d0ba1fcea95e5f889033bdeb382.zip chromium_src-50220030753d7d0ba1fcea95e5f889033bdeb382.tar.gz chromium_src-50220030753d7d0ba1fcea95e5f889033bdeb382.tar.bz2 |
roll back r30430 because it causes bustage even though I don't know why.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30435 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/browser.cc | 5 | ||||
-rw-r--r-- | chrome/browser/browser.h | 7 | ||||
-rw-r--r-- | chrome/browser/browser_list.cc | 55 | ||||
-rw-r--r-- | chrome/browser/browser_list.h | 12 |
4 files changed, 40 insertions, 39 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 3219c3c..d13aabc 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -1596,8 +1596,7 @@ void Browser::DuplicateContentsAt(int index) { } else { Browser* browser = NULL; if (type_ & TYPE_APP) { - browser = Browser::CreateForApp(app_name_, profile_, - !!(type_ & TYPE_POPUP)); + browser = Browser::CreateForApp(app_name_, profile_, type_ & TYPE_POPUP); } else if (type_ == TYPE_POPUP) { browser = Browser::CreateForPopup(profile_); } @@ -1954,7 +1953,7 @@ void Browser::DetachContents(TabContents* source) { 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) { diff --git a/chrome/browser/browser.h b/chrome/browser/browser.h index 93190ab..c1c9d93 100644 --- a/chrome/browser/browser.h +++ b/chrome/browser/browser.h @@ -48,11 +48,10 @@ class Browser : public TabStripModelDelegate, // TODO(sky): move into a common place that is referenced by both ui_tests // and chrome. enum Type { - TYPE_NORMAL = 1, - TYPE_POPUP = 2, - TYPE_APP = 4, + TYPE_NORMAL = 0, + TYPE_POPUP = 1, + TYPE_APP = 2, TYPE_APP_POPUP = TYPE_APP | TYPE_POPUP, - TYPE_ANY = TYPE_NORMAL | TYPE_POPUP | TYPE_APP }; // Possible elements of the Browser window. diff --git a/chrome/browser/browser_list.cc b/chrome/browser/browser_list.cc index c8e3646..aba80b7 100644 --- a/chrome/browser/browser_list.cc +++ b/chrome/browser/browser_list.cc @@ -79,19 +79,6 @@ class BrowserActivityObserver : public NotificationObserver { BrowserActivityObserver* activity_observer = NULL; -// Returns true if the specified |browser| has a matching profile and type to -// those specified. |type| can also be TYPE_ANY, which means only |profile| -// must be matched. -bool BrowserMatchesProfileAndType(Browser* browser, - Profile* profile, - Browser::Type type) { - if (type == Browser::TYPE_ANY || browser->type() == type) { - if (browser->profile() == profile) - return true; - } - return false; -} - } // namespace BrowserList::list_type BrowserList::browsers_; @@ -255,7 +242,7 @@ void BrowserList::WindowsSessionEnding() { bool BrowserList::HasBrowserWithProfile(Profile* profile) { BrowserList::const_iterator iter; for (size_t i = 0; i < browsers_.size(); ++i) { - if (BrowserMatchesProfileAndType(browsers_[i], profile, Browser::TYPE_ANY)) + if (browsers_[i]->profile() == profile) return true; } return false; @@ -285,28 +272,44 @@ Browser* BrowserList::GetLastActive() { Browser* BrowserList::GetLastActiveWithProfile(Profile* p) { list_type::reverse_iterator browser = last_active_browsers_.rbegin(); for (; browser != last_active_browsers_.rend(); ++browser) { - if (BrowserMatchesProfileAndType(*browser, p, Browser::TYPE_ANY)) + if ((*browser)->profile() == p) { return *browser; + } } + return NULL; } // static Browser* BrowserList::FindBrowserWithType(Profile* p, Browser::Type t) { - list_type::reverse_iterator browser = last_active_browsers_.rbegin(); - for (; browser != last_active_browsers_.rend(); ++browser) { - if (BrowserMatchesProfileAndType(*browser, p, t)) - return *browser; + Browser* last_active = GetLastActive(); + if (last_active && last_active->profile() == p && last_active->type() == t) + return last_active; + + BrowserList::const_iterator i; + for (i = BrowserList::begin(); i != BrowserList::end(); ++i) { + if (*i == last_active) + continue; + + if ((*i)->profile() == p && (*i)->type() == t) + return *i; } return NULL; } // static Browser* BrowserList::FindBrowserWithProfile(Profile* p) { - list_type::reverse_iterator browser = last_active_browsers_.rbegin(); - for (; browser != last_active_browsers_.rend(); ++browser) { - if (BrowserMatchesProfileAndType(*browser, p, Browser::TYPE_ANY)) - return *browser; + Browser* last_active = GetLastActive(); + if (last_active && last_active->profile() == p) + return last_active; + + BrowserList::const_iterator i; + for (i = BrowserList::begin(); i != BrowserList::end(); ++i) { + if (*i == last_active) + continue; + + if ((*i)->profile() == p) + return *i; } return NULL; } @@ -326,8 +329,8 @@ size_t BrowserList::GetBrowserCountForType(Profile* p, Browser::Type type) { BrowserList::const_iterator i; size_t result = 0; for (i = BrowserList::begin(); i != BrowserList::end(); ++i) { - if (BrowserMatchesProfileAndType(*i, p, type)) - ++result; + if ((*i)->profile() == p && (*i)->type() == type) + result++; } return result; } @@ -337,7 +340,7 @@ size_t BrowserList::GetBrowserCount(Profile* p) { BrowserList::const_iterator i; size_t result = 0; for (i = BrowserList::begin(); i != BrowserList::end(); ++i) { - if (BrowserMatchesProfileAndType(*i, p, Browser::TYPE_ANY)) + if ((*i)->profile() == p) result++; } return result; diff --git a/chrome/browser/browser_list.h b/chrome/browser/browser_list.h index 45a0246..b510b8c 100644 --- a/chrome/browser/browser_list.h +++ b/chrome/browser/browser_list.h @@ -58,14 +58,14 @@ class BrowserList { // open browser owned by |profile| is returned. If none exist, returns NULL. static Browser* GetLastActiveWithProfile(Profile *profile); - // Find an existing browser window with the provided type. Searches in the - // order of last activation. Only browsers that have been active can be - // returned. Returns NULL if no such browser currently exists. + // Find an existing browser window with the provided type. If the last active + // has the right type, it is returned. Otherwise, the next available browser + // is returned. Returns NULL if no such browser currently exists. static Browser* FindBrowserWithType(Profile* p, Browser::Type t); - // Find an existing browser window with the provided profile. Searches in the - // order of last activation. Only browsers that have been active can be - // returned. Returns NULL if no such browser currently exists. + // Find an existing browser window with the provided profile. If the last + // active has the right profile, it is returned. Returns NULL if no such + // browser currently exists. static Browser* FindBrowserWithProfile(Profile* p); // Find an existing browser with the provided ID. Returns NULL if no such |