diff options
author | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-13 09:13:40 +0000 |
---|---|---|
committer | pkotwicz@chromium.org <pkotwicz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-13 09:13:40 +0000 |
commit | 8d614133b3beb26c8ad20c9fde6efe50bf46c2a5 (patch) | |
tree | 4f7b0e3969b6017e940da7ff6308461925c14f51 | |
parent | 03ff528d5c940588533ad1b66e04679631eec74e (diff) | |
download | chromium_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
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 |