summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-29 05:14:03 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-29 05:14:03 +0000
commit50220030753d7d0ba1fcea95e5f889033bdeb382 (patch)
treef9f86e738cc0db5157239bcc571b31769ffabda9 /chrome
parentb77cb305630599d4d19d4cbf2cbfa8ef59a0ecc9 (diff)
downloadchromium_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
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/browser.cc5
-rw-r--r--chrome/browser/browser.h7
-rw-r--r--chrome/browser/browser_list.cc55
-rw-r--r--chrome/browser/browser_list.h12
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