Skip to content

Commit

Permalink
Use the regular window header for maximized v1 apps
Browse files Browse the repository at this point in the history
BUG=321799
TEST=Manual, see bug

Review URL: https://codereview.chromium.org/77733011

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236802 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
pkotwicz@chromium.org committed Nov 22, 2013
1 parent d4b70fe commit 14af0c8
Show file tree
Hide file tree
Showing 33 changed files with 23 additions and 749 deletions.
9 changes: 0 additions & 9 deletions ash/resources/ash_resources.grd
Original file line number Diff line number Diff line change
Expand Up @@ -204,15 +204,6 @@

<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_BUTTON_SEPARATOR" file="common/window_button_separator.png" />

<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_FULLSCREEN_CLOSE" file="common/window_close_fullscreen_normal.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_FULLSCREEN_CLOSE_H" file="common/window_close_fullscreen_hover.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_FULLSCREEN_CLOSE_P" file="common/window_close_fullscreen_pressed.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_FULLSCREEN_RESTORE" file="common/window_size_fullscreen_normal.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_FULLSCREEN_RESTORE_H" file="common/window_size_fullscreen_hover.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_FULLSCREEN_RESTORE_P" file="common/window_size_fullscreen_pressed.png" />

<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_FULLSCREEN_SHADOW" file="common/window_fullscreen_shadow.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_FULLSCREEN_SHADOW_RTL" file="common/window_fullscreen_shadow_rtl.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_HEADER_BASE_ACTIVE" file="common/window_header_base_active.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_HEADER_BASE_INACTIVE" file="common/window_header_base_inactive.png" />
<structure type="chrome_scaled_image" name="IDR_AURA_WINDOW_HEADER_BASE_INCOGNITO_ACTIVE" file="common/window_header_base_incognito_active.png" />
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
27 changes: 6 additions & 21 deletions ash/wm/caption_buttons/frame_caption_button_container_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -124,26 +124,15 @@ gfx::Size FrameCaptionButtonContainerView::GetPreferredSize() {
width += kDistanceBetweenButtons;
first_visible = false;
}
gfx::Insets insets(GetInsets());
return gfx::Size(width + insets.width(),
close_button_->GetPreferredSize().height() + insets.height());
return gfx::Size(width, close_button_->GetPreferredSize().height());
}

