| 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 "ui/views/focus/focus_manager.h" | 5 #include "ui/views/focus/focus_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 | 190 |
| 191 TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) { | 191 TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) { |
| 192 FocusManager* focus_manager = GetFocusManager(); | 192 FocusManager* focus_manager = GetFocusManager(); |
| 193 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); | 193 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); |
| 194 ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, ui::EF_NONE); | 194 ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, ui::EF_NONE); |
| 195 | 195 |
| 196 TestAcceleratorTarget return_target(true); | 196 TestAcceleratorTarget return_target(true); |
| 197 TestAcceleratorTarget escape_target(true); | 197 TestAcceleratorTarget escape_target(true); |
| 198 EXPECT_EQ(return_target.accelerator_count(), 0); | 198 EXPECT_EQ(return_target.accelerator_count(), 0); |
| 199 EXPECT_EQ(escape_target.accelerator_count(), 0); | 199 EXPECT_EQ(escape_target.accelerator_count(), 0); |
| 200 EXPECT_EQ(NULL, | 200 EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 201 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | 201 EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 202 EXPECT_EQ(NULL, | |
| 203 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | |
| 204 | 202 |
| 205 // Register targets. | 203 // Register targets. |
| 206 focus_manager->RegisterAccelerator(return_accelerator, | 204 focus_manager->RegisterAccelerator(return_accelerator, |
| 207 ui::AcceleratorManager::kNormalPriority, | 205 ui::AcceleratorManager::kNormalPriority, |
| 208 &return_target); | 206 &return_target); |
| 209 focus_manager->RegisterAccelerator(escape_accelerator, | 207 focus_manager->RegisterAccelerator(escape_accelerator, |
| 210 ui::AcceleratorManager::kNormalPriority, | 208 ui::AcceleratorManager::kNormalPriority, |
| 211 &escape_target); | 209 &escape_target); |
| 212 | 210 |
| 213 // Checks if the correct target is registered. | 211 // Checks if the correct target is registered. |
| 214 EXPECT_EQ(&return_target, | 212 EXPECT_EQ(&return_target, |
| 215 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | 213 focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 216 EXPECT_EQ(&escape_target, | 214 EXPECT_EQ(&escape_target, |
| 217 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | 215 focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 218 | 216 |
| 219 // Hitting the return key. | 217 // Hitting the return key. |
| 220 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); | 218 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); |
| 221 EXPECT_EQ(return_target.accelerator_count(), 1); | 219 EXPECT_EQ(return_target.accelerator_count(), 1); |
| 222 EXPECT_EQ(escape_target.accelerator_count(), 0); | 220 EXPECT_EQ(escape_target.accelerator_count(), 0); |
| 223 | 221 |
| 224 // Hitting the escape key. | 222 // Hitting the escape key. |
| 225 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); | 223 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); |
| 226 EXPECT_EQ(return_target.accelerator_count(), 1); | 224 EXPECT_EQ(return_target.accelerator_count(), 1); |
| 227 EXPECT_EQ(escape_target.accelerator_count(), 1); | 225 EXPECT_EQ(escape_target.accelerator_count(), 1); |
| 228 | 226 |
| 229 // Register another target for the return key. | 227 // Register another target for the return key. |
| 230 TestAcceleratorTarget return_target2(true); | 228 TestAcceleratorTarget return_target2(true); |
| 231 EXPECT_EQ(return_target2.accelerator_count(), 0); | 229 EXPECT_EQ(return_target2.accelerator_count(), 0); |
| 232 focus_manager->RegisterAccelerator(return_accelerator, | 230 focus_manager->RegisterAccelerator(return_accelerator, |
| 233 ui::AcceleratorManager::kNormalPriority, | 231 ui::AcceleratorManager::kNormalPriority, |
| 234 &return_target2); | 232 &return_target2); |
| 235 EXPECT_EQ(&return_target2, | 233 EXPECT_EQ(&return_target2, |
| 236 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | 234 focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 237 | 235 |
| 238 // Hitting the return key; return_target2 has the priority. | 236 // Hitting the return key; return_target2 has the priority. |
| 239 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); | 237 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); |
| 240 EXPECT_EQ(return_target.accelerator_count(), 1); | 238 EXPECT_EQ(return_target.accelerator_count(), 1); |
| 241 EXPECT_EQ(return_target2.accelerator_count(), 1); | 239 EXPECT_EQ(return_target2.accelerator_count(), 1); |
| 242 | 240 |
| 243 // Register a target that does not process the accelerator event. | 241 // Register a target that does not process the accelerator event. |
| 244 TestAcceleratorTarget return_target3(false); | 242 TestAcceleratorTarget return_target3(false); |
| 245 EXPECT_EQ(return_target3.accelerator_count(), 0); | 243 EXPECT_EQ(return_target3.accelerator_count(), 0); |
| 246 focus_manager->RegisterAccelerator(return_accelerator, | 244 focus_manager->RegisterAccelerator(return_accelerator, |
| 247 ui::AcceleratorManager::kNormalPriority, | 245 ui::AcceleratorManager::kNormalPriority, |
| 248 &return_target3); | 246 &return_target3); |
| 249 EXPECT_EQ(&return_target3, | 247 EXPECT_EQ(&return_target3, |
| 250 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | 248 focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 251 | 249 |
| 252 // Hitting the return key. | 250 // Hitting the return key. |
| 253 // Since the event handler of return_target3 returns false, return_target2 | 251 // Since the event handler of return_target3 returns false, return_target2 |
| 254 // should be called too. | 252 // should be called too. |
| 255 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); | 253 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); |
| 256 EXPECT_EQ(return_target.accelerator_count(), 1); | 254 EXPECT_EQ(return_target.accelerator_count(), 1); |
| 257 EXPECT_EQ(return_target2.accelerator_count(), 2); | 255 EXPECT_EQ(return_target2.accelerator_count(), 2); |
| 258 EXPECT_EQ(return_target3.accelerator_count(), 1); | 256 EXPECT_EQ(return_target3.accelerator_count(), 1); |
| 259 | 257 |
| 260 // Unregister return_target2. | 258 // Unregister return_target2. |
| 261 focus_manager->UnregisterAccelerator(return_accelerator, &return_target2); | 259 focus_manager->UnregisterAccelerator(return_accelerator, &return_target2); |
| 262 EXPECT_EQ(&return_target3, | 260 EXPECT_EQ(&return_target3, |
| 263 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | 261 focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 264 | 262 |
| 265 // Hitting the return key. return_target3 and return_target should be called. | 263 // Hitting the return key. return_target3 and return_target should be called. |
| 266 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); | 264 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); |
| 267 EXPECT_EQ(return_target.accelerator_count(), 2); | 265 EXPECT_EQ(return_target.accelerator_count(), 2); |
| 268 EXPECT_EQ(return_target2.accelerator_count(), 2); | 266 EXPECT_EQ(return_target2.accelerator_count(), 2); |
| 269 EXPECT_EQ(return_target3.accelerator_count(), 2); | 267 EXPECT_EQ(return_target3.accelerator_count(), 2); |
| 270 | 268 |
| 271 // Unregister targets. | 269 // Unregister targets. |
| 272 focus_manager->UnregisterAccelerator(return_accelerator, &return_target); | 270 focus_manager->UnregisterAccelerator(return_accelerator, &return_target); |
| 273 focus_manager->UnregisterAccelerator(return_accelerator, &return_target3); | 271 focus_manager->UnregisterAccelerator(return_accelerator, &return_target3); |
| 274 focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target); | 272 focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target); |
| 275 | 273 |
| 276 // Now there is no target registered. | 274 // Now there is no target registered. |
| 277 EXPECT_EQ(NULL, | 275 EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 278 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | 276 EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 279 EXPECT_EQ(NULL, | |
| 280 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | |
| 281 | 277 |
| 282 // Hitting the return key and the escape key. Nothing should happen. | 278 // Hitting the return key and the escape key. Nothing should happen. |
| 283 EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator)); | 279 EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator)); |
| 284 EXPECT_EQ(return_target.accelerator_count(), 2); | 280 EXPECT_EQ(return_target.accelerator_count(), 2); |
| 285 EXPECT_EQ(return_target2.accelerator_count(), 2); | 281 EXPECT_EQ(return_target2.accelerator_count(), 2); |
| 286 EXPECT_EQ(return_target3.accelerator_count(), 2); | 282 EXPECT_EQ(return_target3.accelerator_count(), 2); |
| 287 EXPECT_FALSE(focus_manager->ProcessAccelerator(escape_accelerator)); | 283 EXPECT_FALSE(focus_manager->ProcessAccelerator(escape_accelerator)); |
| 288 EXPECT_EQ(escape_target.accelerator_count(), 1); | 284 EXPECT_EQ(escape_target.accelerator_count(), 1); |
| 289 } | 285 } |
| 290 | 286 |
| 291 TEST_F(FocusManagerTest, HighPriorityHandlers) { | 287 TEST_F(FocusManagerTest, HighPriorityHandlers) { |
| 292 FocusManager* focus_manager = GetFocusManager(); | 288 FocusManager* focus_manager = GetFocusManager(); |
| 293 ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, ui::EF_NONE); | 289 ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, ui::EF_NONE); |
| 294 | 290 |
| 295 TestAcceleratorTarget escape_target_high(true); | 291 TestAcceleratorTarget escape_target_high(true); |
| 296 TestAcceleratorTarget escape_target_normal(true); | 292 TestAcceleratorTarget escape_target_normal(true); |
| 297 EXPECT_EQ(escape_target_high.accelerator_count(), 0); | 293 EXPECT_EQ(escape_target_high.accelerator_count(), 0); |
| 298 EXPECT_EQ(escape_target_normal.accelerator_count(), 0); | 294 EXPECT_EQ(escape_target_normal.accelerator_count(), 0); |
| 299 EXPECT_EQ(NULL, | 295 EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 300 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | |
| 301 EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator)); | 296 EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator)); |
| 302 | 297 |
| 303 // Register high priority target. | 298 // Register high priority target. |
| 304 focus_manager->RegisterAccelerator(escape_accelerator, | 299 focus_manager->RegisterAccelerator(escape_accelerator, |
| 305 ui::AcceleratorManager::kHighPriority, | 300 ui::AcceleratorManager::kHighPriority, |
| 306 &escape_target_high); | 301 &escape_target_high); |
| 307 EXPECT_EQ(&escape_target_high, | 302 EXPECT_EQ(&escape_target_high, |
| 308 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | 303 focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 309 EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator)); | 304 EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator)); |
| 310 | 305 |
| 311 // Hit the escape key. | 306 // Hit the escape key. |
| 312 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); | 307 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); |
| 313 EXPECT_EQ(escape_target_high.accelerator_count(), 1); | 308 EXPECT_EQ(escape_target_high.accelerator_count(), 1); |
| 314 EXPECT_EQ(escape_target_normal.accelerator_count(), 0); | 309 EXPECT_EQ(escape_target_normal.accelerator_count(), 0); |
| 315 | 310 |
| 316 // Add a normal priority target and make sure it doesn't see the key. | 311 // Add a normal priority target and make sure it doesn't see the key. |
| 317 focus_manager->RegisterAccelerator(escape_accelerator, | 312 focus_manager->RegisterAccelerator(escape_accelerator, |
| 318 ui::AcceleratorManager::kNormalPriority, | 313 ui::AcceleratorManager::kNormalPriority, |
| 319 &escape_target_normal); | 314 &escape_target_normal); |
| 320 | 315 |
| 321 // Checks if the correct target is registered (same as before, the high | 316 // Checks if the correct target is registered (same as before, the high |
| 322 // priority one). | 317 // priority one). |
| 323 EXPECT_EQ(&escape_target_high, | 318 EXPECT_EQ(&escape_target_high, |
| 324 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | 319 focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 325 EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator)); | 320 EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator)); |
| 326 | 321 |
| 327 // Hit the escape key. | 322 // Hit the escape key. |
| 328 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); | 323 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); |
| 329 EXPECT_EQ(escape_target_high.accelerator_count(), 2); | 324 EXPECT_EQ(escape_target_high.accelerator_count(), 2); |
| 330 EXPECT_EQ(escape_target_normal.accelerator_count(), 0); | 325 EXPECT_EQ(escape_target_normal.accelerator_count(), 0); |
| 331 | 326 |
| 332 // Unregister the high priority accelerator. | 327 // Unregister the high priority accelerator. |
| 333 focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target_high); | 328 focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target_high); |
| 334 EXPECT_EQ(&escape_target_normal, | 329 EXPECT_EQ(&escape_target_normal, |
| 335 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | 330 focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 336 EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator)); | 331 EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator)); |
| 337 | 332 |
| 338 // Hit the escape key. | 333 // Hit the escape key. |
| 339 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); | 334 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); |
| 340 EXPECT_EQ(escape_target_high.accelerator_count(), 2); | 335 EXPECT_EQ(escape_target_high.accelerator_count(), 2); |
| 341 EXPECT_EQ(escape_target_normal.accelerator_count(), 1); | 336 EXPECT_EQ(escape_target_normal.accelerator_count(), 1); |
| 342 | 337 |
| 343 // Add the high priority target back and make sure it starts seeing the key. | 338 // Add the high priority target back and make sure it starts seeing the key. |
| 344 focus_manager->RegisterAccelerator(escape_accelerator, | 339 focus_manager->RegisterAccelerator(escape_accelerator, |
| 345 ui::AcceleratorManager::kHighPriority, | 340 ui::AcceleratorManager::kHighPriority, |
| 346 &escape_target_high); | 341 &escape_target_high); |
| 347 EXPECT_EQ(&escape_target_high, | 342 EXPECT_EQ(&escape_target_high, |
| 348 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | 343 focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 349 EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator)); | 344 EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator)); |
| 350 | 345 |
| 351 // Hit the escape key. | 346 // Hit the escape key. |
| 352 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); | 347 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); |
| 353 EXPECT_EQ(escape_target_high.accelerator_count(), 3); | 348 EXPECT_EQ(escape_target_high.accelerator_count(), 3); |
| 354 EXPECT_EQ(escape_target_normal.accelerator_count(), 1); | 349 EXPECT_EQ(escape_target_normal.accelerator_count(), 1); |
| 355 | 350 |
| 356 // Unregister the normal priority accelerator. | 351 // Unregister the normal priority accelerator. |
| 357 focus_manager->UnregisterAccelerator( | 352 focus_manager->UnregisterAccelerator( |
| 358 escape_accelerator, &escape_target_normal); | 353 escape_accelerator, &escape_target_normal); |
| 359 EXPECT_EQ(&escape_target_high, | 354 EXPECT_EQ(&escape_target_high, |
| 360 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | 355 focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 361 EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator)); | 356 EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator)); |
| 362 | 357 |
| 363 // Hit the escape key. | 358 // Hit the escape key. |
| 364 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); | 359 EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator)); |
| 365 EXPECT_EQ(escape_target_high.accelerator_count(), 4); | 360 EXPECT_EQ(escape_target_high.accelerator_count(), 4); |
| 366 EXPECT_EQ(escape_target_normal.accelerator_count(), 1); | 361 EXPECT_EQ(escape_target_normal.accelerator_count(), 1); |
| 367 | 362 |
| 368 // Unregister the high priority accelerator. | 363 // Unregister the high priority accelerator. |
| 369 focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target_high); | 364 focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target_high); |
| 370 EXPECT_EQ(NULL, | 365 EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(escape_accelerator)); |
| 371 focus_manager->GetCurrentTargetForAccelerator(escape_accelerator)); | |
| 372 EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator)); | 366 EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator)); |
| 373 | 367 |
| 374 // Hit the escape key (no change, no targets registered). | 368 // Hit the escape key (no change, no targets registered). |
| 375 EXPECT_FALSE(focus_manager->ProcessAccelerator(escape_accelerator)); | 369 EXPECT_FALSE(focus_manager->ProcessAccelerator(escape_accelerator)); |
| 376 EXPECT_EQ(escape_target_high.accelerator_count(), 4); | 370 EXPECT_EQ(escape_target_high.accelerator_count(), 4); |
| 377 EXPECT_EQ(escape_target_normal.accelerator_count(), 1); | 371 EXPECT_EQ(escape_target_normal.accelerator_count(), 1); |
| 378 } | 372 } |
| 379 | 373 |
| 380 TEST_F(FocusManagerTest, CallsEnabledAcceleratorTargetsOnly) { | 374 TEST_F(FocusManagerTest, CallsEnabledAcceleratorTargetsOnly) { |
| 381 FocusManager* focus_manager = GetFocusManager(); | 375 FocusManager* focus_manager = GetFocusManager(); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 int accelerator_count_; | 435 int accelerator_count_; |
| 442 | 436 |
| 443 DISALLOW_COPY_AND_ASSIGN(SelfUnregisteringAcceleratorTarget); | 437 DISALLOW_COPY_AND_ASSIGN(SelfUnregisteringAcceleratorTarget); |
| 444 }; | 438 }; |
| 445 | 439 |
| 446 TEST_F(FocusManagerTest, CallsSelfDeletingAcceleratorTarget) { | 440 TEST_F(FocusManagerTest, CallsSelfDeletingAcceleratorTarget) { |
| 447 FocusManager* focus_manager = GetFocusManager(); | 441 FocusManager* focus_manager = GetFocusManager(); |
| 448 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); | 442 ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE); |
| 449 SelfUnregisteringAcceleratorTarget target(return_accelerator, focus_manager); | 443 SelfUnregisteringAcceleratorTarget target(return_accelerator, focus_manager); |
| 450 EXPECT_EQ(target.accelerator_count(), 0); | 444 EXPECT_EQ(target.accelerator_count(), 0); |
| 451 EXPECT_EQ(NULL, | 445 EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 452 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | |
| 453 | 446 |
| 454 // Register the target. | 447 // Register the target. |
| 455 focus_manager->RegisterAccelerator(return_accelerator, | 448 focus_manager->RegisterAccelerator(return_accelerator, |
| 456 ui::AcceleratorManager::kNormalPriority, | 449 ui::AcceleratorManager::kNormalPriority, |
| 457 &target); | 450 &target); |
| 458 EXPECT_EQ(&target, | 451 EXPECT_EQ(&target, |
| 459 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | 452 focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 460 | 453 |
| 461 // Hitting the return key. The target will be unregistered. | 454 // Hitting the return key. The target will be unregistered. |
| 462 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); | 455 EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator)); |
| 463 EXPECT_EQ(target.accelerator_count(), 1); | 456 EXPECT_EQ(target.accelerator_count(), 1); |
| 464 EXPECT_EQ(NULL, | 457 EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(return_accelerator)); |
| 465 focus_manager->GetCurrentTargetForAccelerator(return_accelerator)); | |
| 466 | 458 |
| 467 // Hitting the return key again; nothing should happen. | 459 // Hitting the return key again; nothing should happen. |
| 468 EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator)); | 460 EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator)); |
| 469 EXPECT_EQ(target.accelerator_count(), 1); | 461 EXPECT_EQ(target.accelerator_count(), 1); |
| 470 } | 462 } |
| 471 | 463 |
| 472 class FocusManagerDtorTest : public FocusManagerTest { | 464 class FocusManagerDtorTest : public FocusManagerTest { |
| 473 protected: | 465 protected: |
| 474 typedef std::vector<std::string> DtorTrackVector; | 466 typedef std::vector<std::string> DtorTrackVector; |
| 475 | 467 |
| 476 class FocusManagerDtorTracked : public FocusManager { | 468 class FocusManagerDtorTracked : public FocusManager { |
| 477 public: | 469 public: |
| 478 FocusManagerDtorTracked(Widget* widget, DtorTrackVector* dtor_tracker) | 470 FocusManagerDtorTracked(Widget* widget, DtorTrackVector* dtor_tracker) |
| 479 : FocusManager(widget, NULL /* delegate */), | 471 : FocusManager(widget), dtor_tracker_(dtor_tracker) {} |
| 480 dtor_tracker_(dtor_tracker) { | |
| 481 } | |
| 482 | 472 |
| 483 ~FocusManagerDtorTracked() override { | 473 ~FocusManagerDtorTracked() override { |
| 484 dtor_tracker_->push_back("FocusManagerDtorTracked"); | 474 dtor_tracker_->push_back("FocusManagerDtorTracked"); |
| 485 } | 475 } |
| 486 | 476 |
| 487 DtorTrackVector* dtor_tracker_; | 477 DtorTrackVector* dtor_tracker_; |
| 488 | 478 |
| 489 private: | 479 private: |
| 490 DISALLOW_COPY_AND_ASSIGN(FocusManagerDtorTracked); | 480 DISALLOW_COPY_AND_ASSIGN(FocusManagerDtorTracked); |
| 491 }; | 481 }; |
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 909 EXPECT_EQ(view1, GetFocusManager()->GetFocusedView()); | 899 EXPECT_EQ(view1, GetFocusManager()->GetFocusedView()); |
| 910 | 900 |
| 911 // Allow focus to go to the parent, and focus backwards which should now move | 901 // Allow focus to go to the parent, and focus backwards which should now move |
| 912 // up |widget_view| (in the parent). | 902 // up |widget_view| (in the parent). |
| 913 delegate->set_should_advance_focus_to_parent(true); | 903 delegate->set_should_advance_focus_to_parent(true); |
| 914 GetFocusManager()->AdvanceFocus(true); | 904 GetFocusManager()->AdvanceFocus(true); |
| 915 EXPECT_EQ(widget_view, GetFocusManager()->GetFocusedView()); | 905 EXPECT_EQ(widget_view, GetFocusManager()->GetFocusedView()); |
| 916 } | 906 } |
| 917 | 907 |
| 918 } // namespace views | 908 } // namespace views |
| OLD | NEW |