| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/mus/accelerators/accelerator_controller_delegate_mus.h" | 5 #include "ash/mus/accelerators/accelerator_controller_delegate_mus.h" |
| 6 | 6 |
| 7 #include "ash/mus/window_manager.h" | 7 #include "ash/mus/window_manager.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "mash/public/interfaces/launchable.mojom.h" | 9 #include "mash/public/interfaces/launchable.mojom.h" |
| 10 #include "services/service_manager/public/cpp/connector.h" | 10 #include "services/service_manager/public/cpp/connector.h" |
| 11 #include "services/ui/public/interfaces/constants.mojom.h" | 11 #include "services/ui/public/interfaces/constants.mojom.h" |
| 12 #include "services/ui/public/interfaces/display/display_controller.mojom.h" | 12 #include "services/ui/public/interfaces/display/display_controller.mojom.h" |
| 13 #include "services/ui/public/interfaces/display/test_display_controller.mojom.h" | 13 #include "services/ui/public/interfaces/display/test_display_controller.mojom.h" |
| 14 #include "ui/display/screen.h" | 14 #include "ui/display/screen.h" |
| 15 | 15 |
| 16 namespace ash { | 16 namespace ash { |
| 17 namespace mus { | 17 namespace mus { |
| 18 | 18 |
| 19 AcceleratorControllerDelegateMus::AcceleratorControllerDelegateMus( | 19 AcceleratorControllerDelegateMus::AcceleratorControllerDelegateMus( |
| 20 WindowManager* window_manager) | 20 WindowManager* window_manager) |
| 21 : window_manager_(window_manager) { | 21 : window_manager_(window_manager) {} |
| 22 #if !defined(OS_CHROMEOS) | |
| 23 // To avoid trybot complaining that |window_manager_| is not being used in | |
| 24 // non-ChromeOS. | |
| 25 window_manager_ = nullptr; | |
| 26 #endif | |
| 27 } | |
| 28 | 22 |
| 29 AcceleratorControllerDelegateMus::~AcceleratorControllerDelegateMus() {} | 23 AcceleratorControllerDelegateMus::~AcceleratorControllerDelegateMus() {} |
| 30 | 24 |
| 31 bool AcceleratorControllerDelegateMus::HandlesAction(AcceleratorAction action) { | 25 bool AcceleratorControllerDelegateMus::HandlesAction(AcceleratorAction action) { |
| 32 // Accelerators that return true need to work differently in mash. These | 26 // Accelerators that return true need to work differently in mash. These |
| 33 // should have implementations in CanPerformAction() and PerformAction(). | 27 // should have implementations in CanPerformAction() and PerformAction(). |
| 34 // Accelerators that return false have not been ported to work with mash yet. | 28 // Accelerators that return false have not been ported to work with mash yet. |
| 35 // If the behavior between cash and mash can be unified then the accelerator | 29 // If the behavior between cash and mash can be unified then the accelerator |
| 36 // should be moved to accelerator_controller.cc/h. See | 30 // should be moved to accelerator_controller.cc/h. See |
| 37 // http://crbug.com/612331. | 31 // http://crbug.com/612331. |
| 38 switch (action) { | 32 switch (action) { |
| 33 case DEV_ADD_REMOVE_DISPLAY: |
| 34 case DEV_TOGGLE_UNIFIED_DESKTOP: |
| 35 case ROTATE_SCREEN: |
| 39 case SCALE_UI_DOWN: | 36 case SCALE_UI_DOWN: |
| 40 case SCALE_UI_RESET: | 37 case SCALE_UI_RESET: |
| 41 case SCALE_UI_UP: | 38 case SCALE_UI_UP: |
| 42 case ROTATE_SCREEN: | 39 case SWAP_PRIMARY_DISPLAY: |
| 40 case TOGGLE_MIRROR_MODE: |
| 41 case TOUCH_HUD_PROJECTION_TOGGLE: |
| 43 return true; | 42 return true; |
| 44 case DEBUG_TOGGLE_DEVICE_SCALE_FACTOR: | 43 case DEBUG_TOGGLE_DEVICE_SCALE_FACTOR: |
| 45 case DEV_TOGGLE_ROOT_WINDOW_FULL_SCREEN: | |
| 46 case DEBUG_TOGGLE_SHOW_DEBUG_BORDERS: | 44 case DEBUG_TOGGLE_SHOW_DEBUG_BORDERS: |
| 47 case DEBUG_TOGGLE_SHOW_FPS_COUNTER: | 45 case DEBUG_TOGGLE_SHOW_FPS_COUNTER: |
| 48 case DEBUG_TOGGLE_SHOW_PAINT_RECTS: | 46 case DEBUG_TOGGLE_SHOW_PAINT_RECTS: |
| 47 case DEV_TOGGLE_ROOT_WINDOW_FULL_SCREEN: |
| 48 case LOCK_PRESSED: |
| 49 case LOCK_RELEASED: |
| 49 case MAGNIFY_SCREEN_ZOOM_IN: | 50 case MAGNIFY_SCREEN_ZOOM_IN: |
| 50 case MAGNIFY_SCREEN_ZOOM_OUT: | 51 case MAGNIFY_SCREEN_ZOOM_OUT: |
| 52 case POWER_PRESSED: |
| 53 case POWER_RELEASED: |
| 51 case ROTATE_WINDOW: | 54 case ROTATE_WINDOW: |
| 52 case SHOW_SYSTEM_TRAY_BUBBLE: | 55 case SHOW_SYSTEM_TRAY_BUBBLE: |
| 53 case TAKE_PARTIAL_SCREENSHOT: | 56 case TAKE_PARTIAL_SCREENSHOT: |
| 54 case TAKE_SCREENSHOT: | 57 case TAKE_SCREENSHOT: |
| 55 case TAKE_WINDOW_SCREENSHOT: | 58 case TAKE_WINDOW_SCREENSHOT: |
| 59 case TOUCH_HUD_CLEAR: |
| 60 case TOUCH_HUD_MODE_CHANGE: |
| 56 case UNPIN: | 61 case UNPIN: |
| 57 NOTIMPLEMENTED(); | 62 NOTIMPLEMENTED(); |
| 58 return false; | 63 return false; |
| 59 | |
| 60 #if defined(OS_CHROMEOS) | |
| 61 case DEV_ADD_REMOVE_DISPLAY: | |
| 62 case DEV_TOGGLE_UNIFIED_DESKTOP: | |
| 63 case SWAP_PRIMARY_DISPLAY: | |
| 64 case TOGGLE_MIRROR_MODE: | |
| 65 case TOUCH_HUD_PROJECTION_TOGGLE: | |
| 66 return true; | |
| 67 case LOCK_PRESSED: | |
| 68 case LOCK_RELEASED: | |
| 69 case POWER_PRESSED: | |
| 70 case POWER_RELEASED: | |
| 71 case TOUCH_HUD_CLEAR: | |
| 72 case TOUCH_HUD_MODE_CHANGE: | |
| 73 NOTIMPLEMENTED(); | |
| 74 return false; | |
| 75 #endif | |
| 76 | |
| 77 default: | 64 default: |
| 78 break; | 65 break; |
| 79 } | 66 } |
| 80 return false; | 67 return false; |
| 81 } | 68 } |
| 82 | 69 |
| 83 bool AcceleratorControllerDelegateMus::CanPerformAction( | 70 bool AcceleratorControllerDelegateMus::CanPerformAction( |
| 84 AcceleratorAction action, | 71 AcceleratorAction action, |
| 85 const ui::Accelerator& accelerator, | 72 const ui::Accelerator& accelerator, |
| 86 const ui::Accelerator& previous_accelerator) { | 73 const ui::Accelerator& previous_accelerator) { |
| 87 switch (action) { | 74 switch (action) { |
| 75 case DEV_ADD_REMOVE_DISPLAY: |
| 76 case DEV_TOGGLE_UNIFIED_DESKTOP: |
| 88 case ROTATE_SCREEN: | 77 case ROTATE_SCREEN: |
| 89 case SCALE_UI_DOWN: | 78 case SCALE_UI_DOWN: |
| 90 case SCALE_UI_RESET: | 79 case SCALE_UI_RESET: |
| 91 case SCALE_UI_UP: | 80 case SCALE_UI_UP: |
| 92 return true; | 81 return true; |
| 93 #if defined(OS_CHROMEOS) | |
| 94 case DEV_ADD_REMOVE_DISPLAY: | |
| 95 case DEV_TOGGLE_UNIFIED_DESKTOP: | |
| 96 return true; | |
| 97 case SWAP_PRIMARY_DISPLAY: | 82 case SWAP_PRIMARY_DISPLAY: |
| 98 return display::Screen::GetScreen()->GetNumDisplays() > 1; | 83 return display::Screen::GetScreen()->GetNumDisplays() > 1; |
| 99 case TOGGLE_MIRROR_MODE: | 84 case TOGGLE_MIRROR_MODE: |
| 100 case TOUCH_HUD_PROJECTION_TOGGLE: | 85 case TOUCH_HUD_PROJECTION_TOGGLE: |
| 101 return true; | 86 return true; |
| 102 #endif | |
| 103 default: | 87 default: |
| 104 break; | 88 break; |
| 105 } | 89 } |
| 106 return false; | 90 return false; |
| 107 } | 91 } |
| 108 | 92 |
| 109 void AcceleratorControllerDelegateMus::PerformAction( | 93 void AcceleratorControllerDelegateMus::PerformAction( |
| 110 AcceleratorAction action, | 94 AcceleratorAction action, |
| 111 const ui::Accelerator& accelerator) { | 95 const ui::Accelerator& accelerator) { |
| 112 switch (action) { | 96 switch (action) { |
| 113 case ROTATE_SCREEN: { | |
| 114 window_manager_->GetDisplayController()->RotateCurrentDisplayCW(); | |
| 115 break; | |
| 116 } | |
| 117 case SCALE_UI_DOWN: { | |
| 118 window_manager_->GetDisplayController()->DecreaseInternalDisplayZoom(); | |
| 119 break; | |
| 120 } | |
| 121 case SCALE_UI_RESET: { | |
| 122 window_manager_->GetDisplayController()->ResetInternalDisplayZoom(); | |
| 123 break; | |
| 124 } | |
| 125 case SCALE_UI_UP: { | |
| 126 window_manager_->GetDisplayController()->IncreaseInternalDisplayZoom(); | |
| 127 break; | |
| 128 } | |
| 129 #if defined(OS_CHROMEOS) | |
| 130 case DEV_ADD_REMOVE_DISPLAY: { | 97 case DEV_ADD_REMOVE_DISPLAY: { |
| 131 display::mojom::TestDisplayControllerPtr test_display_controller; | 98 display::mojom::TestDisplayControllerPtr test_display_controller; |
| 132 window_manager_->connector()->BindInterface(ui::mojom::kServiceName, | 99 window_manager_->connector()->BindInterface(ui::mojom::kServiceName, |
| 133 &test_display_controller); | 100 &test_display_controller); |
| 134 test_display_controller->ToggleAddRemoveDisplay(); | 101 test_display_controller->ToggleAddRemoveDisplay(); |
| 135 break; | 102 break; |
| 136 } | 103 } |
| 137 case DEV_TOGGLE_UNIFIED_DESKTOP: { | 104 case DEV_TOGGLE_UNIFIED_DESKTOP: { |
| 138 // TODO(crbug.com/657816): This is hack. I'm just stealing the shortcut | 105 // TODO(crbug.com/657816): This is hack. I'm just stealing the shortcut |
| 139 // key to toggle display size in mus. This should be removed by launch. | 106 // key to toggle display size in mus. This should be removed by launch. |
| 140 display::mojom::TestDisplayControllerPtr test_display_controller; | 107 display::mojom::TestDisplayControllerPtr test_display_controller; |
| 141 window_manager_->connector()->BindInterface(ui::mojom::kServiceName, | 108 window_manager_->connector()->BindInterface(ui::mojom::kServiceName, |
| 142 &test_display_controller); | 109 &test_display_controller); |
| 143 test_display_controller->ToggleDisplayResolution(); | 110 test_display_controller->ToggleDisplayResolution(); |
| 144 break; | 111 break; |
| 145 } | 112 } |
| 113 case ROTATE_SCREEN: { |
| 114 window_manager_->GetDisplayController()->RotateCurrentDisplayCW(); |
| 115 break; |
| 116 } |
| 117 case SCALE_UI_DOWN: { |
| 118 window_manager_->GetDisplayController()->DecreaseInternalDisplayZoom(); |
| 119 break; |
| 120 } |
| 121 case SCALE_UI_RESET: { |
| 122 window_manager_->GetDisplayController()->ResetInternalDisplayZoom(); |
| 123 break; |
| 124 } |
| 125 case SCALE_UI_UP: { |
| 126 window_manager_->GetDisplayController()->IncreaseInternalDisplayZoom(); |
| 127 break; |
| 128 } |
| 146 case SWAP_PRIMARY_DISPLAY: { | 129 case SWAP_PRIMARY_DISPLAY: { |
| 147 window_manager_->GetDisplayController()->SwapPrimaryDisplay(); | 130 window_manager_->GetDisplayController()->SwapPrimaryDisplay(); |
| 148 break; | 131 break; |
| 149 } | 132 } |
| 150 case TOGGLE_MIRROR_MODE: { | 133 case TOGGLE_MIRROR_MODE: { |
| 151 window_manager_->GetDisplayController()->ToggleMirrorMode(); | 134 window_manager_->GetDisplayController()->ToggleMirrorMode(); |
| 152 break; | 135 break; |
| 153 } | 136 } |
| 154 case TOUCH_HUD_PROJECTION_TOGGLE: { | 137 case TOUCH_HUD_PROJECTION_TOGGLE: { |
| 155 mash::mojom::LaunchablePtr launchable; | 138 mash::mojom::LaunchablePtr launchable; |
| 156 window_manager_->connector()->BindInterface("touch_hud", &launchable); | 139 window_manager_->connector()->BindInterface("touch_hud", &launchable); |
| 157 launchable->Launch(mash::mojom::kWindow, | 140 launchable->Launch(mash::mojom::kWindow, |
| 158 mash::mojom::LaunchMode::DEFAULT); | 141 mash::mojom::LaunchMode::DEFAULT); |
| 159 break; | 142 break; |
| 160 } | 143 } |
| 161 #endif | |
| 162 default: | 144 default: |
| 163 NOTREACHED(); | 145 NOTREACHED(); |
| 164 } | 146 } |
| 165 } | 147 } |
| 166 | 148 |
| 167 void AcceleratorControllerDelegateMus::ShowDeprecatedAcceleratorNotification( | 149 void AcceleratorControllerDelegateMus::ShowDeprecatedAcceleratorNotification( |
| 168 const char* const notification_id, | 150 const char* const notification_id, |
| 169 int message_id, | 151 int message_id, |
| 170 int old_shortcut_id, | 152 int old_shortcut_id, |
| 171 int new_shortcut_id) { | 153 int new_shortcut_id) { |
| 172 // TODO: http://crbug.com/630316. | 154 // TODO: http://crbug.com/630316. |
| 173 NOTIMPLEMENTED(); | 155 NOTIMPLEMENTED(); |
| 174 } | 156 } |
| 175 | 157 |
| 176 } // namespace mus | 158 } // namespace mus |
| 177 } // namespace ash | 159 } // namespace ash |
| OLD | NEW |