void FrameCaptionButtonContainerView::Layout() {
SetButtonImages(minimize_button_,
IDR_AURA_WINDOW_MINIMIZE_SHORT,
IDR_AURA_WINDOW_MINIMIZE_SHORT_H,
IDR_AURA_WINDOW_MINIMIZE_SHORT_P);
if (header_style_ == HEADER_STYLE_MAXIMIZED_HOSTED_APP) {
SetButtonImages(size_button_,
IDR_AURA_WINDOW_FULLSCREEN_RESTORE,
IDR_AURA_WINDOW_FULLSCREEN_RESTORE_H,
IDR_AURA_WINDOW_FULLSCREEN_RESTORE_P);
SetButtonImages(close_button_,
IDR_AURA_WINDOW_FULLSCREEN_CLOSE,
IDR_AURA_WINDOW_FULLSCREEN_CLOSE_H,
IDR_AURA_WINDOW_FULLSCREEN_CLOSE_P);
} else if (header_style_ == HEADER_STYLE_SHORT) {
if (header_style_ == HEADER_STYLE_SHORT) {
// The new assets only make sense if the window is maximized or fullscreen
// because we usually use a black header in this case.
if ((frame_->IsMaximized() || frame_->IsFullscreen()) &&
Expand Down Expand Up @@ -178,16 +167,14 @@ void FrameCaptionButtonContainerView::Layout() {
IDR_AURA_WINDOW_CLOSE_P);
}

gfx::Insets insets(GetInsets());
int x = insets.left();
int y_inset = insets.top();
int x = 0;
for (int i = 0; i < child_count(); ++i) {
views::View* child = child_at(i);
if (!child->visible())
continue;

gfx::Size size = child->GetPreferredSize();
child->SetBounds(x, y_inset, size.width(), size.height());
child->SetBounds(x, 0, size.width(), size.height());
x += size.width() + kDistanceBetweenButtons;
}
}
Expand All @@ -199,10 +186,8 @@ const char* FrameCaptionButtonContainerView::GetClassName() const {
void FrameCaptionButtonContainerView::OnPaint(gfx::Canvas* canvas) {
views::View::OnPaint(canvas);

// The alternate button style and AppNonClientFrameViewAsh do not paint the
// button separator.
if (header_style_ != HEADER_STYLE_MAXIMIZED_HOSTED_APP &&
!switches::UseAlternateFrameCaptionButtonStyle()) {
// The alternate button style does not paint the button separator.
if (!switches::UseAlternateFrameCaptionButtonStyle()) {
// We should have at most two visible buttons. The button separator is
// always painted underneath the close button regardless of whether a
// button other than the close button is visible.
Expand Down
5 changes: 1 addition & 4 deletions ash/wm/caption_buttons/frame_caption_button_container_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,7 @@ class ASH_EXPORT FrameCaptionButtonContainerView
HEADER_STYLE_SHORT,

// Restored tabbed browser windows.
HEADER_STYLE_TALL,

// AppNonClientFrameViewAsh.
HEADER_STYLE_MAXIMIZED_HOSTED_APP
HEADER_STYLE_TALL
};

// |frame| is the views::Widget that the caption buttons act on.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,29 +172,6 @@ TEST_F(FrameCaptionButtonContainerViewTestOldStyle, ButtonVisibility) {
&container3, *t3.close_button(), *t3.close_button()));
}

// Test the layout when a border is set on the container.
TEST_F(FrameCaptionButtonContainerViewTestOldStyle, LayoutBorder) {
const int kTopInset = 1;
const int kLeftInset = 2;
const int kBottomInset = 3;
const int kRightInset = 4;

scoped_ptr<views::Widget> widget(CreateTestWidget(MAXIMIZE_ALLOWED));
FrameCaptionButtonContainerView container(widget.get(),
FrameCaptionButtonContainerView::MINIMIZE_ALLOWED);
container.set_border(views::Border::CreateEmptyBorder(
kTopInset, kLeftInset, kBottomInset, kRightInset));
container.Layout();
FrameCaptionButtonContainerView::TestApi t(&container);

EXPECT_EQ(kLeftInset, t.size_button()->x());
EXPECT_EQ(kTopInset, t.close_button()->y());
EXPECT_EQ(container.GetPreferredSize().height(),
t.close_button()->bounds().bottom() + kBottomInset);
EXPECT_EQ(container.GetPreferredSize().width(),
t.close_button()->bounds().right() + kRightInset);
}

// Test how the header style affects which images are used for the buttons.
TEST_F(FrameCaptionButtonContainerViewTestOldStyle, HeaderStyle) {
scoped_ptr<views::Widget> widget(CreateTestWidget(MAXIMIZE_ALLOWED));
Expand Down Expand Up @@ -252,19 +229,6 @@ TEST_F(FrameCaptionButtonContainerViewTestOldStyle, HeaderStyle) {
IDR_AURA_WINDOW_MAXIMIZED_CLOSE2,
IDR_AURA_WINDOW_MAXIMIZED_CLOSE2_H,
IDR_AURA_WINDOW_MAXIMIZED_CLOSE2_P));

// AppNonClientFrameViewAsh has a dedicated set of images.
container.set_header_style(
FrameCaptionButtonContainerView::HEADER_STYLE_MAXIMIZED_HOSTED_APP);
container.Layout();
EXPECT_TRUE(ImagesMatch(t.size_button(),
IDR_AURA_WINDOW_FULLSCREEN_RESTORE,
IDR_AURA_WINDOW_FULLSCREEN_RESTORE_H,
IDR_AURA_WINDOW_FULLSCREEN_RESTORE_P));
EXPECT_TRUE(ImagesMatch(t.close_button(),
IDR_AURA_WINDOW_FULLSCREEN_CLOSE,
IDR_AURA_WINDOW_FULLSCREEN_CLOSE_H,
IDR_AURA_WINDOW_FULLSCREEN_CLOSE_P));
}

class FrameCaptionButtonContainerViewTestAlternateStyle
Expand Down
26 changes: 2 additions & 24 deletions chrome/browser/ui/ash/accelerator_commands_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,13 @@ IN_PROC_BROWSER_TEST_F(AcceleratorCommandsBrowserTest, ToggleFullscreen) {
EXPECT_FALSE(browser_window->IsMaximized());
EXPECT_FALSE(browser_window->IsFullscreen());

// 3) ToggleFullscreen() should maximize v1 app browser windows which use
// AppNonClientFrameViewAsh.
// TODO(pkotwicz): Figure out if we actually want this behavior.
// 3) ToggleFullscreen() should put v1 apps into non-immersive fullscreen.
Browser::CreateParams browser_create_params(Browser::TYPE_POPUP,
browser()->profile(), chrome::HOST_DESKTOP_TYPE_NATIVE);
#if defined(OS_WIN)
browser_create_params.host_desktop_type = chrome::HOST_DESKTOP_TYPE_ASH;
#endif // OS_WIN
browser_create_params.app_name = "Test";
browser_create_params.app_type = Browser::APP_TYPE_HOST;

Browser* app_host_browser = new Browser(browser_create_params);
ASSERT_TRUE(app_host_browser->is_app());
Expand All @@ -108,25 +105,6 @@ IN_PROC_BROWSER_TEST_F(AcceleratorCommandsBrowserTest, ToggleFullscreen) {
EXPECT_FALSE(browser_window->IsMaximized());
EXPECT_FALSE(browser_window->IsFullscreen());

ash::accelerators::ToggleFullscreen();
EXPECT_TRUE(browser_window->IsMaximized());

ash::accelerators::ToggleFullscreen();
EXPECT_FALSE(browser_window->IsMaximized());
EXPECT_FALSE(browser_window->IsFullscreen());

// 4) ToggleFullscreen() should put child windows of v1 apps into
// non-immersive fullscreen.
browser_create_params.host_desktop_type = chrome::HOST_DESKTOP_TYPE_NATIVE;
browser_create_params.app_type = Browser::APP_TYPE_CHILD;
Browser* app_child_browser = new Browser(browser_create_params);
ASSERT_TRUE(app_child_browser->is_app());
AddBlankTabAndShow(app_child_browser);
browser_window = app_child_browser->window();
ASSERT_TRUE(browser_window->IsActive());
EXPECT_FALSE(browser_window->IsMaximized());
EXPECT_FALSE(browser_window->IsFullscreen());

ash::accelerators::ToggleFullscreen();
EXPECT_TRUE(browser_window->IsFullscreen());
EXPECT_FALSE(IsInImmersiveFullscreen(browser_window));
Expand All @@ -135,7 +113,7 @@ IN_PROC_BROWSER_TEST_F(AcceleratorCommandsBrowserTest, ToggleFullscreen) {
EXPECT_FALSE(browser_window->IsMaximized());
EXPECT_FALSE(browser_window->IsFullscreen());

// 5) ToggleFullscreen() should put popup browser windows into non-immersive
// 4) ToggleFullscreen() should put popup browser windows into non-immersive
// fullscreen.
browser_create_params.app_name = "";
Browser* popup_browser = new Browser(browser_create_params);
Expand Down
Loading

0 comments on commit 14af0c8

Please sign in to comment.