Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1344)

Unified Diff: chrome/browser/window_sizer.cc

Issue 79070: createWindow api call. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/window_sizer.h ('k') | chrome/common/temp_scaffolding_stubs.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/window_sizer.cc
===================================================================
--- chrome/browser/window_sizer.cc (revision 14694)
+++ chrome/browser/window_sizer.cc (working copy)
@@ -88,8 +88,9 @@
// and persistent state from the browser window and the user's profile.
class DefaultStateProvider : public WindowSizer::StateProvider {
public:
- explicit DefaultStateProvider(const std::wstring& app_name)
- : app_name_(app_name) {
+ explicit DefaultStateProvider(const std::wstring& app_name, Browser* browser)
+ : app_name_(app_name),
+ browser_(browser) {
}
// Overridden from WindowSizer::StateProvider:
@@ -125,24 +126,38 @@
if (!app_name_.empty())
return false;
- BrowserList::const_reverse_iterator it = BrowserList::begin_last_active();
- BrowserList::const_reverse_iterator end = BrowserList::end_last_active();
- for (; it != end; ++it) {
- Browser* last_active = *it;
- if (last_active && last_active->type() == Browser::TYPE_NORMAL) {
- BrowserWindow* window = last_active->window();
- DCHECK(window);
- *bounds = window->GetNormalBounds();
- return true;
+ // If a reference browser is set, use its window. Otherwise find last
+ // active.
+ BrowserWindow* window = NULL;
+ if (browser_) {
+ window = browser_->window();
+ DCHECK(window);
+ } else {
+ BrowserList::const_reverse_iterator it = BrowserList::begin_last_active();
+ BrowserList::const_reverse_iterator end = BrowserList::end_last_active();
+ for (; (it != end); ++it) {
+ Browser* last_active = *it;
+ if (last_active && last_active->type() == Browser::TYPE_NORMAL) {
+ window = last_active->window();
+ DCHECK(window);
+ break;
+ }
}
}
+ if (window) {
+ *bounds = window->GetNormalBounds();
+ return true;
+ }
+
return false;
}
private:
std::wstring app_name_;
+ // If set, is used as the reference browser for GetLastActiveWindowState.
+ Browser* browser_;
DISALLOW_EVIL_CONSTRUCTORS(DefaultStateProvider);
};
@@ -165,9 +180,10 @@
// static
void WindowSizer::GetBrowserWindowBounds(const std::wstring& app_name,
const gfx::Rect& specified_bounds,
+ Browser* browser,
gfx::Rect* window_bounds,
bool* maximized) {
- const WindowSizer sizer(new DefaultStateProvider(app_name),
+ const WindowSizer sizer(new DefaultStateProvider(app_name, browser),
new DefaultMonitorInfoProvider);
sizer.DetermineWindowBounds(specified_bounds, window_bounds, maximized);
}
@@ -201,7 +217,7 @@
// WindowSizer, private:
WindowSizer::WindowSizer(const std::wstring& app_name) {
- Init(new DefaultStateProvider(app_name),
+ Init(new DefaultStateProvider(app_name, NULL),
new DefaultMonitorInfoProvider);
}
« no previous file with comments | « chrome/browser/window_sizer.h ('k') | chrome/common/temp_scaffolding_stubs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698