summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/chromeos/frame/browser_view.cc7
-rw-r--r--chrome/browser/chromeos/frame/browser_view.h4
-rw-r--r--chrome/browser/chromeos/frame/panel_browser_view.cc18
-rw-r--r--chrome/browser/chromeos/frame/panel_browser_view.h5
-rw-r--r--chrome/browser/sessions/session_restore.cc20
-rw-r--r--chrome/browser/sessions/session_service.cc4
-rw-r--r--chrome/browser/ui/browser_browsertest.cc14
-rw-r--r--chrome/browser/ui/panels/panel_browser_view.cc5
-rw-r--r--chrome/browser/ui/panels/panel_browser_view.h4
-rw-r--r--chrome/browser/ui/views/accessibility_event_router_views_unittest.cc12
-rw-r--r--chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc12
-rw-r--r--chrome/browser/ui/views/chrome_views_delegate.cc30
-rw-r--r--chrome/browser/ui/views/chrome_views_delegate.h10
-rw-r--r--chrome/browser/ui/views/frame/browser_frame.cc3
-rw-r--r--chrome/browser/ui/views/frame/browser_view.cc28
-rw-r--r--chrome/browser/ui/views/frame/browser_view.h7
-rw-r--r--chrome/browser/ui/views/menu_model_adapter_test.cc13
17 files changed, 107 insertions, 89 deletions
diff --git a/chrome/browser/chromeos/frame/browser_view.cc b/chrome/browser/chromeos/frame/browser_view.cc
index c25ccbd..9efb707 100644
--- a/chrome/browser/chromeos/frame/browser_view.cc
+++ b/chrome/browser/chromeos/frame/browser_view.cc
@@ -449,7 +449,9 @@ void BrowserView::ChildPreferredSizeChanged(View* child) {
Layout();
}
-bool BrowserView::GetSavedWindowBounds(gfx::Rect* bounds) const {
+bool BrowserView::GetSavedWindowPlacement(
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const {
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kChromeosFrame)) {
// Typically we don't request a full screen size. This means we'll request a
// non-full screen size, layout/paint at that size, then the window manager
@@ -457,9 +459,10 @@ bool BrowserView::GetSavedWindowBounds(gfx::Rect* bounds) const {
// resize/paint. To avoid this we always request a full screen size.
*bounds = gfx::Screen::GetMonitorWorkAreaNearestWindow(
GTK_WIDGET(GetWidget()->GetNativeWindow()));
+ *show_state = ui::SHOW_STATE_NORMAL;
return true;
}
- return ::BrowserView::GetSavedWindowBounds(bounds);
+ return ::BrowserView::GetSavedWindowPlacement(bounds, show_state);
}
void BrowserView::Cut() {
diff --git a/chrome/browser/chromeos/frame/browser_view.h b/chrome/browser/chromeos/frame/browser_view.h
index 9d7ae95..b938e21 100644
--- a/chrome/browser/chromeos/frame/browser_view.h
+++ b/chrome/browser/chromeos/frame/browser_view.h
@@ -61,7 +61,9 @@ class BrowserView : public ::BrowserView,
virtual void FocusChromeOSStatus() OVERRIDE;
virtual views::LayoutManager* CreateLayoutManager() const OVERRIDE;
virtual void ChildPreferredSizeChanged(View* child) OVERRIDE;
- virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const OVERRIDE;
+ virtual bool GetSavedWindowPlacement(
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const OVERRIDE;
virtual void Cut() OVERRIDE;
virtual void Copy() OVERRIDE;
virtual void Paste() OVERRIDE;
diff --git a/chrome/browser/chromeos/frame/panel_browser_view.cc b/chrome/browser/chromeos/frame/panel_browser_view.cc
index fba8fa8..de39b0e 100644
--- a/chrome/browser/chromeos/frame/panel_browser_view.cc
+++ b/chrome/browser/chromeos/frame/panel_browser_view.cc
@@ -110,16 +110,16 @@ WindowOpenDisposition PanelBrowserView::GetDispositionForPopupBounds(
return chromeos::BrowserView::DispositionForPopupBounds(bounds);
}
-bool PanelBrowserView::GetSavedWindowBounds(gfx::Rect* bounds) const {
- bool res = ::BrowserView::GetSavedWindowBounds(bounds);
- if (res)
+bool PanelBrowserView::GetSavedWindowPlacement(
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const {
+ bool result = ::BrowserView::GetSavedWindowPlacement(bounds, show_state);
+ if (result) {
LimitBounds(bounds);
- return res;
-}
-
-bool PanelBrowserView::GetSavedMaximizedState(bool* maximized) const {
- // Panels have no maximized state.
- return false;
+ // Panels have no maximized state.
+ *show_state = ui::SHOW_STATE_NORMAL;
+ }
+ return result;
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/chromeos/frame/panel_browser_view.h b/chrome/browser/chromeos/frame/panel_browser_view.h
index 819419e..99ec9ab 100644
--- a/chrome/browser/chromeos/frame/panel_browser_view.h
+++ b/chrome/browser/chromeos/frame/panel_browser_view.h
@@ -35,8 +35,9 @@ class PanelBrowserView : public ::BrowserView,
virtual void UpdateTitleBar() OVERRIDE;
virtual WindowOpenDisposition GetDispositionForPopupBounds(
const gfx::Rect& bounds) OVERRIDE;
- virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const OVERRIDE;
- virtual bool GetSavedMaximizedState(bool* maximized) const OVERRIDE;
+ virtual bool GetSavedWindowPlacement(
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const OVERRIDE;
// views::Widget::Observer overrides.
virtual void OnWidgetActivationChanged(views::Widget* widget,
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc
index b18eb7b..2cbe188 100644
--- a/chrome/browser/sessions/session_restore.cc
+++ b/chrome/browser/sessions/session_restore.cc
@@ -598,6 +598,15 @@ class SessionRestoreImpl : public NotificationObserver {
// tabbed browsers exist.
Browser* last_browser = NULL;
bool has_tabbed_browser = false;
+
+ // Determine if there is a visible window.
+ bool has_visible_browser = false;
+ for (std::vector<SessionWindow*>::iterator i = windows->begin();
+ i != windows->end(); ++i) {
+ if ((*i)->show_state != ui::SHOW_STATE_MINIMIZED)
+ has_visible_browser = true;
+ }
+
for (std::vector<SessionWindow*>::iterator i = windows->begin();
i != windows->end(); ++i) {
Browser* browser = NULL;
@@ -613,10 +622,15 @@ class SessionRestoreImpl : public NotificationObserver {
chromeos::BootTimesLoader::Get()->AddLoginTimeMarker(
"SessionRestore-CreateRestoredBrowser-Start", false);
#endif
+ // Show the first window if none are visible.
+ ui::WindowShowState show_state = (*i)->show_state;
+ if (!has_visible_browser) {
+ show_state = ui::SHOW_STATE_NORMAL;
+ has_visible_browser = true;
+ }
+
browser = CreateRestoredBrowser(
- static_cast<Browser::Type>((*i)->type),
- (*i)->bounds,
- (*i)->show_state);
+ static_cast<Browser::Type>((*i)->type), (*i)->bounds, show_state);
#if defined(OS_CHROMEOS)
chromeos::BootTimesLoader::Get()->AddLoginTimeMarker(
"SessionRestore-CreateRestoredBrowser-End", false);
diff --git a/chrome/browser/sessions/session_service.cc b/chrome/browser/sessions/session_service.cc
index dbb0f94..8e3f1d73 100644
--- a/chrome/browser/sessions/session_service.cc
+++ b/chrome/browser/sessions/session_service.cc
@@ -970,9 +970,11 @@ bool SessionService::CreateTabsAndWindows(
payload.y,
payload.w,
payload.h);
+ // SHOW_STATE_INACTIVE is not persisted.
ui::WindowShowState show_state = ui::SHOW_STATE_NORMAL;
if (payload.show_state > ui::SHOW_STATE_DEFAULT &&
- payload.show_state < ui::SHOW_STATE_MAX) {
+ payload.show_state < ui::SHOW_STATE_MAX &&
+ payload.show_state != ui::SHOW_STATE_INACTIVE) {
show_state = static_cast<ui::WindowShowState>(payload.show_state);
} else {
NOTREACHED();
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc
index 9735848..61b2020 100644
--- a/chrome/browser/ui/browser_browsertest.cc
+++ b/chrome/browser/ui/browser_browsertest.cc
@@ -974,6 +974,20 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, StartMaximized) {
}
}
+// Makes sure the browser doesn't crash when
+// set_show_state(ui::SHOW_STATE_MINIMIZED) has been invoked.
+IN_PROC_BROWSER_TEST_F(BrowserTest, StartMinimized) {
+ // Can't test TYPE_PANEL as they are currently created differently (and can't
+ // end up minimized).
+ Browser::Type types[] = { Browser::TYPE_TABBED, Browser::TYPE_POPUP };
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(types); ++i) {
+ Browser* min_browser = new Browser(types[i], browser()->profile());
+ min_browser->set_show_state(ui::SHOW_STATE_MINIMIZED);
+ min_browser->InitBrowserWindow();
+ AddBlankTabAndShow(min_browser);
+ }
+}
+
// TODO(ben): this test was never enabled. It has bit-rotted since being added.
// It originally lived in browser_unittest.cc, but has been moved here to make
// room for real browser unit tests.
diff --git a/chrome/browser/ui/panels/panel_browser_view.cc b/chrome/browser/ui/panels/panel_browser_view.cc
index 603b6d6..a6ffc55 100644
--- a/chrome/browser/ui/panels/panel_browser_view.cc
+++ b/chrome/browser/ui/panels/panel_browser_view.cc
@@ -107,8 +107,11 @@ void PanelBrowserView::UpdateTitleBar() {
GetFrameView()->UpdateTitleBar();
}
-bool PanelBrowserView::GetSavedWindowBounds(gfx::Rect* bounds) const {
+bool PanelBrowserView::GetSavedWindowPlacement(
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const {
*bounds = GetPanelBounds();
+ *show_state = ui::SHOW_STATE_NORMAL;
return true;
}
diff --git a/chrome/browser/ui/panels/panel_browser_view.h b/chrome/browser/ui/panels/panel_browser_view.h
index 5ecbfbe..c855fd0 100644
--- a/chrome/browser/ui/panels/panel_browser_view.h
+++ b/chrome/browser/ui/panels/panel_browser_view.h
@@ -56,7 +56,9 @@ class PanelBrowserView : public BrowserView,
virtual bool CanMaximize() const OVERRIDE;
virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
virtual void UpdateTitleBar() OVERRIDE;
- virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const OVERRIDE;
+ virtual bool GetSavedWindowPlacement(
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const OVERRIDE;
virtual bool AcceleratorPressed(const views::Accelerator& accelerator)
OVERRIDE;
diff --git a/chrome/browser/ui/views/accessibility_event_router_views_unittest.cc b/chrome/browser/ui/views/accessibility_event_router_views_unittest.cc
index 24649bd..3526b0a 100644
--- a/chrome/browser/ui/views/accessibility_event_router_views_unittest.cc
+++ b/chrome/browser/ui/views/accessibility_event_router_views_unittest.cc
@@ -35,14 +35,12 @@ class AccessibilityViewsDelegate : public views::ViewsDelegate {
virtual void SaveWindowPlacement(const views::Widget* window,
const std::wstring& window_name,
const gfx::Rect& bounds,
- bool maximized) OVERRIDE {
+ ui::WindowShowState show_state) OVERRIDE {
}
- virtual bool GetSavedWindowBounds(const std::wstring& window_name,
- gfx::Rect* bounds) const OVERRIDE {
- return false;
- }
- virtual bool GetSavedMaximizedState(const std::wstring& window_name,
- bool* maximized) const OVERRIDE {
+ virtual bool GetSavedWindowPlacement(
+ const std::wstring& window_name,
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const OVERRIDE {
return false;
}
virtual void NotifyAccessibilityEvent(
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
index c033a9d..0667da3 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
@@ -74,13 +74,11 @@ class ViewsDelegateImpl : public views::ViewsDelegate {
virtual void SaveWindowPlacement(const views::Widget* window,
const std::wstring& window_name,
const gfx::Rect& bounds,
- bool maximized) OVERRIDE {}
- virtual bool GetSavedWindowBounds(const std::wstring& window_name,
- gfx::Rect* bounds) const OVERRIDE {
- return false;
- }
- virtual bool GetSavedMaximizedState(const std::wstring& window_name,
- bool* maximized) const OVERRIDE {
+ ui::WindowShowState show_state) OVERRIDE {}
+ virtual bool GetSavedWindowPlacement(
+ const std::wstring& window_name,
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const OVERRIDE {
return false;
}
diff --git a/chrome/browser/ui/views/chrome_views_delegate.cc b/chrome/browser/ui/views/chrome_views_delegate.cc
index a471e6f..a6b7eef 100644
--- a/chrome/browser/ui/views/chrome_views_delegate.cc
+++ b/chrome/browser/ui/views/chrome_views_delegate.cc
@@ -61,7 +61,7 @@ views::View* ChromeViewsDelegate::GetDefaultParentView() {
void ChromeViewsDelegate::SaveWindowPlacement(const views::Widget* window,
const std::wstring& window_name,
const gfx::Rect& bounds,
- bool maximized) {
+ ui::WindowShowState show_state) {
PrefService* prefs = GetPrefsForWindow(window);
if (!prefs)
return;
@@ -73,7 +73,8 @@ void ChromeViewsDelegate::SaveWindowPlacement(const views::Widget* window,
window_preferences->SetInteger("top", bounds.y());
window_preferences->SetInteger("right", bounds.right());
window_preferences->SetInteger("bottom", bounds.bottom());
- window_preferences->SetBoolean("maximized", maximized);
+ window_preferences->SetBoolean("maximized",
+ show_state == ui::SHOW_STATE_MAXIMIZED);
scoped_ptr<WindowSizer::MonitorInfoProvider> monitor_info_provider(
WindowSizer::CreateDefaultMonitorInfoProvider());
@@ -85,8 +86,10 @@ void ChromeViewsDelegate::SaveWindowPlacement(const views::Widget* window,
window_preferences->SetInteger("work_area_bottom", work_area.bottom());
}
-bool ChromeViewsDelegate::GetSavedWindowBounds(const std::wstring& window_name,
- gfx::Rect* bounds) const {
+bool ChromeViewsDelegate::GetSavedWindowPlacement(
+ const std::wstring& window_name,
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const {
PrefService* prefs = g_browser_process->local_state();
if (!prefs)
return false;
@@ -102,22 +105,13 @@ bool ChromeViewsDelegate::GetSavedWindowBounds(const std::wstring& window_name,
return false;
bounds->SetRect(left, top, right - left, bottom - top);
- return true;
-}
-
-bool ChromeViewsDelegate::GetSavedMaximizedState(
- const std::wstring& window_name,
- bool* maximized) const {
- PrefService* prefs = g_browser_process->local_state();
- if (!prefs)
- return false;
- DCHECK(prefs->FindPreference(WideToUTF8(window_name).c_str()));
- const DictionaryValue* dictionary =
- prefs->GetDictionary(WideToUTF8(window_name).c_str());
+ bool maximized = false;
+ if (dictionary)
+ dictionary->GetBoolean("maximized", &maximized);
+ *show_state = maximized ? ui::SHOW_STATE_MAXIMIZED : ui::SHOW_STATE_NORMAL;
- return dictionary && dictionary->GetBoolean("maximized", maximized) &&
- maximized;
+ return true;
}
void ChromeViewsDelegate::NotifyAccessibilityEvent(
diff --git a/chrome/browser/ui/views/chrome_views_delegate.h b/chrome/browser/ui/views/chrome_views_delegate.h
index fb3121e..a874348 100644
--- a/chrome/browser/ui/views/chrome_views_delegate.h
+++ b/chrome/browser/ui/views/chrome_views_delegate.h
@@ -25,11 +25,11 @@ class ChromeViewsDelegate : public views::ViewsDelegate {
virtual void SaveWindowPlacement(const views::Widget* window,
const std::wstring& window_name,
const gfx::Rect& bounds,
- bool maximized) OVERRIDE;
- virtual bool GetSavedWindowBounds(const std::wstring& window_name,
- gfx::Rect* bounds) const OVERRIDE;
- virtual bool GetSavedMaximizedState(const std::wstring& window_name,
- bool* maximized) const OVERRIDE;
+ ui::WindowShowState show_state) OVERRIDE;
+ virtual bool GetSavedWindowPlacement(
+ const std::wstring& window_name,
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const OVERRIDE;
virtual void NotifyAccessibilityEvent(
views::View* view, ui::AccessibilityTypes::Event event_type) OVERRIDE;
virtual void NotifyMenuItemFocused(
diff --git a/chrome/browser/ui/views/frame/browser_frame.cc b/chrome/browser/ui/views/frame/browser_frame.cc
index 20f685a..31d2b67b 100644
--- a/chrome/browser/ui/views/frame/browser_frame.cc
+++ b/chrome/browser/ui/views/frame/browser_frame.cc
@@ -48,8 +48,7 @@ void BrowserFrame::InitBrowserFrame() {
// Typed panel/popup can only return a size once the widget has been
// created.
params.bounds = browser_view_->browser()->GetSavedWindowBounds();
- params.maximize = browser_view_->browser()->GetSavedWindowShowState() ==
- ui::SHOW_STATE_MAXIMIZED;
+ params.show_state = browser_view_->browser()->GetSavedWindowShowState();
}
Init(params);
#if defined(OS_CHROMEOS)
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index d246005..4020129 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -790,9 +790,7 @@ bool BrowserView::IsMaximized() const {
}
bool BrowserView::IsMinimized() const {
- // TODO(dhollowa): Add support for session restore of minimized state.
- // http://crbug.com/43274
- return false;
+ return frame_->IsMinimized();
}
void BrowserView::SetFullscreen(bool fullscreen) {
@@ -1634,23 +1632,22 @@ std::wstring BrowserView::GetWindowName() const {
}
void BrowserView::SaveWindowPlacement(const gfx::Rect& bounds,
- bool maximized) {
- // TODO(dhollowa): Add support for session restore of minimized state.
- // http://crbug.com/43274
-
+ ui::WindowShowState show_state) {
// If IsFullscreen() is true, we've just changed into fullscreen mode, and
// we're catching the going-into-fullscreen sizing and positioning calls,
// which we want to ignore.
if (!IsFullscreen() && browser_->ShouldSaveWindowPlacement()) {
- WidgetDelegate::SaveWindowPlacement(bounds, maximized);
- browser_->SaveWindowPlacement(bounds,
- maximized ? ui::SHOW_STATE_MAXIMIZED :
- ui::SHOW_STATE_NORMAL);
+ WidgetDelegate::SaveWindowPlacement(bounds, show_state);
+ browser_->SaveWindowPlacement(bounds, show_state);
}
}
-bool BrowserView::GetSavedWindowBounds(gfx::Rect* bounds) const {
+bool BrowserView::GetSavedWindowPlacement(
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const {
*bounds = browser_->GetSavedWindowBounds();
+ *show_state = browser_->GetSavedWindowShowState();
+
if ((browser_->is_type_popup() || browser_->is_type_panel())
&& !browser_->is_devtools()) {
// We are a popup window. The value passed in |bounds| represents two
@@ -1689,13 +1686,6 @@ bool BrowserView::GetSavedWindowBounds(gfx::Rect* bounds) const {
return true;
}
-bool BrowserView::GetSavedMaximizedState(bool* maximized) const {
- // TODO(dhollowa): Add support for session restore of minimized state.
- // http://crbug.com/43274
- *maximized = browser_->GetSavedWindowShowState() == ui::SHOW_STATE_MAXIMIZED;
- return true;
-}
-
views::View* BrowserView::GetContentsView() {
return contents_container_;
}
diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h
index 9cf273c..bb660ad 100644
--- a/chrome/browser/ui/views/frame/browser_view.h
+++ b/chrome/browser/ui/views/frame/browser_view.h
@@ -394,9 +394,10 @@ class BrowserView : public BrowserBubbleHost,
virtual bool ExecuteWindowsCommand(int command_id) OVERRIDE;
virtual std::wstring GetWindowName() const OVERRIDE;
virtual void SaveWindowPlacement(const gfx::Rect& bounds,
- bool maximized) OVERRIDE;
- virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const OVERRIDE;
- virtual bool GetSavedMaximizedState(bool* maximized) const OVERRIDE;
+ ui::WindowShowState show_state) OVERRIDE;
+ virtual bool GetSavedWindowPlacement(
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const OVERRIDE;
virtual views::View* GetContentsView() OVERRIDE;
virtual views::ClientView* CreateClientView(views::Widget* widget) OVERRIDE;
virtual void OnWindowBeginUserBoundsChange() OVERRIDE;
diff --git a/chrome/browser/ui/views/menu_model_adapter_test.cc b/chrome/browser/ui/views/menu_model_adapter_test.cc
index a13e165..39a15da 100644
--- a/chrome/browser/ui/views/menu_model_adapter_test.cc
+++ b/chrome/browser/ui/views/menu_model_adapter_test.cc
@@ -44,16 +44,13 @@ class TestViewsDelegate : public views::ViewsDelegate {
virtual void SaveWindowPlacement(const views::Widget* widget,
const std::wstring& window_name,
const gfx::Rect& bounds,
- bool maximized) OVERRIDE {
+ ui::WindowShowState show_state) OVERRIDE {
}
- virtual bool GetSavedWindowBounds(const std::wstring& window_name,
- gfx::Rect* bounds) const OVERRIDE {
- return false;
- }
-
- virtual bool GetSavedMaximizedState(const std::wstring& window_name,
- bool* maximized) const OVERRIDE {
+ virtual bool GetSavedWindowPlacement(
+ const std::wstring& window_name,
+ gfx::Rect* bounds,
+ ui::WindowShowState* show_state) const OVERRIDE {
return false;
}