| OLD | NEW |
| 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/workspace/workspace_window_resizer.h" | 5 #include "ash/wm/workspace/workspace_window_resizer.h" |
| 6 | 6 |
| 7 #include "ash/display/mouse_cursor_event_filter.h" | 7 #include "ash/display/mouse_cursor_event_filter.h" |
| 8 #include "ash/screen_ash.h" | 8 #include "ash/screen_ash.h" |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/shell_window_ids.h" | 10 #include "ash/shell_window_ids.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 if (*i == window_.get() || *i == window2_.get() || *i == window3_.get()) { | 100 if (*i == window_.get() || *i == window2_.get() || *i == window3_.get()) { |
| 101 if (!result.empty()) | 101 if (!result.empty()) |
| 102 result += " "; | 102 result += " "; |
| 103 result += base::IntToString((*i)->id()); | 103 result += base::IntToString((*i)->id()); |
| 104 } | 104 } |
| 105 } | 105 } |
| 106 return result; | 106 return result; |
| 107 } | 107 } |
| 108 | 108 |
| 109 protected: | 109 protected: |
| 110 void SetGridSize(int grid_size) { | |
| 111 Shell::TestApi shell_test(Shell::GetInstance()); | |
| 112 shell_test.workspace_controller()->SetGridSize(grid_size); | |
| 113 } | |
| 114 | |
| 115 gfx::Point CalculateDragPoint(const WorkspaceWindowResizer& resizer, | 110 gfx::Point CalculateDragPoint(const WorkspaceWindowResizer& resizer, |
| 116 int delta_x, | 111 int delta_x, |
| 117 int delta_y) const { | 112 int delta_y) const { |
| 118 gfx::Point location = resizer.initial_location_in_parent(); | 113 gfx::Point location = resizer.initial_location_in_parent(); |
| 119 location.set_x(location.x() + delta_x); | 114 location.set_x(location.x() + delta_x); |
| 120 location.set_y(location.y() + delta_y); | 115 location.set_y(location.y() + delta_y); |
| 121 return location; | 116 return location; |
| 122 } | 117 } |
| 123 | 118 |
| 124 std::vector<aura::Window*> empty_windows() const { | 119 std::vector<aura::Window*> empty_windows() const { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 154 #endif | 149 #endif |
| 155 | 150 |
| 156 // Assertions around attached window resize dragging from the right with 2 | 151 // Assertions around attached window resize dragging from the right with 2 |
| 157 // windows. | 152 // windows. |
| 158 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_2) { | 153 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_2) { |
| 159 window_->SetBounds(gfx::Rect(0, 300, 400, 300)); | 154 window_->SetBounds(gfx::Rect(0, 300, 400, 300)); |
| 160 window2_->SetBounds(gfx::Rect(400, 200, 100, 200)); | 155 window2_->SetBounds(gfx::Rect(400, 200, 100, 200)); |
| 161 | 156 |
| 162 std::vector<aura::Window*> windows; | 157 std::vector<aura::Window*> windows; |
| 163 windows.push_back(window2_.get()); | 158 windows.push_back(window2_.get()); |
| 164 SetGridSize(0); | |
| 165 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 159 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 166 window_.get(), gfx::Point(), HTRIGHT, windows)); | 160 window_.get(), gfx::Point(), HTRIGHT, windows)); |
| 167 ASSERT_TRUE(resizer.get()); | 161 ASSERT_TRUE(resizer.get()); |
| 168 // Move it 100 to the right, which should expand w1 and push w2. | 162 // Move it 100 to the right, which should expand w1 and push w2. |
| 169 resizer->Drag(CalculateDragPoint(*resizer, 100, 10), 0); | 163 resizer->Drag(CalculateDragPoint(*resizer, 100, 10), 0); |
| 170 EXPECT_EQ("0,300 500x300", window_->bounds().ToString()); | 164 EXPECT_EQ("0,300 500x300", window_->bounds().ToString()); |
| 171 EXPECT_EQ("500,200 100x200", window2_->bounds().ToString()); | 165 EXPECT_EQ("500,200 100x200", window2_->bounds().ToString()); |
| 172 | 166 |
| 173 // Push off the screen, w2 should be resized to its min. | 167 // Push off the screen, w2 should be resized to its min. |
| 174 delegate2_.set_min_size(gfx::Size(20, 20)); | 168 delegate2_.set_min_size(gfx::Size(20, 20)); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 188 EXPECT_EQ("400,200 100x200", window2_->bounds().ToString()); | 182 EXPECT_EQ("400,200 100x200", window2_->bounds().ToString()); |
| 189 } | 183 } |
| 190 | 184 |
| 191 // Assertions around collapsing and expanding. | 185 // Assertions around collapsing and expanding. |
| 192 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_Compress) { | 186 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_Compress) { |
| 193 window_->SetBounds(gfx::Rect( 0, 300, 400, 300)); | 187 window_->SetBounds(gfx::Rect( 0, 300, 400, 300)); |
| 194 window2_->SetBounds(gfx::Rect(400, 200, 100, 200)); | 188 window2_->SetBounds(gfx::Rect(400, 200, 100, 200)); |
| 195 | 189 |
| 196 std::vector<aura::Window*> windows; | 190 std::vector<aura::Window*> windows; |
| 197 windows.push_back(window2_.get()); | 191 windows.push_back(window2_.get()); |
| 198 SetGridSize(0); | |
| 199 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 192 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 200 window_.get(), gfx::Point(), HTRIGHT, windows)); | 193 window_.get(), gfx::Point(), HTRIGHT, windows)); |
| 201 ASSERT_TRUE(resizer.get()); | 194 ASSERT_TRUE(resizer.get()); |
| 202 // Move it 100 to the left, which should expand w2 and collapse w1. | 195 // Move it 100 to the left, which should expand w2 and collapse w1. |
| 203 resizer->Drag(CalculateDragPoint(*resizer, -100, 10), 0); | 196 resizer->Drag(CalculateDragPoint(*resizer, -100, 10), 0); |
| 204 EXPECT_EQ("0,300 300x300", window_->bounds().ToString()); | 197 EXPECT_EQ("0,300 300x300", window_->bounds().ToString()); |
| 205 EXPECT_EQ("300,200 200x200", window2_->bounds().ToString()); | 198 EXPECT_EQ("300,200 200x200", window2_->bounds().ToString()); |
| 206 | 199 |
| 207 // Collapse all the way to w1's min. | 200 // Collapse all the way to w1's min. |
| 208 delegate_.set_min_size(gfx::Size(20, 20)); | 201 delegate_.set_min_size(gfx::Size(20, 20)); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 226 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3) { | 219 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3) { |
| 227 window_->SetBounds(gfx::Rect( 100, 300, 200, 300)); | 220 window_->SetBounds(gfx::Rect( 100, 300, 200, 300)); |
| 228 window2_->SetBounds(gfx::Rect(300, 300, 150, 200)); | 221 window2_->SetBounds(gfx::Rect(300, 300, 150, 200)); |
| 229 window3_->SetBounds(gfx::Rect(450, 300, 100, 200)); | 222 window3_->SetBounds(gfx::Rect(450, 300, 100, 200)); |
| 230 delegate2_.set_min_size(gfx::Size(52, 50)); | 223 delegate2_.set_min_size(gfx::Size(52, 50)); |
| 231 delegate3_.set_min_size(gfx::Size(38, 50)); | 224 delegate3_.set_min_size(gfx::Size(38, 50)); |
| 232 | 225 |
| 233 std::vector<aura::Window*> windows; | 226 std::vector<aura::Window*> windows; |
| 234 windows.push_back(window2_.get()); | 227 windows.push_back(window2_.get()); |
| 235 windows.push_back(window3_.get()); | 228 windows.push_back(window3_.get()); |
| 236 SetGridSize(10); | |
| 237 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 229 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 238 window_.get(), gfx::Point(), HTRIGHT, windows)); | 230 window_.get(), gfx::Point(), HTRIGHT, windows)); |
| 239 ASSERT_TRUE(resizer.get()); | 231 ASSERT_TRUE(resizer.get()); |
| 240 // Move it 100 to the right, which should expand w1 and push w2 and w3. | 232 // Move it 100 to the right, which should expand w1 and push w2 and w3. |
| 241 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); | 233 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); |
| 242 EXPECT_EQ("100,300 300x300", window_->bounds().ToString()); | 234 EXPECT_EQ("100,300 300x300", window_->bounds().ToString()); |
| 243 EXPECT_EQ("400,300 150x200", window2_->bounds().ToString()); | 235 EXPECT_EQ("400,300 150x200", window2_->bounds().ToString()); |
| 244 EXPECT_EQ("550,300 100x200", window3_->bounds().ToString()); | 236 EXPECT_EQ("550,300 100x200", window3_->bounds().ToString()); |
| 245 | 237 |
| 246 // Move it 296, which should now snap to grid and things should compress. | 238 // Move it 300, things should compress. |
| 247 resizer->Drag(CalculateDragPoint(*resizer, 296, -10), 0); | 239 resizer->Drag(CalculateDragPoint(*resizer, 300, -10), 0); |
| 248 EXPECT_EQ("100,300 500x300", window_->bounds().ToString()); | 240 EXPECT_EQ("100,300 500x300", window_->bounds().ToString()); |
| 249 EXPECT_EQ("600,300 120x200", window2_->bounds().ToString()); | 241 EXPECT_EQ("600,300 120x200", window2_->bounds().ToString()); |
| 250 EXPECT_EQ("720,300 80x200", window3_->bounds().ToString()); | 242 EXPECT_EQ("720,300 80x200", window3_->bounds().ToString()); |
| 251 | 243 |
| 252 // Move it so much everything ends up at its min. | 244 // Move it so much the last two end up at their min. |
| 253 resizer->Drag(CalculateDragPoint(*resizer, 798, 50), 0); | 245 resizer->Drag(CalculateDragPoint(*resizer, 800, 50), 0); |
| 254 EXPECT_EQ("100,300 600x300", window_->bounds().ToString()); | 246 EXPECT_EQ("100,300 610x300", window_->bounds().ToString()); |
| 255 EXPECT_EQ("700,300 60x200", window2_->bounds().ToString()); | 247 EXPECT_EQ("710,300 52x200", window2_->bounds().ToString()); |
| 256 EXPECT_EQ("760,300 40x200", window3_->bounds().ToString()); | 248 EXPECT_EQ("762,300 38x200", window3_->bounds().ToString()); |
| 257 | 249 |
| 258 // Revert and make sure everything moves back. | 250 // Revert and make sure everything moves back. |
| 259 resizer->RevertDrag(); | 251 resizer->RevertDrag(); |
| 260 EXPECT_EQ("100,300 200x300", window_->bounds().ToString()); | 252 EXPECT_EQ("100,300 200x300", window_->bounds().ToString()); |
| 261 EXPECT_EQ("300,300 150x200", window2_->bounds().ToString()); | 253 EXPECT_EQ("300,300 150x200", window2_->bounds().ToString()); |
| 262 EXPECT_EQ("450,300 100x200", window3_->bounds().ToString()); | 254 EXPECT_EQ("450,300 100x200", window3_->bounds().ToString()); |
| 263 } | 255 } |
| 264 | 256 |
| 265 // Assertions around attached window resizing (collapsing and expanding) with | 257 // Assertions around attached window resizing (collapsing and expanding) with |
| 266 // 3 windows. | 258 // 3 windows. |
| 267 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3_Compress) { | 259 TEST_F(WorkspaceWindowResizerTest, AttachedResize_RIGHT_3_Compress) { |
| 268 window_->SetBounds(gfx::Rect( 100, 300, 200, 300)); | 260 window_->SetBounds(gfx::Rect( 100, 300, 200, 300)); |
| 269 window2_->SetBounds(gfx::Rect(300, 300, 200, 200)); | 261 window2_->SetBounds(gfx::Rect(300, 300, 200, 200)); |
| 270 window3_->SetBounds(gfx::Rect(450, 300, 100, 200)); | 262 window3_->SetBounds(gfx::Rect(450, 300, 100, 200)); |
| 271 delegate2_.set_min_size(gfx::Size(52, 50)); | 263 delegate2_.set_min_size(gfx::Size(52, 50)); |
| 272 delegate3_.set_min_size(gfx::Size(38, 50)); | 264 delegate3_.set_min_size(gfx::Size(38, 50)); |
| 273 | 265 |
| 274 std::vector<aura::Window*> windows; | 266 std::vector<aura::Window*> windows; |
| 275 windows.push_back(window2_.get()); | 267 windows.push_back(window2_.get()); |
| 276 windows.push_back(window3_.get()); | 268 windows.push_back(window3_.get()); |
| 277 SetGridSize(10); | |
| 278 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 269 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 279 window_.get(), gfx::Point(), HTRIGHT, windows)); | 270 window_.get(), gfx::Point(), HTRIGHT, windows)); |
| 280 ASSERT_TRUE(resizer.get()); | 271 ASSERT_TRUE(resizer.get()); |
| 281 // Move it -100 to the right, which should collapse w1 and expand w2 and w3. | 272 // Move it -100 to the right, which should collapse w1 and expand w2 and w3. |
| 282 resizer->Drag(CalculateDragPoint(*resizer, -100, -10), 0); | 273 resizer->Drag(CalculateDragPoint(*resizer, -100, -10), 0); |
| 283 EXPECT_EQ("100,300 100x300", window_->bounds().ToString()); | 274 EXPECT_EQ("100,300 100x300", window_->bounds().ToString()); |
| 284 EXPECT_EQ("200,300 270x200", window2_->bounds().ToString()); | 275 EXPECT_EQ("200,300 266x200", window2_->bounds().ToString()); |
| 285 EXPECT_EQ("470,300 130x200", window3_->bounds().ToString()); | 276 EXPECT_EQ("466,300 134x200", window3_->bounds().ToString()); |
| 286 | 277 |
| 287 // Move it 100 to the right. | 278 // Move it 100 to the right. |
| 288 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); | 279 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); |
| 289 EXPECT_EQ("100,300 300x300", window_->bounds().ToString()); | 280 EXPECT_EQ("100,300 300x300", window_->bounds().ToString()); |
| 290 EXPECT_EQ("400,300 200x200", window2_->bounds().ToString()); | 281 EXPECT_EQ("400,300 200x200", window2_->bounds().ToString()); |
| 291 EXPECT_EQ("600,300 100x200", window3_->bounds().ToString()); | 282 EXPECT_EQ("600,300 100x200", window3_->bounds().ToString()); |
| 292 | 283 |
| 293 // 100 to the left again. | 284 // 100 to the left again. |
| 294 resizer->Drag(CalculateDragPoint(*resizer, -100, -10), 0); | 285 resizer->Drag(CalculateDragPoint(*resizer, -100, -10), 0); |
| 295 EXPECT_EQ("100,300 100x300", window_->bounds().ToString()); | 286 EXPECT_EQ("100,300 100x300", window_->bounds().ToString()); |
| 296 EXPECT_EQ("200,300 270x200", window2_->bounds().ToString()); | 287 EXPECT_EQ("200,300 266x200", window2_->bounds().ToString()); |
| 297 EXPECT_EQ("470,300 130x200", window3_->bounds().ToString()); | 288 EXPECT_EQ("466,300 134x200", window3_->bounds().ToString()); |
| 298 } | 289 } |
| 299 | 290 |
| 300 // Assertions around collapsing and expanding from the bottom. | 291 // Assertions around collapsing and expanding from the bottom. |
| 301 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_Compress) { | 292 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_Compress) { |
| 302 window_->SetBounds(gfx::Rect( 0, 100, 400, 300)); | 293 window_->SetBounds(gfx::Rect( 0, 100, 400, 300)); |
| 303 window2_->SetBounds(gfx::Rect(400, 400, 100, 200)); | 294 window2_->SetBounds(gfx::Rect(400, 400, 100, 200)); |
| 304 | 295 |
| 305 std::vector<aura::Window*> windows; | 296 std::vector<aura::Window*> windows; |
| 306 windows.push_back(window2_.get()); | 297 windows.push_back(window2_.get()); |
| 307 SetGridSize(0); | |
| 308 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 298 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 309 window_.get(), gfx::Point(), HTBOTTOM, windows)); | 299 window_.get(), gfx::Point(), HTBOTTOM, windows)); |
| 310 ASSERT_TRUE(resizer.get()); | 300 ASSERT_TRUE(resizer.get()); |
| 311 // Move it up 100, which should expand w2 and collapse w1. | 301 // Move it up 100, which should expand w2 and collapse w1. |
| 312 resizer->Drag(CalculateDragPoint(*resizer, 10, -100), 0); | 302 resizer->Drag(CalculateDragPoint(*resizer, 10, -100), 0); |
| 313 EXPECT_EQ("0,100 400x200", window_->bounds().ToString()); | 303 EXPECT_EQ("0,100 400x200", window_->bounds().ToString()); |
| 314 EXPECT_EQ("400,300 100x300", window2_->bounds().ToString()); | 304 EXPECT_EQ("400,300 100x300", window2_->bounds().ToString()); |
| 315 | 305 |
| 316 // Collapse all the way to w1's min. | 306 // Collapse all the way to w1's min. |
| 317 delegate_.set_min_size(gfx::Size(20, 20)); | 307 delegate_.set_min_size(gfx::Size(20, 20)); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 331 } | 321 } |
| 332 | 322 |
| 333 // Assertions around attached window resize dragging from the bottom with 2 | 323 // Assertions around attached window resize dragging from the bottom with 2 |
| 334 // windows. | 324 // windows. |
| 335 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_2) { | 325 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_2) { |
| 336 window_->SetBounds(gfx::Rect( 0, 50, 400, 200)); | 326 window_->SetBounds(gfx::Rect( 0, 50, 400, 200)); |
| 337 window2_->SetBounds(gfx::Rect(0, 250, 200, 100)); | 327 window2_->SetBounds(gfx::Rect(0, 250, 200, 100)); |
| 338 | 328 |
| 339 std::vector<aura::Window*> windows; | 329 std::vector<aura::Window*> windows; |
| 340 windows.push_back(window2_.get()); | 330 windows.push_back(window2_.get()); |
| 341 SetGridSize(0); | |
| 342 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 331 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 343 window_.get(), gfx::Point(), HTBOTTOM, windows)); | 332 window_.get(), gfx::Point(), HTBOTTOM, windows)); |
| 344 ASSERT_TRUE(resizer.get()); | 333 ASSERT_TRUE(resizer.get()); |
| 345 // Move it 100 to the bottom, which should expand w1 and push w2. | 334 // Move it 100 to the bottom, which should expand w1 and push w2. |
| 346 resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0); | 335 resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0); |
| 347 EXPECT_EQ("0,50 400x300", window_->bounds().ToString()); | 336 EXPECT_EQ("0,50 400x300", window_->bounds().ToString()); |
| 348 EXPECT_EQ("0,350 200x100", window2_->bounds().ToString()); | 337 EXPECT_EQ("0,350 200x100", window2_->bounds().ToString()); |
| 349 | 338 |
| 350 // Push off the screen, w2 should be resized to its min. | 339 // Push off the screen, w2 should be resized to its min. |
| 351 delegate2_.set_min_size(gfx::Size(20, 20)); | 340 delegate2_.set_min_size(gfx::Size(20, 20)); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 | 372 |
| 384 window_->SetBounds(gfx::Rect( 300, 100, 300, 200)); | 373 window_->SetBounds(gfx::Rect( 300, 100, 300, 200)); |
| 385 window2_->SetBounds(gfx::Rect(300, 300, 200, 150)); | 374 window2_->SetBounds(gfx::Rect(300, 300, 200, 150)); |
| 386 window3_->SetBounds(gfx::Rect(300, 450, 200, 100)); | 375 window3_->SetBounds(gfx::Rect(300, 450, 200, 100)); |
| 387 delegate2_.set_min_size(gfx::Size(50, 52)); | 376 delegate2_.set_min_size(gfx::Size(50, 52)); |
| 388 delegate3_.set_min_size(gfx::Size(50, 38)); | 377 delegate3_.set_min_size(gfx::Size(50, 38)); |
| 389 | 378 |
| 390 std::vector<aura::Window*> windows; | 379 std::vector<aura::Window*> windows; |
| 391 windows.push_back(window2_.get()); | 380 windows.push_back(window2_.get()); |
| 392 windows.push_back(window3_.get()); | 381 windows.push_back(window3_.get()); |
| 393 SetGridSize(10); | |
| 394 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 382 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 395 window_.get(), gfx::Point(), HTBOTTOM, windows)); | 383 window_.get(), gfx::Point(), HTBOTTOM, windows)); |
| 396 ASSERT_TRUE(resizer.get()); | 384 ASSERT_TRUE(resizer.get()); |
| 397 // Move it 100 to the right, which should expand w1 and push w2 and w3. | 385 // Move it 100 to the right, which should expand w1 and push w2 and w3. |
| 398 resizer->Drag(CalculateDragPoint(*resizer, -10, 100), 0); | 386 resizer->Drag(CalculateDragPoint(*resizer, -10, 100), 0); |
| 399 EXPECT_EQ("300,100 300x300", window_->bounds().ToString()); | 387 EXPECT_EQ("300,100 300x300", window_->bounds().ToString()); |
| 400 EXPECT_EQ("300,400 200x150", window2_->bounds().ToString()); | 388 EXPECT_EQ("300,400 200x150", window2_->bounds().ToString()); |
| 401 EXPECT_EQ("300,550 200x100", window3_->bounds().ToString()); | 389 EXPECT_EQ("300,550 200x100", window3_->bounds().ToString()); |
| 402 | 390 |
| 403 // Move it 296, which should now snap to grid and things should compress. | 391 // Move it 296 things should compress. |
| 404 resizer->Drag(CalculateDragPoint(*resizer, -10, 296), 0); | 392 resizer->Drag(CalculateDragPoint(*resizer, -10, 296), 0); |
| 405 EXPECT_EQ("300,100 300x500", window_->bounds().ToString()); | 393 EXPECT_EQ("300,100 300x496", window_->bounds().ToString()); |
| 406 EXPECT_EQ("300,600 200x120", window2_->bounds().ToString()); | 394 EXPECT_EQ("300,596 200x122", window2_->bounds().ToString()); |
| 407 EXPECT_EQ("300,720 200x80", window3_->bounds().ToString()); | 395 EXPECT_EQ("300,718 200x82", window3_->bounds().ToString()); |
| 408 | 396 |
| 409 // Move it so much everything ends up at its min. | 397 // Move it so much everything ends up at its min. |
| 410 resizer->Drag(CalculateDragPoint(*resizer, 50, 798), 0); | 398 resizer->Drag(CalculateDragPoint(*resizer, 50, 798), 0); |
| 411 EXPECT_EQ("300,100 300x600", window_->bounds().ToString()); | 399 EXPECT_EQ("300,100 300x610", window_->bounds().ToString()); |
| 412 EXPECT_EQ("300,700 200x60", window2_->bounds().ToString()); | 400 EXPECT_EQ("300,710 200x52", window2_->bounds().ToString()); |
| 413 EXPECT_EQ("300,760 200x40", window3_->bounds().ToString()); | 401 EXPECT_EQ("300,762 200x38", window3_->bounds().ToString()); |
| 414 | 402 |
| 415 // Revert and make sure everything moves back. | 403 // Revert and make sure everything moves back. |
| 416 resizer->RevertDrag(); | 404 resizer->RevertDrag(); |
| 417 EXPECT_EQ("300,100 300x200", window_->bounds().ToString()); | 405 EXPECT_EQ("300,100 300x200", window_->bounds().ToString()); |
| 418 EXPECT_EQ("300,300 200x150", window2_->bounds().ToString()); | 406 EXPECT_EQ("300,300 200x150", window2_->bounds().ToString()); |
| 419 EXPECT_EQ("300,450 200x100", window3_->bounds().ToString()); | 407 EXPECT_EQ("300,450 200x100", window3_->bounds().ToString()); |
| 420 } | 408 } |
| 421 | 409 |
| 422 // Assertions around attached window resizing (collapsing and expanding) with | 410 // Assertions around attached window resizing (collapsing and expanding) with |
| 423 // 3 windows. | 411 // 3 windows. |
| 424 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_3_Compress) { | 412 TEST_F(WorkspaceWindowResizerTest, AttachedResize_BOTTOM_3_Compress) { |
| 425 window_->SetBounds(gfx::Rect( 0, 0, 200, 200)); | 413 window_->SetBounds(gfx::Rect( 0, 0, 200, 200)); |
| 426 window2_->SetBounds(gfx::Rect(10, 200, 200, 200)); | 414 window2_->SetBounds(gfx::Rect(10, 200, 200, 200)); |
| 427 window3_->SetBounds(gfx::Rect(20, 400, 100, 100)); | 415 window3_->SetBounds(gfx::Rect(20, 400, 100, 100)); |
| 428 delegate2_.set_min_size(gfx::Size(52, 50)); | 416 delegate2_.set_min_size(gfx::Size(52, 50)); |
| 429 delegate3_.set_min_size(gfx::Size(38, 50)); | 417 delegate3_.set_min_size(gfx::Size(38, 50)); |
| 430 | 418 |
| 431 std::vector<aura::Window*> windows; | 419 std::vector<aura::Window*> windows; |
| 432 windows.push_back(window2_.get()); | 420 windows.push_back(window2_.get()); |
| 433 windows.push_back(window3_.get()); | 421 windows.push_back(window3_.get()); |
| 434 SetGridSize(10); | |
| 435 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 422 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 436 window_.get(), gfx::Point(), HTBOTTOM, windows)); | 423 window_.get(), gfx::Point(), HTBOTTOM, windows)); |
| 437 ASSERT_TRUE(resizer.get()); | 424 ASSERT_TRUE(resizer.get()); |
| 438 // Move it 100 up, which should collapse w1 and expand w2 and w3. | 425 // Move it 100 up, which should collapse w1 and expand w2 and w3. |
| 439 resizer->Drag(CalculateDragPoint(*resizer, -10, -100), 0); | 426 resizer->Drag(CalculateDragPoint(*resizer, -10, -100), 0); |
| 440 EXPECT_EQ("0,0 200x100", window_->bounds().ToString()); | 427 EXPECT_EQ("0,0 200x100", window_->bounds().ToString()); |
| 441 EXPECT_EQ("10,100 200x270", window2_->bounds().ToString()); | 428 EXPECT_EQ("10,100 200x266", window2_->bounds().ToString()); |
| 442 EXPECT_EQ("20,370 100x130", window3_->bounds().ToString()); | 429 EXPECT_EQ("20,366 100x134", window3_->bounds().ToString()); |
| 443 | 430 |
| 444 // Move it 100 down. | 431 // Move it 100 down. |
| 445 resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0); | 432 resizer->Drag(CalculateDragPoint(*resizer, 10, 100), 0); |
| 446 EXPECT_EQ("0,0 200x300", window_->bounds().ToString()); | 433 EXPECT_EQ("0,0 200x300", window_->bounds().ToString()); |
| 447 EXPECT_EQ("10,300 200x200", window2_->bounds().ToString()); | 434 EXPECT_EQ("10,300 200x200", window2_->bounds().ToString()); |
| 448 EXPECT_EQ("20,500 100x100", window3_->bounds().ToString()); | 435 EXPECT_EQ("20,500 100x100", window3_->bounds().ToString()); |
| 449 | 436 |
| 450 // 100 up again. | 437 // 100 up again. |
| 451 resizer->Drag(CalculateDragPoint(*resizer, -10, -100), 0); | 438 resizer->Drag(CalculateDragPoint(*resizer, -10, -100), 0); |
| 452 EXPECT_EQ("0,0 200x100", window_->bounds().ToString()); | 439 EXPECT_EQ("0,0 200x100", window_->bounds().ToString()); |
| 453 EXPECT_EQ("10,100 200x270", window2_->bounds().ToString()); | 440 EXPECT_EQ("10,100 200x266", window2_->bounds().ToString()); |
| 454 EXPECT_EQ("20,370 100x130", window3_->bounds().ToString()); | 441 EXPECT_EQ("20,366 100x134", window3_->bounds().ToString()); |
| 455 } | 442 } |
| 456 | 443 |
| 457 // Assertions around dragging to the left/right edge of the screen. | 444 // Assertions around dragging to the left/right edge of the screen. |
| 458 TEST_F(WorkspaceWindowResizerTest, Edge) { | 445 TEST_F(WorkspaceWindowResizerTest, Edge) { |
| 459 int bottom = | 446 int bottom = |
| 460 ScreenAsh::GetUnmaximizedWorkAreaBoundsInParent(window_.get()).bottom(); | 447 ScreenAsh::GetUnmaximizedWorkAreaBoundsInParent(window_.get()).bottom(); |
| 461 window_->SetBounds(gfx::Rect(20, 30, 50, 60)); | 448 window_->SetBounds(gfx::Rect(20, 30, 50, 60)); |
| 462 { | 449 { |
| 463 SetGridSize(0); | |
| 464 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 450 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 465 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 451 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 466 ASSERT_TRUE(resizer.get()); | 452 ASSERT_TRUE(resizer.get()); |
| 467 resizer->Drag(CalculateDragPoint(*resizer, 0, 10), 0); | 453 resizer->Drag(CalculateDragPoint(*resizer, 0, 10), 0); |
| 468 resizer->CompleteDrag(0); | 454 resizer->CompleteDrag(0); |
| 469 EXPECT_EQ("0,0 720x" + base::IntToString(bottom), | 455 EXPECT_EQ("0,0 720x" + base::IntToString(bottom), |
| 470 window_->bounds().ToString()); | 456 window_->bounds().ToString()); |
| 471 ASSERT_TRUE(GetRestoreBoundsInScreen(window_.get())); | 457 ASSERT_TRUE(GetRestoreBoundsInScreen(window_.get())); |
| 472 EXPECT_EQ("20,30 50x60", | 458 EXPECT_EQ("20,30 50x60", |
| 473 GetRestoreBoundsInScreen(window_.get())->ToString()); | 459 GetRestoreBoundsInScreen(window_.get())->ToString()); |
| 474 } | 460 } |
| 475 | 461 |
| 476 // Try the same with the right side. | 462 // Try the same with the right side. |
| 477 SetGridSize(0); | |
| 478 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 463 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 479 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 464 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 480 ASSERT_TRUE(resizer.get()); | 465 ASSERT_TRUE(resizer.get()); |
| 481 resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0); | 466 resizer->Drag(CalculateDragPoint(*resizer, 800, 10), 0); |
| 482 resizer->CompleteDrag(0); | 467 resizer->CompleteDrag(0); |
| 483 EXPECT_EQ("80,0 720x" + base::IntToString(bottom), | 468 EXPECT_EQ("80,0 720x" + base::IntToString(bottom), |
| 484 window_->bounds().ToString()); | 469 window_->bounds().ToString()); |
| 485 ASSERT_TRUE(GetRestoreBoundsInScreen(window_.get())); | 470 ASSERT_TRUE(GetRestoreBoundsInScreen(window_.get())); |
| 486 EXPECT_EQ("20,30 50x60", GetRestoreBoundsInScreen(window_.get())->ToString()); | 471 EXPECT_EQ("20,30 50x60", GetRestoreBoundsInScreen(window_.get())->ToString()); |
| 487 } | 472 } |
| 488 | 473 |
| 489 // Verifies a window can be moved from the primary display to another. | 474 // Verifies a window can be moved from the primary display to another. |
| 490 TEST_F(WorkspaceWindowResizerTest, MAYBE_WindowDragWithMultiMonitors) { | 475 TEST_F(WorkspaceWindowResizerTest, MAYBE_WindowDragWithMultiMonitors) { |
| 491 // The secondary display is logically on the right, but on the system (e.g. X) | 476 // The secondary display is logically on the right, but on the system (e.g. X) |
| 492 // layer, it's below the primary one. See UpdateDisplay() in ash_test_base.cc. | 477 // layer, it's below the primary one. See UpdateDisplay() in ash_test_base.cc. |
| 493 UpdateDisplay("800x600,800x600"); | 478 UpdateDisplay("800x600,800x600"); |
| 494 Shell::GetInstance()->shelf()->LayoutShelf(); | 479 Shell::GetInstance()->shelf()->LayoutShelf(); |
| 495 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 480 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
| 496 ASSERT_EQ(2U, root_windows.size()); | 481 ASSERT_EQ(2U, root_windows.size()); |
| 497 | 482 |
| 498 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 483 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
| 499 gfx::Screen::GetPrimaryDisplay()); | 484 gfx::Screen::GetPrimaryDisplay()); |
| 500 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 485 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
| 501 { | 486 { |
| 502 SetGridSize(0); | |
| 503 // Grab (0, 0) of the window. | 487 // Grab (0, 0) of the window. |
| 504 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 488 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 505 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 489 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 506 ASSERT_TRUE(resizer.get()); | 490 ASSERT_TRUE(resizer.get()); |
| 507 // Drag the pointer to the right. Once it reaches the right edge of the | 491 // Drag the pointer to the right. Once it reaches the right edge of the |
| 508 // primary display, it warps to the secondary. Since the secondary root | 492 // primary display, it warps to the secondary. Since the secondary root |
| 509 // window's native origin held by aura::RootWindowHost is (0, 600), and a | 493 // window's native origin held by aura::RootWindowHost is (0, 600), and a |
| 510 // mouse drag event has a location in the primary root window's coordinates, | 494 // mouse drag event has a location in the primary root window's coordinates, |
| 511 // (0, 610) below means (0, 10) in the second root window's coordinates. | 495 // (0, 610) below means (0, 10) in the second root window's coordinates. |
| 512 resizer->Drag(CalculateDragPoint(*resizer, 0, 610), 0); | 496 resizer->Drag(CalculateDragPoint(*resizer, 0, 610), 0); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 535 | 519 |
| 536 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 520 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
| 537 gfx::Screen::GetPrimaryDisplay()); | 521 gfx::Screen::GetPrimaryDisplay()); |
| 538 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 522 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
| 539 { | 523 { |
| 540 // Grab the top-right edge of the window and move the pointer to (0, 10) | 524 // Grab the top-right edge of the window and move the pointer to (0, 10) |
| 541 // in the secondary root window's coordinates. | 525 // in the secondary root window's coordinates. |
| 542 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 526 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 543 window_.get(), gfx::Point(49, 0), HTCAPTION, empty_windows())); | 527 window_.get(), gfx::Point(49, 0), HTCAPTION, empty_windows())); |
| 544 ASSERT_TRUE(resizer.get()); | 528 ASSERT_TRUE(resizer.get()); |
| 545 resizer->Drag(CalculateDragPoint(*resizer, -49, 610), 0); | 529 resizer->Drag(CalculateDragPoint(*resizer, -49, 610), ui::EF_CONTROL_DOWN); |
| 546 resizer->CompleteDrag(0); | 530 resizer->CompleteDrag(0); |
| 547 // Since the pointer is on the secondary, the parent should not be changed | 531 // Since the pointer is on the secondary, the parent should not be changed |
| 548 // even though only small fraction of the window is within the secondary | 532 // even though only small fraction of the window is within the secondary |
| 549 // root window's bounds. | 533 // root window's bounds. |
| 550 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 534 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
| 551 EXPECT_EQ("-49,10 50x60", window_->bounds().ToString()); | 535 EXPECT_EQ("-49,10 50x60", window_->bounds().ToString()); |
| 552 } | 536 } |
| 553 } | 537 } |
| 554 | 538 |
| 555 // Verifies a window can be moved from the secondary display to primary. | 539 // Verifies a window can be moved from the secondary display to primary. |
| 556 TEST_F(WorkspaceWindowResizerTest, | 540 TEST_F(WorkspaceWindowResizerTest, |
| 557 MAYBE_WindowDragWithMultiMonitorsRightToLeft) { | 541 MAYBE_WindowDragWithMultiMonitorsRightToLeft) { |
| 558 UpdateDisplay("800x600,800x600"); | 542 UpdateDisplay("800x600,800x600"); |
| 559 Shell::GetInstance()->shelf()->LayoutShelf(); | 543 Shell::GetInstance()->shelf()->LayoutShelf(); |
| 560 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 544 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
| 561 ASSERT_EQ(2U, root_windows.size()); | 545 ASSERT_EQ(2U, root_windows.size()); |
| 562 | 546 |
| 563 window_->SetBoundsInScreen( | 547 window_->SetBoundsInScreen( |
| 564 gfx::Rect(800, 00, 50, 60), | 548 gfx::Rect(800, 00, 50, 60), |
| 565 gfx::Screen::GetDisplayNearestWindow(root_windows[1])); | 549 gfx::Screen::GetDisplayNearestWindow(root_windows[1])); |
| 566 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); | 550 EXPECT_EQ(root_windows[1], window_->GetRootWindow()); |
| 567 { | 551 { |
| 568 SetGridSize(0); | |
| 569 // Grab (0, 0) of the window. | 552 // Grab (0, 0) of the window. |
| 570 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 553 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 571 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 554 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 572 ASSERT_TRUE(resizer.get()); | 555 ASSERT_TRUE(resizer.get()); |
| 573 // Move the mouse near the right edge, (798, 0), of the primary display. | 556 // Move the mouse near the right edge, (798, 0), of the primary display. |
| 574 resizer->Drag(CalculateDragPoint(*resizer, 798, -600), 0); | 557 resizer->Drag(CalculateDragPoint(*resizer, 798, -600), ui::EF_CONTROL_DOWN); |
| 575 resizer->CompleteDrag(0); | 558 resizer->CompleteDrag(0); |
| 576 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 559 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
| 577 EXPECT_EQ("798,0 50x60", window_->bounds().ToString()); | 560 EXPECT_EQ("798,0 50x60", window_->bounds().ToString()); |
| 578 } | 561 } |
| 579 } | 562 } |
| 580 | 563 |
| 581 // Verifies the style of the drag phantom window is correct. | 564 // Verifies the style of the drag phantom window is correct. |
| 582 TEST_F(WorkspaceWindowResizerTest, MAYBE_PhantomStyle) { | 565 TEST_F(WorkspaceWindowResizerTest, MAYBE_PhantomStyle) { |
| 583 UpdateDisplay("800x600,800x600"); | 566 UpdateDisplay("800x600,800x600"); |
| 584 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); | 567 Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
| 585 ASSERT_EQ(2U, root_windows.size()); | 568 ASSERT_EQ(2U, root_windows.size()); |
| 586 | 569 |
| 587 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), | 570 window_->SetBoundsInScreen(gfx::Rect(0, 0, 50, 60), |
| 588 gfx::Screen::GetPrimaryDisplay()); | 571 gfx::Screen::GetPrimaryDisplay()); |
| 589 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); | 572 EXPECT_EQ(root_windows[0], window_->GetRootWindow()); |
| 590 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); | 573 EXPECT_FLOAT_EQ(1.0f, window_->layer()->opacity()); |
| 591 { | 574 { |
| 592 SetGridSize(0); | |
| 593 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 575 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 594 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 576 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 595 ASSERT_TRUE(resizer.get()); | 577 ASSERT_TRUE(resizer.get()); |
| 596 EXPECT_FALSE(resizer->snap_phantom_window_controller_.get()); | 578 EXPECT_FALSE(resizer->snap_phantom_window_controller_.get()); |
| 597 EXPECT_FALSE(resizer->drag_phantom_window_controller_.get()); | 579 EXPECT_FALSE(resizer->drag_phantom_window_controller_.get()); |
| 598 | 580 |
| 599 // The pointer is inside the primary root. Both phantoms should be NULL. | 581 // The pointer is inside the primary root. Both phantoms should be NULL. |
| 600 resizer->Drag(CalculateDragPoint(*resizer, 10, 10), 0); | 582 resizer->Drag(CalculateDragPoint(*resizer, 10, 10), 0); |
| 601 EXPECT_FALSE(resizer->snap_phantom_window_controller_.get()); | 583 EXPECT_FALSE(resizer->snap_phantom_window_controller_.get()); |
| 602 EXPECT_FALSE(resizer->drag_phantom_window_controller_.get()); | 584 EXPECT_FALSE(resizer->drag_phantom_window_controller_.get()); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 709 | 691 |
| 710 // Verifies windows are correctly restacked when reordering multiple windows. | 692 // Verifies windows are correctly restacked when reordering multiple windows. |
| 711 TEST_F(WorkspaceWindowResizerTest, RestackAttached) { | 693 TEST_F(WorkspaceWindowResizerTest, RestackAttached) { |
| 712 window_->SetBounds(gfx::Rect( 0, 0, 200, 300)); | 694 window_->SetBounds(gfx::Rect( 0, 0, 200, 300)); |
| 713 window2_->SetBounds(gfx::Rect(200, 0, 100, 200)); | 695 window2_->SetBounds(gfx::Rect(200, 0, 100, 200)); |
| 714 window3_->SetBounds(gfx::Rect(300, 0, 100, 100)); | 696 window3_->SetBounds(gfx::Rect(300, 0, 100, 100)); |
| 715 | 697 |
| 716 { | 698 { |
| 717 std::vector<aura::Window*> windows; | 699 std::vector<aura::Window*> windows; |
| 718 windows.push_back(window2_.get()); | 700 windows.push_back(window2_.get()); |
| 719 SetGridSize(10); | |
| 720 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 701 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 721 window_.get(), gfx::Point(), HTRIGHT, windows)); | 702 window_.get(), gfx::Point(), HTRIGHT, windows)); |
| 722 ASSERT_TRUE(resizer.get()); | 703 ASSERT_TRUE(resizer.get()); |
| 723 // Move it 100 to the right, which should expand w1 and push w2 and w3. | 704 // Move it 100 to the right, which should expand w1 and push w2 and w3. |
| 724 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); | 705 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); |
| 725 | 706 |
| 726 // 2 should be topmost since it's initially the highest in the stack. | 707 // 2 should be topmost since it's initially the highest in the stack. |
| 727 EXPECT_EQ("2 1 3", WindowOrderAsString(window_->parent())); | 708 EXPECT_EQ("2 1 3", WindowOrderAsString(window_->parent())); |
| 728 } | 709 } |
| 729 | 710 |
| 730 { | 711 { |
| 731 std::vector<aura::Window*> windows; | 712 std::vector<aura::Window*> windows; |
| 732 windows.push_back(window3_.get()); | 713 windows.push_back(window3_.get()); |
| 733 SetGridSize(10); | |
| 734 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 714 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 735 window2_.get(), gfx::Point(), HTRIGHT, windows)); | 715 window2_.get(), gfx::Point(), HTRIGHT, windows)); |
| 736 ASSERT_TRUE(resizer.get()); | 716 ASSERT_TRUE(resizer.get()); |
| 737 // Move it 100 to the right, which should expand w1 and push w2 and w3. | 717 // Move it 100 to the right, which should expand w1 and push w2 and w3. |
| 738 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); | 718 resizer->Drag(CalculateDragPoint(*resizer, 100, -10), 0); |
| 739 | 719 |
| 740 // 2 should be topmost since it's initially the highest in the stack. | 720 // 2 should be topmost since it's initially the highest in the stack. |
| 741 EXPECT_EQ("2 3 1", WindowOrderAsString(window_->parent())); | 721 EXPECT_EQ("2 3 1", WindowOrderAsString(window_->parent())); |
| 742 } | 722 } |
| 743 } | 723 } |
| 744 | 724 |
| 745 // Makes sure we don't allow dragging below the work area. | 725 // Makes sure we don't allow dragging below the work area. |
| 746 TEST_F(WorkspaceWindowResizerTest, DontDragOffBottom) { | 726 TEST_F(WorkspaceWindowResizerTest, DontDragOffBottom) { |
| 747 Shell::GetInstance()->SetDisplayWorkAreaInsets( | 727 Shell::GetInstance()->SetDisplayWorkAreaInsets( |
| 748 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 10, 0)); | 728 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 10, 0)); |
| 749 | 729 |
| 750 ASSERT_EQ(1, gfx::Screen::GetNumDisplays()); | 730 ASSERT_EQ(1, gfx::Screen::GetNumDisplays()); |
| 751 | 731 |
| 752 window_->SetBounds(gfx::Rect(100, 200, 300, 400)); | 732 window_->SetBounds(gfx::Rect(100, 200, 300, 400)); |
| 753 SetGridSize(0); | |
| 754 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 733 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 755 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 734 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 756 ASSERT_TRUE(resizer.get()); | 735 ASSERT_TRUE(resizer.get()); |
| 757 resizer->Drag(CalculateDragPoint(*resizer, 0, 600), 0); | 736 resizer->Drag(CalculateDragPoint(*resizer, 0, 600), 0); |
| 758 int expected_y = | 737 int expected_y = |
| 759 kRootHeight - WorkspaceWindowResizer::kMinOnscreenHeight - 10; | 738 kRootHeight - WorkspaceWindowResizer::kMinOnscreenHeight - 10; |
| 760 EXPECT_EQ("100," + base::IntToString(expected_y) + " 300x400", | 739 EXPECT_EQ("100," + base::IntToString(expected_y) + " 300x400", |
| 761 window_->bounds().ToString()); | 740 window_->bounds().ToString()); |
| 762 } | 741 } |
| 763 | 742 |
| 764 // Makes sure we don't allow dragging off the top of the work area. | 743 // Makes sure we don't allow dragging off the top of the work area. |
| 765 TEST_F(WorkspaceWindowResizerTest, DontDragOffTop) { | 744 TEST_F(WorkspaceWindowResizerTest, DontDragOffTop) { |
| 766 Shell::GetInstance()->SetDisplayWorkAreaInsets( | 745 Shell::GetInstance()->SetDisplayWorkAreaInsets( |
| 767 Shell::GetPrimaryRootWindow(), gfx::Insets(10, 0, 0, 0)); | 746 Shell::GetPrimaryRootWindow(), gfx::Insets(10, 0, 0, 0)); |
| 768 | 747 |
| 769 window_->SetBounds(gfx::Rect(100, 200, 300, 400)); | 748 window_->SetBounds(gfx::Rect(100, 200, 300, 400)); |
| 770 SetGridSize(0); | |
| 771 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 749 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 772 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 750 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 773 ASSERT_TRUE(resizer.get()); | 751 ASSERT_TRUE(resizer.get()); |
| 774 resizer->Drag(CalculateDragPoint(*resizer, 0, -600), 0); | 752 resizer->Drag(CalculateDragPoint(*resizer, 0, -600), 0); |
| 775 EXPECT_EQ("100,10 300x400", window_->bounds().ToString()); | 753 EXPECT_EQ("100,10 300x400", window_->bounds().ToString()); |
| 776 } | 754 } |
| 777 | 755 |
| 778 TEST_F(WorkspaceWindowResizerTest, ResizeBottomOutsideWorkArea) { | 756 TEST_F(WorkspaceWindowResizerTest, ResizeBottomOutsideWorkArea) { |
| 779 Shell::GetInstance()->SetDisplayWorkAreaInsets( | 757 Shell::GetInstance()->SetDisplayWorkAreaInsets( |
| 780 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 50, 0)); | 758 Shell::GetPrimaryRootWindow(), gfx::Insets(0, 0, 50, 0)); |
| 781 | 759 |
| 782 window_->SetBounds(gfx::Rect(100, 200, 300, 380)); | 760 window_->SetBounds(gfx::Rect(100, 200, 300, 380)); |
| 783 SetGridSize(10); | |
| 784 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 761 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 785 window_.get(), gfx::Point(), HTTOP, empty_windows())); | 762 window_.get(), gfx::Point(), HTTOP, empty_windows())); |
| 786 ASSERT_TRUE(resizer.get()); | 763 ASSERT_TRUE(resizer.get()); |
| 787 resizer->Drag(CalculateDragPoint(*resizer, 8, 0), 0); | 764 resizer->Drag(CalculateDragPoint(*resizer, 8, 0), 0); |
| 788 EXPECT_EQ("100,200 300x380", window_->bounds().ToString()); | 765 EXPECT_EQ("100,200 300x380", window_->bounds().ToString()); |
| 789 } | 766 } |
| 790 | 767 |
| 791 // Verifies snapping to edges works. | 768 // Verifies snapping to edges works. |
| 792 TEST_F(WorkspaceWindowResizerTest, SnapToEdge) { | 769 TEST_F(WorkspaceWindowResizerTest, SnapToEdge) { |
| 793 Shell::GetInstance()->SetShelfAutoHideBehavior( | 770 Shell::GetInstance()->SetShelfAutoHideBehavior( |
| 794 SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 771 SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
| 795 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); | 772 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); |
| 796 SetGridSize(16); | |
| 797 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 773 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 798 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 774 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 799 ASSERT_TRUE(resizer.get()); | 775 ASSERT_TRUE(resizer.get()); |
| 800 // Move to an x-coordinate of 15, which should not snap. | 776 // Move to an x-coordinate of 15, which should not snap. |
| 801 resizer->Drag(CalculateDragPoint(*resizer, -81, 0), 0); | 777 resizer->Drag(CalculateDragPoint(*resizer, -81, 0), 0); |
| 802 // An x-coordinate of 7 should snap. | 778 // An x-coordinate of 7 should snap. |
| 803 resizer->Drag(CalculateDragPoint(*resizer, -89, 0), 0); | 779 resizer->Drag(CalculateDragPoint(*resizer, -89, 0), 0); |
| 804 EXPECT_EQ("0,112 320x160", window_->bounds().ToString()); | 780 EXPECT_EQ("0,112 320x160", window_->bounds().ToString()); |
| 805 // Move to -20, should still snap to 0. | 781 // Move to -15, should still snap to 0. |
| 806 resizer->Drag(CalculateDragPoint(*resizer, -116, 0), 0); | 782 resizer->Drag(CalculateDragPoint(*resizer, -111, 0), 0); |
| 807 EXPECT_EQ("0,112 320x160", window_->bounds().ToString()); | 783 EXPECT_EQ("0,112 320x160", window_->bounds().ToString()); |
| 808 // At -32 should move past snap points. | 784 // At -32 should move past snap points. |
| 809 resizer->Drag(CalculateDragPoint(*resizer, -128, 0), 0); | 785 resizer->Drag(CalculateDragPoint(*resizer, -128, 0), 0); |
| 810 EXPECT_EQ("-32,112 320x160", window_->bounds().ToString()); | 786 EXPECT_EQ("-32,112 320x160", window_->bounds().ToString()); |
| 811 resizer->Drag(CalculateDragPoint(*resizer, -129, 0), 0); | 787 resizer->Drag(CalculateDragPoint(*resizer, -129, 0), 0); |
| 812 EXPECT_EQ("-33,112 320x160", window_->bounds().ToString()); | 788 EXPECT_EQ("-33,112 320x160", window_->bounds().ToString()); |
| 813 | 789 |
| 814 // Right side should similarly snap. | 790 // Right side should similarly snap. |
| 815 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 - 15, 0), 0); | 791 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 - 15, 0), 0); |
| 816 EXPECT_EQ("465,112 320x160", window_->bounds().ToString()); | 792 EXPECT_EQ("465,112 320x160", window_->bounds().ToString()); |
| 817 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 - 7, 0), 0); | 793 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 - 7, 0), 0); |
| 818 EXPECT_EQ("480,112 320x160", window_->bounds().ToString()); | 794 EXPECT_EQ("480,112 320x160", window_->bounds().ToString()); |
| 819 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 20, 0), 0); | 795 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 15, 0), 0); |
| 820 EXPECT_EQ("480,112 320x160", window_->bounds().ToString()); | 796 EXPECT_EQ("480,112 320x160", window_->bounds().ToString()); |
| 821 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 32, 0), 0); | 797 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 32, 0), 0); |
| 822 EXPECT_EQ("512,112 320x160", window_->bounds().ToString()); | 798 EXPECT_EQ("512,112 320x160", window_->bounds().ToString()); |
| 823 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 33, 0), 0); | 799 resizer->Drag(CalculateDragPoint(*resizer, 800 - 320 - 96 + 33, 0), 0); |
| 824 EXPECT_EQ("513,112 320x160", window_->bounds().ToString()); | 800 EXPECT_EQ("513,112 320x160", window_->bounds().ToString()); |
| 825 | 801 |
| 826 // And the bottom should snap too. | 802 // And the bottom should snap too. |
| 827 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 15), 0); | 803 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 2 - 7), 0); |
| 828 EXPECT_EQ("96,432 320x160", window_->bounds().ToString()); | 804 EXPECT_EQ("96,438 320x160", window_->bounds().ToString()); |
| 829 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 20), 0); | 805 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 2 + 15), 0); |
| 830 EXPECT_EQ("96,432 320x160", window_->bounds().ToString()); | 806 EXPECT_EQ("96,438 320x160", window_->bounds().ToString()); |
| 831 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 32), 0); | 807 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 2 + 32), 0); |
| 832 EXPECT_EQ("96,472 320x160", window_->bounds().ToString()); | 808 EXPECT_EQ("96,470 320x160", window_->bounds().ToString()); |
| 833 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 + 33), 0); | 809 resizer->Drag(CalculateDragPoint(*resizer, 0, 600 - 160 - 112 - 2 + 33), 0); |
| 834 EXPECT_EQ("96,473 320x160", window_->bounds().ToString()); | 810 EXPECT_EQ("96,471 320x160", window_->bounds().ToString()); |
| 835 | 811 |
| 836 // And the top should snap too. | 812 // And the top should snap too. |
| 837 resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 20), 0); | 813 resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 20), 0); |
| 838 EXPECT_EQ("96,20 320x160", window_->bounds().ToString()); | 814 EXPECT_EQ("96,20 320x160", window_->bounds().ToString()); |
| 839 resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 7), 0); | 815 resizer->Drag(CalculateDragPoint(*resizer, 0, -112 + 7), 0); |
| 840 EXPECT_EQ("96,0 320x160", window_->bounds().ToString()); | 816 EXPECT_EQ("96,0 320x160", window_->bounds().ToString()); |
| 841 // No need to test dragging < 0 as we force that to 0. | 817 // No need to test dragging < 0 as we force that to 0. |
| 842 } | 818 } |
| 843 | 819 |
| 844 // Verifies a window taller than work area height doesn't snap above the top of | 820 // Verifies a window taller than work area height doesn't snap above the top of |
| 845 // the work area. | 821 // the work area. |
| 846 TEST_F(WorkspaceWindowResizerTest, TallWindow) { | 822 TEST_F(WorkspaceWindowResizerTest, TallWindow) { |
| 847 aura::RootWindow* root = Shell::GetPrimaryRootWindow(); | 823 aura::RootWindow* root = Shell::GetPrimaryRootWindow(); |
| 848 Shell::GetInstance()->SetDisplayWorkAreaInsets( | 824 Shell::GetInstance()->SetDisplayWorkAreaInsets( |
| 849 root, gfx::Insets(0, 0, 50, 0)); | 825 root, gfx::Insets(0, 0, 50, 0)); |
| 850 window_->SetBounds(gfx::Rect(0, 0, 320, 560)); | 826 window_->SetBounds(gfx::Rect(0, 0, 320, 560)); |
| 851 SetGridSize(16); | |
| 852 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 827 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 853 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 828 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 854 resizer->Drag(CalculateDragPoint(*resizer, 0, 9), 0); | 829 resizer->Drag(CalculateDragPoint(*resizer, 0, 9), 0); |
| 855 EXPECT_EQ("0,9 320x560", window_->bounds().ToString()); | 830 EXPECT_EQ("0,9 320x560", window_->bounds().ToString()); |
| 856 } | 831 } |
| 857 | 832 |
| 858 TEST_F(WorkspaceWindowResizerTest, DragResizeSnapToGrid) { | 833 TEST_F(WorkspaceWindowResizerTest, CtrlDragResizeToExactPosition) { |
| 859 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); | 834 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); |
| 860 SetGridSize(16); | |
| 861 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 835 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 862 window_.get(), gfx::Point(), HTBOTTOMRIGHT, empty_windows())); | 836 window_.get(), gfx::Point(), HTBOTTOMRIGHT, empty_windows())); |
| 863 ASSERT_TRUE(resizer.get()); | 837 ASSERT_TRUE(resizer.get()); |
| 864 // Resize the right bottom to add 10 in width, 12 in height. | |
| 865 resizer->Drag(CalculateDragPoint(*resizer, 10, 12), 0); | |
| 866 // Both bottom and right sides should snap to grids. | |
| 867 EXPECT_EQ("96,112 336x176", window_->bounds().ToString()); | |
| 868 } | |
| 869 | |
| 870 TEST_F(WorkspaceWindowResizerTest, CtrlDragResizeToExactPosition) { | |
| 871 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); | |
| 872 SetGridSize(16); | |
| 873 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | |
| 874 window_.get(), gfx::Point(), HTBOTTOMRIGHT, empty_windows())); | |
| 875 ASSERT_TRUE(resizer.get()); | |
| 876 // Resize the right bottom to add 10 in width, 12 in height. | 838 // Resize the right bottom to add 10 in width, 12 in height. |
| 877 resizer->Drag(CalculateDragPoint(*resizer, 10, 12), ui::EF_CONTROL_DOWN); | 839 resizer->Drag(CalculateDragPoint(*resizer, 10, 12), ui::EF_CONTROL_DOWN); |
| 878 // Both bottom and right sides to resize to exact size requested. | 840 // Both bottom and right sides to resize to exact size requested. |
| 879 EXPECT_EQ("96,112 330x172", window_->bounds().ToString()); | 841 EXPECT_EQ("96,112 330x172", window_->bounds().ToString()); |
| 880 } | 842 } |
| 881 | 843 |
| 882 TEST_F(WorkspaceWindowResizerTest, CompleteDragMoveSnapToGrid) { | |
| 883 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); | |
| 884 SetGridSize(16); | |
| 885 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | |
| 886 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | |
| 887 ASSERT_TRUE(resizer.get()); | |
| 888 // Drag the window to new poistion by adding (10, 12) to original point, | |
| 889 // the window should snap to the closed grid. | |
| 890 resizer->Drag(CalculateDragPoint(*resizer, 10, 12), 0); | |
| 891 resizer->CompleteDrag(0); | |
| 892 EXPECT_EQ("112,128 320x160", window_->bounds().ToString()); | |
| 893 } | |
| 894 | |
| 895 TEST_F(WorkspaceWindowResizerTest, CtrlCompleteDragMoveToExactPosition) { | 844 TEST_F(WorkspaceWindowResizerTest, CtrlCompleteDragMoveToExactPosition) { |
| 896 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); | 845 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); |
| 897 SetGridSize(16); | |
| 898 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( | 846 scoped_ptr<WorkspaceWindowResizer> resizer(WorkspaceWindowResizer::Create( |
| 899 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); | 847 window_.get(), gfx::Point(), HTCAPTION, empty_windows())); |
| 900 ASSERT_TRUE(resizer.get()); | 848 ASSERT_TRUE(resizer.get()); |
| 901 // Ctrl + drag the window to new poistion by adding (10, 12) to its origin, | 849 // Ctrl + drag the window to new poistion by adding (10, 12) to its origin, |
| 902 // the window should move to the exact position. | 850 // the window should move to the exact position. |
| 903 resizer->Drag(CalculateDragPoint(*resizer, 10, 12), 0); | 851 resizer->Drag(CalculateDragPoint(*resizer, 10, 12), 0); |
| 904 resizer->CompleteDrag(ui::EF_CONTROL_DOWN); | 852 resizer->CompleteDrag(ui::EF_CONTROL_DOWN); |
| 905 EXPECT_EQ("106,124 320x160", window_->bounds().ToString()); | 853 EXPECT_EQ("106,124 320x160", window_->bounds().ToString()); |
| 906 } | 854 } |
| 907 | 855 |
| 908 // Check that only usable sizes get returned by the resizer. | 856 // Check that only usable sizes get returned by the resizer. |
| 909 TEST_F(WorkspaceWindowResizerTest, TestProperSizerResolutions) { | 857 TEST_F(WorkspaceWindowResizerTest, TestProperSizerResolutions) { |
| 910 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); | 858 window_->SetBounds(gfx::Rect(96, 112, 320, 160)); |
| 911 SetGridSize(16); | |
| 912 scoped_ptr<SnapSizer> resizer(new SnapSizer( | 859 scoped_ptr<SnapSizer> resizer(new SnapSizer( |
| 913 window_.get(), gfx::Point(), SnapSizer::LEFT_EDGE, 1)); | 860 window_.get(), gfx::Point(), SnapSizer::LEFT_EDGE)); |
| 914 ASSERT_TRUE(resizer.get()); | 861 ASSERT_TRUE(resizer.get()); |
| 915 gfx::Rect rect = resizer->GetTargetBoundsForSize(0); | 862 gfx::Rect rect = resizer->GetTargetBoundsForSize(0); |
| 916 EXPECT_EQ("0,0 720x552", rect.ToString()); | 863 EXPECT_EQ("0,0 720x552", rect.ToString()); |
| 917 rect = resizer->GetTargetBoundsForSize(1); | 864 rect = resizer->GetTargetBoundsForSize(1); |
| 918 EXPECT_EQ("0,0 720x552", rect.ToString()); | 865 EXPECT_EQ("0,0 720x552", rect.ToString()); |
| 919 rect = resizer->GetTargetBoundsForSize(2); | 866 rect = resizer->GetTargetBoundsForSize(2); |
| 920 EXPECT_EQ("0,0 720x552", rect.ToString()); | 867 EXPECT_EQ("0,0 720x552", rect.ToString()); |
| 921 rect = resizer->GetTargetBoundsForSize(3); | 868 rect = resizer->GetTargetBoundsForSize(3); |
| 922 EXPECT_EQ("0,0 640x552", rect.ToString()); | 869 EXPECT_EQ("0,0 640x552", rect.ToString()); |
| 923 } | 870 } |
| 924 | 871 |
| 925 } // namespace internal | 872 } // namespace internal |
| 926 } // namespace ash | 873 } // namespace ash |
| OLD | NEW |