OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/ash_touch_exploration_manager_chromeos.h" | 5 #include "ash/ash_touch_exploration_manager_chromeos.h" |
6 | 6 |
7 #include "ash/aura/wm_root_window_controller_aura.h" | 7 #include "ash/aura/wm_root_window_controller_aura.h" |
8 #include "ash/common/accessibility_delegate.h" | 8 #include "ash/common/accessibility_delegate.h" |
9 #include "ash/common/system/tray/system_tray_notifier.h" | 9 #include "ash/common/system/tray/system_tray_notifier.h" |
10 #include "ash/common/wm_shell.h" | 10 #include "ash/common/wm_shell.h" |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 void AshTouchExplorationManager::OnDisplayMetricsChanged( | 95 void AshTouchExplorationManager::OnDisplayMetricsChanged( |
96 const display::Display& display, | 96 const display::Display& display, |
97 uint32_t changed_metrics) { | 97 uint32_t changed_metrics) { |
98 if (root_window_controller_->wm_root_window_controller() | 98 if (root_window_controller_->wm_root_window_controller() |
99 ->GetWindow() | 99 ->GetWindow() |
100 ->GetDisplayNearestWindow() | 100 ->GetDisplayNearestWindow() |
101 .id() == display.id()) | 101 .id() == display.id()) |
102 UpdateTouchExplorationState(); | 102 UpdateTouchExplorationState(); |
103 } | 103 } |
104 | 104 |
105 void AshTouchExplorationManager::PlaySpokenFeedbackToggleCountdown( | |
106 int tick_count) { | |
107 WmShell::Get()->accessibility_delegate()->PlaySpokenFeedbackToggleCountdown( | |
108 tick_count); | |
109 } | |
110 | |
111 void AshTouchExplorationManager::ToggleSpokenFeedback() { | |
112 WmShell::Get()->accessibility_delegate()->ToggleSpokenFeedback( | |
113 ash::A11Y_NOTIFICATION_SHOW); | |
114 } | |
115 | |
116 void AshTouchExplorationManager::OnWindowActivated( | 105 void AshTouchExplorationManager::OnWindowActivated( |
117 aura::client::ActivationChangeObserver::ActivationReason reason, | 106 aura::client::ActivationChangeObserver::ActivationReason reason, |
118 aura::Window* gained_active, | 107 aura::Window* gained_active, |
119 aura::Window* lost_active) { | 108 aura::Window* lost_active) { |
120 UpdateTouchExplorationState(); | 109 UpdateTouchExplorationState(); |
121 } | 110 } |
122 | 111 |
123 void AshTouchExplorationManager::SetTouchAccessibilityAnchorPoint( | 112 void AshTouchExplorationManager::SetTouchAccessibilityAnchorPoint( |
124 const gfx::Point& anchor_point) { | 113 const gfx::Point& anchor_point) { |
125 if (touch_exploration_controller_) { | 114 if (touch_exploration_controller_) { |
126 touch_exploration_controller_->SetTouchAccessibilityAnchorPoint( | 115 touch_exploration_controller_->SetTouchAccessibilityAnchorPoint( |
127 anchor_point); | 116 anchor_point); |
128 } | 117 } |
129 } | 118 } |
130 | 119 |
131 void AshTouchExplorationManager::UpdateTouchExplorationState() { | 120 void AshTouchExplorationManager::UpdateTouchExplorationState() { |
132 // Comes from components/exo/shell_surface.cc. | 121 // Comes from components/exo/shell_surface.cc. |
133 const char kExoShellSurfaceWindowName[] = "ExoShellSurface"; | 122 const char kExoShellSurfaceWindowName[] = "ExoShellSurface"; |
134 | 123 |
135 // See crbug.com/603745 for more details. | 124 // See crbug.com/603745 for more details. |
136 const bool pass_through_surface = | 125 const bool pass_through_surface = |
137 wm::GetActiveWindow() && | 126 wm::GetActiveWindow() && |
138 wm::GetActiveWindow()->GetName() == kExoShellSurfaceWindowName; | 127 wm::GetActiveWindow()->GetName() == kExoShellSurfaceWindowName; |
139 | 128 |
140 const bool spoken_feedback_enabled = | 129 const bool spoken_feedback_enabled = |
141 WmShell::Get()->accessibility_delegate()->IsSpokenFeedbackEnabled(); | 130 WmShell::Get()->accessibility_delegate()->IsSpokenFeedbackEnabled(); |
142 | 131 |
143 if (!touch_accessibility_enabler_) { | |
144 // Always enable gesture to toggle spoken feedback. | |
145 touch_accessibility_enabler_.reset(new ui::TouchAccessibilityEnabler( | |
146 root_window_controller_->GetRootWindow(), this)); | |
147 } | |
148 | |
149 if (spoken_feedback_enabled) { | 132 if (spoken_feedback_enabled) { |
150 if (!touch_exploration_controller_.get()) { | 133 if (!touch_exploration_controller_.get()) { |
151 touch_exploration_controller_ = | 134 touch_exploration_controller_ = |
152 base::MakeUnique<ui::TouchExplorationController>( | 135 base::MakeUnique<ui::TouchExplorationController>( |
153 root_window_controller_->GetRootWindow(), this, | 136 root_window_controller_->GetRootWindow(), this); |
154 touch_accessibility_enabler_.get()); | |
155 } | 137 } |
156 if (pass_through_surface) { | 138 if (pass_through_surface) { |
157 const gfx::Rect& work_area = | 139 const gfx::Rect& work_area = |
158 root_window_controller_->wm_root_window_controller() | 140 root_window_controller_->wm_root_window_controller() |
159 ->GetWindow() | 141 ->GetWindow() |
160 ->GetDisplayNearestWindow() | 142 ->GetDisplayNearestWindow() |
161 .work_area(); | 143 .work_area(); |
162 touch_exploration_controller_->SetExcludeBounds(work_area); | 144 touch_exploration_controller_->SetExcludeBounds(work_area); |
163 SilenceSpokenFeedback(); | 145 SilenceSpokenFeedback(); |
164 WmShell::Get()->accessibility_delegate()->ClearFocusHighlight(); | 146 WmShell::Get()->accessibility_delegate()->ClearFocusHighlight(); |
165 } else { | 147 } else { |
166 touch_exploration_controller_->SetExcludeBounds(gfx::Rect()); | 148 touch_exploration_controller_->SetExcludeBounds(gfx::Rect()); |
167 } | 149 } |
168 } else { | 150 } else { |
169 touch_exploration_controller_.reset(); | 151 touch_exploration_controller_.reset(); |
170 } | 152 } |
171 } | 153 } |
172 | 154 |
173 bool AshTouchExplorationManager::VolumeAdjustSoundEnabled() { | 155 bool AshTouchExplorationManager::VolumeAdjustSoundEnabled() { |
174 return !base::CommandLine::ForCurrentProcess()->HasSwitch( | 156 return !base::CommandLine::ForCurrentProcess()->HasSwitch( |
175 chromeos::switches::kDisableVolumeAdjustSound); | 157 chromeos::switches::kDisableVolumeAdjustSound); |
176 } | 158 } |
177 | 159 |
178 } // namespace ash | 160 } // namespace ash |
OLD | NEW |