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/accelerators/accelerator_controller.h" | 5 #include "ash/accelerators/accelerator_controller.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 } | 233 } |
234 | 234 |
235 void HandleLaunchLastApp() { | 235 void HandleLaunchLastApp() { |
236 base::RecordAction(UserMetricsAction("Accel_Launch_Last_App")); | 236 base::RecordAction(UserMetricsAction("Accel_Launch_Last_App")); |
237 Shelf::ForPrimaryDisplay()->LaunchAppIndexAt(-1); | 237 Shelf::ForPrimaryDisplay()->LaunchAppIndexAt(-1); |
238 } | 238 } |
239 | 239 |
240 bool CanHandleMagnifyScreen() { | 240 bool CanHandleMagnifyScreen() { |
241 Shell* shell = Shell::GetInstance(); | 241 Shell* shell = Shell::GetInstance(); |
242 return shell->magnification_controller()->IsEnabled() || | 242 return shell->magnification_controller()->IsEnabled() || |
243 shell->partial_magnification_controller()->is_enabled(); | 243 shell->partial_magnification_controller()->is_enabled(); |
244 } | 244 } |
245 | 245 |
246 // Magnify the screen | 246 // Magnify the screen |
247 void HandleMagnifyScreen(int delta_index) { | 247 void HandleMagnifyScreen(int delta_index) { |
248 if (ash::Shell::GetInstance()->magnification_controller()->IsEnabled()) { | 248 if (ash::Shell::GetInstance()->magnification_controller()->IsEnabled()) { |
249 // TODO(yoshiki): Move the following logic to MagnificationController. | 249 // TODO(yoshiki): Move the following logic to MagnificationController. |
250 float scale = | 250 float scale = |
251 ash::Shell::GetInstance()->magnification_controller()->GetScale(); | 251 ash::Shell::GetInstance()->magnification_controller()->GetScale(); |
252 // Calculate rounded logarithm (base kMagnificationScaleFactor) of scale. | 252 // Calculate rounded logarithm (base kMagnificationScaleFactor) of scale. |
253 int scale_index = | 253 int scale_index = |
254 std::floor(std::log(scale) / std::log(kMagnificationScaleFactor) + 0.5); | 254 std::floor(std::log(scale) / std::log(kMagnificationScaleFactor) + 0.5); |
255 | 255 |
256 int new_scale_index = std::max(0, std::min(8, scale_index + delta_index)); | 256 int new_scale_index = std::max(0, std::min(8, scale_index + delta_index)); |
257 | 257 |
258 ash::Shell::GetInstance()->magnification_controller()->SetScale( | 258 ash::Shell::GetInstance()->magnification_controller()->SetScale( |
259 std::pow(kMagnificationScaleFactor, new_scale_index), true); | 259 std::pow(kMagnificationScaleFactor, new_scale_index), true); |
260 } else if (ash::Shell::GetInstance()-> | 260 } else if (ash::Shell::GetInstance() |
261 partial_magnification_controller()->is_enabled()) { | 261 ->partial_magnification_controller() |
| 262 ->is_enabled()) { |
262 float scale = delta_index > 0 ? kDefaultPartialMagnifiedScale : 1; | 263 float scale = delta_index > 0 ? kDefaultPartialMagnifiedScale : 1; |
263 ash::Shell::GetInstance()->partial_magnification_controller()-> | 264 ash::Shell::GetInstance()->partial_magnification_controller()->SetScale( |
264 SetScale(scale); | 265 scale); |
265 } | 266 } |
266 } | 267 } |
267 | 268 |
268 void HandleMediaNextTrack() { | 269 void HandleMediaNextTrack() { |
269 Shell::GetInstance()->media_delegate()->HandleMediaNextTrack(); | 270 Shell::GetInstance()->media_delegate()->HandleMediaNextTrack(); |
270 } | 271 } |
271 | 272 |
272 void HandleMediaPlayPause() { | 273 void HandleMediaPlayPause() { |
273 Shell::GetInstance()->media_delegate()->HandleMediaPlayPause(); | 274 Shell::GetInstance()->media_delegate()->HandleMediaPlayPause(); |
274 } | 275 } |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 | 384 |
384 // Rotate the active window. | 385 // Rotate the active window. |
385 void HandleRotateActiveWindow() { | 386 void HandleRotateActiveWindow() { |
386 base::RecordAction(UserMetricsAction("Accel_Rotate_Window")); | 387 base::RecordAction(UserMetricsAction("Accel_Rotate_Window")); |
387 aura::Window* active_window = wm::GetActiveWindow(); | 388 aura::Window* active_window = wm::GetActiveWindow(); |
388 if (active_window) { | 389 if (active_window) { |
389 // The rotation animation bases its target transform on the current | 390 // The rotation animation bases its target transform on the current |
390 // rotation and position. Since there could be an animation in progress | 391 // rotation and position. Since there could be an animation in progress |
391 // right now, queue this animation so when it starts it picks up a neutral | 392 // right now, queue this animation so when it starts it picks up a neutral |
392 // rotation and position. Use replace so we only enqueue one at a time. | 393 // rotation and position. Use replace so we only enqueue one at a time. |
393 active_window->layer()->GetAnimator()-> | 394 active_window->layer()->GetAnimator()->set_preemption_strategy( |
394 set_preemption_strategy(ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); | 395 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); |
395 active_window->layer()->GetAnimator()->StartAnimation( | 396 active_window->layer()->GetAnimator()->StartAnimation( |
396 new ui::LayerAnimationSequence( | 397 new ui::LayerAnimationSequence( |
397 new ash::WindowRotation(360, active_window->layer()))); | 398 new ash::WindowRotation(360, active_window->layer()))); |
398 } | 399 } |
399 } | 400 } |
400 | 401 |
401 void HandleShowKeyboardOverlay() { | 402 void HandleShowKeyboardOverlay() { |
402 base::RecordAction(UserMetricsAction("Accel_Show_Keyboard_Overlay")); | 403 base::RecordAction(UserMetricsAction("Accel_Show_Keyboard_Overlay")); |
403 ash::Shell::GetInstance()->new_window_delegate()->ShowKeyboardOverlay(); | 404 ash::Shell::GetInstance()->new_window_delegate()->ShowKeyboardOverlay(); |
404 } | 405 } |
(...skipping 30 matching lines...) Expand all Loading... |
435 } | 436 } |
436 | 437 |
437 void HandleShowTaskManager() { | 438 void HandleShowTaskManager() { |
438 base::RecordAction(UserMetricsAction("Accel_Show_Task_Manager")); | 439 base::RecordAction(UserMetricsAction("Accel_Show_Task_Manager")); |
439 Shell::GetInstance()->new_window_delegate()->ShowTaskManager(); | 440 Shell::GetInstance()->new_window_delegate()->ShowTaskManager(); |
440 } | 441 } |
441 | 442 |
442 bool CanHandleSwitchIme(ImeControlDelegate* ime_control_delegate, | 443 bool CanHandleSwitchIme(ImeControlDelegate* ime_control_delegate, |
443 const ui::Accelerator& accelerator) { | 444 const ui::Accelerator& accelerator) { |
444 return ime_control_delegate && | 445 return ime_control_delegate && |
445 ime_control_delegate->CanSwitchIme(accelerator); | 446 ime_control_delegate->CanSwitchIme(accelerator); |
446 } | 447 } |
447 | 448 |
448 void HandleSwitchIme(ImeControlDelegate* ime_control_delegate, | 449 void HandleSwitchIme(ImeControlDelegate* ime_control_delegate, |
449 const ui::Accelerator& accelerator) { | 450 const ui::Accelerator& accelerator) { |
450 base::RecordAction(UserMetricsAction("Accel_Switch_Ime")); | 451 base::RecordAction(UserMetricsAction("Accel_Switch_Ime")); |
451 ime_control_delegate->HandleSwitchIme(accelerator); | 452 ime_control_delegate->HandleSwitchIme(accelerator); |
452 } | 453 } |
453 | 454 |
454 void HandleTakeWindowScreenshot(ScreenshotDelegate* screenshot_delegate) { | 455 void HandleTakeWindowScreenshot(ScreenshotDelegate* screenshot_delegate) { |
455 base::RecordAction(UserMetricsAction("Accel_Take_Window_Screenshot")); | 456 base::RecordAction(UserMetricsAction("Accel_Take_Window_Screenshot")); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 return (window_state && window_state->IsUserPositionable() && | 520 return (window_state && window_state->IsUserPositionable() && |
520 !window_state->IsFullscreen()); | 521 !window_state->IsFullscreen()); |
521 } | 522 } |
522 | 523 |
523 void HandleWindowSnapOrDock(AcceleratorAction action) { | 524 void HandleWindowSnapOrDock(AcceleratorAction action) { |
524 if (action == WINDOW_CYCLE_SNAP_DOCK_LEFT) | 525 if (action == WINDOW_CYCLE_SNAP_DOCK_LEFT) |
525 base::RecordAction(UserMetricsAction("Accel_Window_Snap_Left")); | 526 base::RecordAction(UserMetricsAction("Accel_Window_Snap_Left")); |
526 else | 527 else |
527 base::RecordAction(UserMetricsAction("Accel_Window_Snap_Right")); | 528 base::RecordAction(UserMetricsAction("Accel_Window_Snap_Right")); |
528 | 529 |
529 const wm::WMEvent event(action == WINDOW_CYCLE_SNAP_DOCK_LEFT ? | 530 const wm::WMEvent event(action == WINDOW_CYCLE_SNAP_DOCK_LEFT |
530 wm::WM_EVENT_CYCLE_SNAP_DOCK_LEFT : | 531 ? wm::WM_EVENT_CYCLE_SNAP_DOCK_LEFT |
531 wm::WM_EVENT_CYCLE_SNAP_DOCK_RIGHT); | 532 : wm::WM_EVENT_CYCLE_SNAP_DOCK_RIGHT); |
532 wm::GetActiveWindowState()->OnWMEvent(&event); | 533 wm::GetActiveWindowState()->OnWMEvent(&event); |
533 } | 534 } |
534 | 535 |
535 void HandleWindowMinimize() { | 536 void HandleWindowMinimize() { |
536 base::RecordAction( | 537 base::RecordAction(base::UserMetricsAction("Accel_Toggle_Minimized_Minus")); |
537 base::UserMetricsAction("Accel_Toggle_Minimized_Minus")); | |
538 accelerators::ToggleMinimized(); | 538 accelerators::ToggleMinimized(); |
539 } | 539 } |
540 | 540 |
541 bool CanHandlePositionCenter() { | 541 bool CanHandlePositionCenter() { |
542 // Docked windows do not support centering. | 542 // Docked windows do not support centering. |
543 wm::WindowState* window_state = wm::GetActiveWindowState(); | 543 wm::WindowState* window_state = wm::GetActiveWindowState(); |
544 return (window_state && !window_state->IsDocked()); | 544 return (window_state && !window_state->IsDocked()); |
545 } | 545 } |
546 | 546 |
547 void HandlePositionCenter() { | 547 void HandlePositionCenter() { |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 | 639 |
640 void HandleSwapPrimaryDisplay() { | 640 void HandleSwapPrimaryDisplay() { |
641 base::RecordAction(UserMetricsAction("Accel_Swap_Primary_Display")); | 641 base::RecordAction(UserMetricsAction("Accel_Swap_Primary_Display")); |
642 Shell::GetInstance()->display_configuration_controller()->SetPrimaryDisplayId( | 642 Shell::GetInstance()->display_configuration_controller()->SetPrimaryDisplayId( |
643 ScreenUtil::GetSecondaryDisplay().id(), true /* user_action */); | 643 ScreenUtil::GetSecondaryDisplay().id(), true /* user_action */); |
644 } | 644 } |
645 | 645 |
646 bool CanHandleCycleUser() { | 646 bool CanHandleCycleUser() { |
647 Shell* shell = Shell::GetInstance(); | 647 Shell* shell = Shell::GetInstance(); |
648 return shell->delegate()->IsMultiProfilesEnabled() && | 648 return shell->delegate()->IsMultiProfilesEnabled() && |
649 shell->session_state_delegate()->NumberOfLoggedInUsers() > 1; | 649 shell->session_state_delegate()->NumberOfLoggedInUsers() > 1; |
650 } | 650 } |
651 | 651 |
652 void HandleCycleUser(SessionStateDelegate::CycleUser cycle_user) { | 652 void HandleCycleUser(SessionStateDelegate::CycleUser cycle_user) { |
653 MultiProfileUMA::RecordSwitchActiveUser( | 653 MultiProfileUMA::RecordSwitchActiveUser( |
654 MultiProfileUMA::SWITCH_ACTIVE_USER_BY_ACCELERATOR); | 654 MultiProfileUMA::SWITCH_ACTIVE_USER_BY_ACCELERATOR); |
655 switch (cycle_user) { | 655 switch (cycle_user) { |
656 case SessionStateDelegate::CYCLE_TO_NEXT_USER: | 656 case SessionStateDelegate::CYCLE_TO_NEXT_USER: |
657 base::RecordAction(UserMetricsAction("Accel_Switch_To_Next_User")); | 657 base::RecordAction(UserMetricsAction("Accel_Switch_To_Next_User")); |
658 break; | 658 break; |
659 case SessionStateDelegate::CYCLE_TO_PREVIOUS_USER: | 659 case SessionStateDelegate::CYCLE_TO_PREVIOUS_USER: |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
742 | 742 |
743 //////////////////////////////////////////////////////////////////////////////// | 743 //////////////////////////////////////////////////////////////////////////////// |
744 // AcceleratorController, public: | 744 // AcceleratorController, public: |
745 | 745 |
746 AcceleratorController::AcceleratorController() | 746 AcceleratorController::AcceleratorController() |
747 : accelerator_manager_(new ui::AcceleratorManager), | 747 : accelerator_manager_(new ui::AcceleratorManager), |
748 accelerator_history_(new ui::AcceleratorHistory) { | 748 accelerator_history_(new ui::AcceleratorHistory) { |
749 Init(); | 749 Init(); |
750 } | 750 } |
751 | 751 |
752 AcceleratorController::~AcceleratorController() { | 752 AcceleratorController::~AcceleratorController() {} |
753 } | |
754 | 753 |
755 void AcceleratorController::Register(const ui::Accelerator& accelerator, | 754 void AcceleratorController::Register(const ui::Accelerator& accelerator, |
756 ui::AcceleratorTarget* target) { | 755 ui::AcceleratorTarget* target) { |
757 accelerator_manager_->Register(accelerator, | 756 accelerator_manager_->Register( |
758 ui::AcceleratorManager::kNormalPriority, | 757 accelerator, ui::AcceleratorManager::kNormalPriority, target); |
759 target); | |
760 } | 758 } |
761 | 759 |
762 void AcceleratorController::Unregister(const ui::Accelerator& accelerator, | 760 void AcceleratorController::Unregister(const ui::Accelerator& accelerator, |
763 ui::AcceleratorTarget* target) { | 761 ui::AcceleratorTarget* target) { |
764 accelerator_manager_->Unregister(accelerator, target); | 762 accelerator_manager_->Unregister(accelerator, target); |
765 } | 763 } |
766 | 764 |
767 void AcceleratorController::UnregisterAll(ui::AcceleratorTarget* target) { | 765 void AcceleratorController::UnregisterAll(ui::AcceleratorTarget* target) { |
768 accelerator_manager_->UnregisterAll(target); | 766 accelerator_manager_->UnregisterAll(target); |
769 } | 767 } |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
944 } | 942 } |
945 | 943 |
946 void AcceleratorController::RegisterAccelerators( | 944 void AcceleratorController::RegisterAccelerators( |
947 const AcceleratorData accelerators[], | 945 const AcceleratorData accelerators[], |
948 size_t accelerators_length) { | 946 size_t accelerators_length) { |
949 for (size_t i = 0; i < accelerators_length; ++i) { | 947 for (size_t i = 0; i < accelerators_length; ++i) { |
950 ui::Accelerator accelerator = | 948 ui::Accelerator accelerator = |
951 CreateAccelerator(accelerators[i].keycode, accelerators[i].modifiers, | 949 CreateAccelerator(accelerators[i].keycode, accelerators[i].modifiers, |
952 accelerators[i].trigger_on_press); | 950 accelerators[i].trigger_on_press); |
953 Register(accelerator, this); | 951 Register(accelerator, this); |
954 accelerators_.insert( | 952 accelerators_.insert(std::make_pair(accelerator, accelerators[i].action)); |
955 std::make_pair(accelerator, accelerators[i].action)); | |
956 } | 953 } |
957 } | 954 } |
958 | 955 |
959 void AcceleratorController::RegisterDeprecatedAccelerators() { | 956 void AcceleratorController::RegisterDeprecatedAccelerators() { |
960 #if defined(OS_CHROMEOS) | 957 #if defined(OS_CHROMEOS) |
961 for (size_t i = 0; i < kDeprecatedAcceleratorsDataLength; ++i) { | 958 for (size_t i = 0; i < kDeprecatedAcceleratorsDataLength; ++i) { |
962 const DeprecatedAcceleratorData* data = &kDeprecatedAcceleratorsData[i]; | 959 const DeprecatedAcceleratorData* data = &kDeprecatedAcceleratorsData[i]; |
963 actions_with_deprecations_[data->action] = data; | 960 actions_with_deprecations_[data->action] = data; |
964 } | 961 } |
965 | 962 |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1314 case KEYBOARD_BRIGHTNESS_DOWN: | 1311 case KEYBOARD_BRIGHTNESS_DOWN: |
1315 HandleKeyboardBrightnessDown(keyboard_brightness_control_delegate_.get(), | 1312 HandleKeyboardBrightnessDown(keyboard_brightness_control_delegate_.get(), |
1316 accelerator); | 1313 accelerator); |
1317 break; | 1314 break; |
1318 case KEYBOARD_BRIGHTNESS_UP: | 1315 case KEYBOARD_BRIGHTNESS_UP: |
1319 HandleKeyboardBrightnessUp(keyboard_brightness_control_delegate_.get(), | 1316 HandleKeyboardBrightnessUp(keyboard_brightness_control_delegate_.get(), |
1320 accelerator); | 1317 accelerator); |
1321 break; | 1318 break; |
1322 case LOCK_PRESSED: | 1319 case LOCK_PRESSED: |
1323 case LOCK_RELEASED: | 1320 case LOCK_RELEASED: |
1324 Shell::GetInstance()->power_button_controller()-> | 1321 Shell::GetInstance()->power_button_controller()->OnLockButtonEvent( |
1325 OnLockButtonEvent(action == LOCK_PRESSED, base::TimeTicks()); | 1322 action == LOCK_PRESSED, base::TimeTicks()); |
1326 break; | 1323 break; |
1327 case LOCK_SCREEN: | 1324 case LOCK_SCREEN: |
1328 HandleLock(); | 1325 HandleLock(); |
1329 break; | 1326 break; |
1330 case OPEN_CROSH: | 1327 case OPEN_CROSH: |
1331 HandleCrosh(); | 1328 HandleCrosh(); |
1332 break; | 1329 break; |
1333 case OPEN_FILE_MANAGER: | 1330 case OPEN_FILE_MANAGER: |
1334 HandleFileManager(); | 1331 HandleFileManager(); |
1335 break; | 1332 break; |
1336 case OPEN_GET_HELP: | 1333 case OPEN_GET_HELP: |
1337 HandleGetHelp(); | 1334 HandleGetHelp(); |
1338 break; | 1335 break; |
1339 case POWER_PRESSED: // fallthrough | 1336 case POWER_PRESSED: // fallthrough |
1340 case POWER_RELEASED: | 1337 case POWER_RELEASED: |
1341 if (!base::SysInfo::IsRunningOnChromeOS()) { | 1338 if (!base::SysInfo::IsRunningOnChromeOS()) { |
1342 // There is no powerd, the Chrome OS power manager, in linux desktop, | 1339 // There is no powerd, the Chrome OS power manager, in linux desktop, |
1343 // so call the PowerButtonController here. | 1340 // so call the PowerButtonController here. |
1344 Shell::GetInstance()->power_button_controller()-> | 1341 Shell::GetInstance()->power_button_controller()->OnPowerButtonEvent( |
1345 OnPowerButtonEvent(action == POWER_PRESSED, base::TimeTicks()); | 1342 action == POWER_PRESSED, base::TimeTicks()); |
1346 } | 1343 } |
1347 // We don't do anything with these at present on the device, | 1344 // We don't do anything with these at present on the device, |
1348 // (power button events are reported to us from powerm via | 1345 // (power button events are reported to us from powerm via |
1349 // D-BUS), but we consume them to prevent them from getting | 1346 // D-BUS), but we consume them to prevent them from getting |
1350 // passed to apps -- see http://crbug.com/146609. | 1347 // passed to apps -- see http://crbug.com/146609. |
1351 break; | 1348 break; |
1352 case SUSPEND: | 1349 case SUSPEND: |
1353 HandleSuspend(); | 1350 HandleSuspend(); |
1354 break; | 1351 break; |
1355 case SWAP_PRIMARY_DISPLAY: | 1352 case SWAP_PRIMARY_DISPLAY: |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1447 } | 1444 } |
1448 | 1445 |
1449 void AcceleratorController::SetKeyboardBrightnessControlDelegate( | 1446 void AcceleratorController::SetKeyboardBrightnessControlDelegate( |
1450 std::unique_ptr<KeyboardBrightnessControlDelegate> | 1447 std::unique_ptr<KeyboardBrightnessControlDelegate> |
1451 keyboard_brightness_control_delegate) { | 1448 keyboard_brightness_control_delegate) { |
1452 keyboard_brightness_control_delegate_ = | 1449 keyboard_brightness_control_delegate_ = |
1453 std::move(keyboard_brightness_control_delegate); | 1450 std::move(keyboard_brightness_control_delegate); |
1454 } | 1451 } |
1455 | 1452 |
1456 } // namespace ash | 1453 } // namespace ash |
OLD | NEW |