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

Side by Side Diff: ash/wm/frame_painter_unittest.cc

Issue 11194015: Fix crash bugs of FramePainter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/wm/frame_painter.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/wm/frame_painter.h" 5 #include "ash/wm/frame_painter.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/shell_window_ids.h" 8 #include "ash/shell_window_ids.h"
9 #include "ash/test/ash_test_base.h" 9 #include "ash/test/ash_test_base.h"
10 #include "ash/wm/property_util.h" 10 #include "ash/wm/property_util.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 scoped_ptr<FramePainter> painter(new FramePainter); 116 scoped_ptr<FramePainter> painter(new FramePainter);
117 ASSERT_TRUE(FramePainter::instances_); 117 ASSERT_TRUE(FramePainter::instances_);
118 EXPECT_EQ(1u, FramePainter::instances_->size()); 118 EXPECT_EQ(1u, FramePainter::instances_->size());
119 119
120 // Destroying that painter leaves a valid pointer but no instances. 120 // Destroying that painter leaves a valid pointer but no instances.
121 painter.reset(); 121 painter.reset();
122 ASSERT_TRUE(FramePainter::instances_); 122 ASSERT_TRUE(FramePainter::instances_);
123 EXPECT_EQ(0u, FramePainter::instances_->size()); 123 EXPECT_EQ(0u, FramePainter::instances_->size());
124 } 124 }
125 125
126 TEST_F(FramePainterTest, CreateAndDeleteSingleWindow) {
127 // Ensure that creating/deleting a window works well and doesn't cause
128 // crashes. See crbug.com/155634
129 scoped_ptr<Widget> widget(CreateTestWidget());
130 scoped_ptr<FramePainter> painter(new FramePainter);
131 ImageButton size(NULL);
132 ImageButton close(NULL);
133 painter->Init(
134 widget.get(), NULL, &size, &close, FramePainter::SIZE_BUTTON_MAXIMIZES);
135 widget->Show();
136
137 // We only have one window, so it should use a solo header.
138 EXPECT_TRUE(painter->UseSoloWindowHeader());
139
140 // Close the window.
141 widget.reset();
James Cook 2012/10/16 20:51:46 Maybe after this line assert that the root window
Jun Mukai 2012/10/16 21:11:45 Done.
142
143 // Recreate another window again.
144 painter.reset(new FramePainter);
145 widget.reset(CreateTestWidget());
146
147 painter->Init(
148 widget.get(), NULL, &size, &close, FramePainter::SIZE_BUTTON_MAXIMIZES);
149 widget->Show();
150 EXPECT_TRUE(painter->UseSoloWindowHeader());
151 }
152
126 TEST_F(FramePainterTest, UseSoloWindowHeader) { 153 TEST_F(FramePainterTest, UseSoloWindowHeader) {
127 // Create a widget and a painter for it. 154 // Create a widget and a painter for it.
128 scoped_ptr<Widget> w1(CreateTestWidget()); 155 scoped_ptr<Widget> w1(CreateTestWidget());
129 FramePainter p1; 156 FramePainter p1;
130 ImageButton size1(NULL); 157 ImageButton size1(NULL);
131 ImageButton close1(NULL); 158 ImageButton close1(NULL);
132 p1.Init(w1.get(), NULL, &size1, &close1, FramePainter::SIZE_BUTTON_MAXIMIZES); 159 p1.Init(w1.get(), NULL, &size1, &close1, FramePainter::SIZE_BUTTON_MAXIMIZES);
133 w1->Show(); 160 w1->Show();
134 161
135 // We only have one window, so it should use a solo header. 162 // We only have one window, so it should use a solo header.
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 EXPECT_EQ(HTRIGHT, 381 EXPECT_EQ(HTRIGHT,
355 p1.NonClientHitTest(frame, gfx::Point(screen.width() / 2, 382 p1.NonClientHitTest(frame, gfx::Point(screen.width() / 2,
356 screen.height() / 2))); 383 screen.height() / 2)));
357 // A hit into the middle lower area should generate right - not bottom&right. 384 // A hit into the middle lower area should generate right - not bottom&right.
358 EXPECT_EQ(HTRIGHT, 385 EXPECT_EQ(HTRIGHT,
359 p1.NonClientHitTest(frame, gfx::Point(screen.width() / 2, 386 p1.NonClientHitTest(frame, gfx::Point(screen.width() / 2,
360 screen.height() - 1))); 387 screen.height() - 1)));
361 } 388 }
362 389
363 } // namespace ash 390 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/frame_painter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698