summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-13 09:13:40 +0000
committerpkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-13 09:13:40 +0000
commit8d614133b3beb26c8ad20c9fde6efe50bf46c2a5 (patch)
tree4f7b0e3969b6017e940da7ff6308461925c14f51
parent03ff528d5c940588533ad1b66e04679631eec74e (diff)
downloadchromium_src-8d614133b3beb26c8ad20c9fde6efe50bf46c2a5.zip
chromium_src-8d614133b3beb26c8ad20c9fde6efe50bf46c2a5.tar.gz
chromium_src-8d614133b3beb26c8ad20c9fde6efe50bf46c2a5.tar.bz2
Make the headers for all windows except for restored tabbed browser windows short
BUG=278355 TEST=See steps in bug Review URL: https://codereview.chromium.org/69953002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@234779 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ash/wm/caption_buttons/frame_caption_button_container_view.h6
-rw-r--r--chrome/browser/ui/views/frame/browser_frame_ash.cc14
-rw-r--r--chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc22
-rw-r--r--chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc36
4 files changed, 10 insertions, 68 deletions
diff --git a/ash/wm/caption_buttons/frame_caption_button_container_view.h b/ash/wm/caption_buttons/frame_caption_button_container_view.h
index bcd5b37..a88ea94 100644
--- a/ash/wm/caption_buttons/frame_caption_button_container_view.h
+++ b/ash/wm/caption_buttons/frame_caption_button_container_view.h
@@ -32,12 +32,10 @@ class ASH_EXPORT FrameCaptionButtonContainerView
MINIMIZE_DISALLOWED
};
enum HeaderStyle {
- // Dialogs, panels, packaged apps, tabbed maximized/fullscreen browser
- // windows.
+ // Default.
HEADER_STYLE_SHORT,
- // Restored tabbed browser windows, popups for browser windows, restored
- // hosted app windows, popups for hosted app windows.
+ // Restored tabbed browser windows.
HEADER_STYLE_TALL,
// AppNonClientFrameViewAsh.
diff --git a/chrome/browser/ui/views/frame/browser_frame_ash.cc b/chrome/browser/ui/views/frame/browser_frame_ash.cc
index d457dce..680e538 100644
--- a/chrome/browser/ui/views/frame/browser_frame_ash.cc
+++ b/chrome/browser/ui/views/frame/browser_frame_ash.cc
@@ -113,20 +113,6 @@ class BrowserFrameAsh::WindowPropertyWatcher : public aura::WindowObserver {
}
}
- virtual void OnWindowBoundsChanged(aura::Window* window,
- const gfx::Rect& old_bounds,
- const gfx::Rect& new_bounds) OVERRIDE {
- // Don't do anything if we don't have our non-client view yet.
- if (!browser_frame_->non_client_view())
- return;
-
- // If the window just moved to the top of the screen, or just moved away
- // from it, invoke Layout() so the header size can change.
- if ((old_bounds.y() == 0 && new_bounds.y() != 0) ||
- (old_bounds.y() != 0 && new_bounds.y() == 0))
- browser_frame_->non_client_view()->Layout();
- }
-
private:
BrowserFrameAsh* browser_frame_ash_;
BrowserFrame* browser_frame_;
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
index 076b7c6..4d19bfb 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
@@ -394,23 +394,11 @@ int BrowserNonClientFrameViewAsh::NonClientTopBorderHeight() const {
}
bool BrowserNonClientFrameViewAsh::UseShortHeader() const {
- // Restored browser -> tall header
- // Maximized browser -> short header
- // Fullscreen browser, no immersive reveal -> hidden or super short light bar
- // Fullscreen browser, immersive reveal -> short header
- // Popup&App window -> tall header
- // Panels use short header and are handled via ash::PanelFrameView.
- // Dialogs use short header and are handled via ash::CustomFrameViewAsh.
- Browser* browser = browser_view()->browser();
- switch (browser->type()) {
- case Browser::TYPE_TABBED:
- return frame()->IsMaximized() || frame()->IsFullscreen();
- case Browser::TYPE_POPUP:
- return false;
- default:
- NOTREACHED();
- return false;
- }
+ // Restored tabbed browser windows use the tall header. All other windows use
+ // the short header.
+ return frame()->IsMaximized() ||
+ frame()->IsFullscreen() ||
+ !browser_view()->IsBrowserTypeNormal();
}
bool BrowserNonClientFrameViewAsh::UseImmersiveLightbarHeaderStyle() const {
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
index 477e728..623cd0a 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
@@ -23,7 +23,7 @@ using views::Widget;
typedef InProcessBrowserTest BrowserNonClientFrameViewAshTest;
-IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, WindowHeader) {
+IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, NonClientHitTest) {
// We know we're using Views, so static cast.
BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
Widget* widget = browser_view->GetWidget();
@@ -32,13 +32,10 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, WindowHeader) {
static_cast<BrowserNonClientFrameViewAsh*>(
widget->non_client_view()->frame_view());
- // Restored window uses tall header.
+ // Click on the top edge of a restored window hits the top edge resize handle.
const int kWindowWidth = 300;
const int kWindowHeight = 290;
widget->SetBounds(gfx::Rect(10, 10, kWindowWidth, kWindowHeight));
- EXPECT_FALSE(frame_view->UseShortHeader());
-
- // Click on the top edge of a window hits the top edge resize handle.
gfx::Point top_edge(kWindowWidth / 2, 0);
EXPECT_EQ(HTTOP, frame_view->NonClientHitTest(top_edge));
@@ -46,37 +43,10 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, WindowHeader) {
gfx::Point below_resize(kWindowWidth / 2, ash::kResizeInsideBoundsSize);
EXPECT_EQ(HTCAPTION, frame_view->NonClientHitTest(below_resize));
- // Window at top of screen uses normal header.
- widget->SetBounds(gfx::Rect(10, 0, kWindowWidth, kWindowHeight));
- EXPECT_FALSE(frame_view->UseShortHeader());
-
- // Maximized window uses short header.
- widget->Maximize();
- EXPECT_TRUE(frame_view->UseShortHeader());
-
// Click in the top edge of a maximized window now hits the client area,
// because we want it to fall through to the tab strip and select a tab.
+ widget->Maximize();
EXPECT_EQ(HTCLIENT, frame_view->NonClientHitTest(top_edge));
-
- // Popups tall header.
- Browser* popup = CreateBrowserForPopup(browser()->profile());
- Widget* popup_widget =
- static_cast<BrowserView*>(popup->window())->GetWidget();
- BrowserNonClientFrameViewAsh* popup_frame_view =
- static_cast<BrowserNonClientFrameViewAsh*>(
- popup_widget->non_client_view()->frame_view());
- popup_widget->SetBounds(gfx::Rect(5, 5, 200, 200));
- EXPECT_FALSE(popup_frame_view->UseShortHeader());
-
- // Apps use tall header.
- Browser* app = CreateBrowserForApp("name", browser()->profile());
- Widget* app_widget =
- static_cast<BrowserView*>(app->window())->GetWidget();
- BrowserNonClientFrameViewAsh* app_frame_view =
- static_cast<BrowserNonClientFrameViewAsh*>(
- app_widget->non_client_view()->frame_view());
- app_widget->SetBounds(gfx::Rect(15, 15, 250, 250));
- EXPECT_FALSE(app_frame_view->UseShortHeader());
}
// Test that the frame view does not do any painting in non-immersive