Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(147)

Side by Side Diff: chrome/browser/chromeos/accessibility/magnification_manager.cc

Issue 1157553003: Center the focus of the text input in magnifier screen. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nits. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/app/chromeos_strings.grdp ('k') | chrome/browser/chromeos/preferences.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "chrome/browser/chromeos/accessibility/magnification_manager.h" 5 #include "chrome/browser/chromeos/accessibility/magnification_manager.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "ash/magnifier/magnification_controller.h" 9 #include "ash/magnifier/magnification_controller.h"
10 #include "ash/magnifier/partial_magnification_controller.h" 10 #include "ash/magnifier/partial_magnification_controller.h"
(...skipping 30 matching lines...) Expand all
41 public: 41 public:
42 MagnificationManagerImpl() 42 MagnificationManagerImpl()
43 : profile_(NULL), 43 : profile_(NULL),
44 magnifier_enabled_pref_handler_( 44 magnifier_enabled_pref_handler_(
45 prefs::kAccessibilityScreenMagnifierEnabled), 45 prefs::kAccessibilityScreenMagnifierEnabled),
46 magnifier_type_pref_handler_(prefs::kAccessibilityScreenMagnifierType), 46 magnifier_type_pref_handler_(prefs::kAccessibilityScreenMagnifierType),
47 magnifier_scale_pref_handler_( 47 magnifier_scale_pref_handler_(
48 prefs::kAccessibilityScreenMagnifierScale), 48 prefs::kAccessibilityScreenMagnifierScale),
49 type_(ui::kDefaultMagnifierType), 49 type_(ui::kDefaultMagnifierType),
50 enabled_(false), 50 enabled_(false),
51 keep_focus_centered_(false),
51 observing_focus_change_in_page_(false) { 52 observing_focus_change_in_page_(false) {
52 registrar_.Add(this, 53 registrar_.Add(this,
53 chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, 54 chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE,
54 content::NotificationService::AllSources()); 55 content::NotificationService::AllSources());
55 registrar_.Add(this, 56 registrar_.Add(this,
56 chrome::NOTIFICATION_SESSION_STARTED, 57 chrome::NOTIFICATION_SESSION_STARTED,
57 content::NotificationService::AllSources()); 58 content::NotificationService::AllSources());
58 registrar_.Add(this, 59 registrar_.Add(this,
59 chrome::NOTIFICATION_PROFILE_DESTROYED, 60 chrome::NOTIFICATION_PROFILE_DESTROYED,
60 content::NotificationService::AllSources()); 61 content::NotificationService::AllSources());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 pref_change_registrar_.reset(new PrefChangeRegistrar); 120 pref_change_registrar_.reset(new PrefChangeRegistrar);
120 pref_change_registrar_->Init(profile->GetPrefs()); 121 pref_change_registrar_->Init(profile->GetPrefs());
121 pref_change_registrar_->Add( 122 pref_change_registrar_->Add(
122 prefs::kAccessibilityScreenMagnifierEnabled, 123 prefs::kAccessibilityScreenMagnifierEnabled,
123 base::Bind(&MagnificationManagerImpl::UpdateMagnifierFromPrefs, 124 base::Bind(&MagnificationManagerImpl::UpdateMagnifierFromPrefs,
124 base::Unretained(this))); 125 base::Unretained(this)));
125 pref_change_registrar_->Add( 126 pref_change_registrar_->Add(
126 prefs::kAccessibilityScreenMagnifierType, 127 prefs::kAccessibilityScreenMagnifierType,
127 base::Bind(&MagnificationManagerImpl::UpdateMagnifierFromPrefs, 128 base::Bind(&MagnificationManagerImpl::UpdateMagnifierFromPrefs,
128 base::Unretained(this))); 129 base::Unretained(this)));
130 pref_change_registrar_->Add(
131 prefs::kAccessibilityScreenMagnifierCenterFocus,
132 base::Bind(&MagnificationManagerImpl::UpdateMagnifierFromPrefs,
133 base::Unretained(this)));
129 } 134 }
130 135
131 magnifier_enabled_pref_handler_.HandleProfileChanged(profile_, profile); 136 magnifier_enabled_pref_handler_.HandleProfileChanged(profile_, profile);
132 magnifier_type_pref_handler_.HandleProfileChanged(profile_, profile); 137 magnifier_type_pref_handler_.HandleProfileChanged(profile_, profile);
133 magnifier_scale_pref_handler_.HandleProfileChanged(profile_, profile); 138 magnifier_scale_pref_handler_.HandleProfileChanged(profile_, profile);
134 139
135 profile_ = profile; 140 profile_ = profile;
136 UpdateMagnifierFromPrefs(); 141 UpdateMagnifierFromPrefs();
137 } 142 }
138 143
(...skipping 18 matching lines...) Expand all
157 } 162 }
158 } 163 }
159 164
160 virtual void SetMagnifierTypeInternal(ui::MagnifierType type) { 165 virtual void SetMagnifierTypeInternal(ui::MagnifierType type) {
161 if (type_ == type) 166 if (type_ == type)
162 return; 167 return;
163 168
164 type_ = ui::MAGNIFIER_FULL; // (leave out for full magnifier) 169 type_ = ui::MAGNIFIER_FULL; // (leave out for full magnifier)
165 } 170 }
166 171
172 virtual void SetMagniferKeepFocusCenteredInternal(bool keep_focus_centered) {
173 if (keep_focus_centered_ == keep_focus_centered)
174 return;
175
176 keep_focus_centered_ = keep_focus_centered;
177
178 if (type_ == ui::MAGNIFIER_FULL) {
179 ash::Shell::GetInstance()
180 ->magnification_controller()
181 ->SetKeepFocusCentered(keep_focus_centered_);
182 }
183 }
184
167 void UpdateMagnifierFromPrefs() { 185 void UpdateMagnifierFromPrefs() {
168 if (!profile_) 186 if (!profile_)
169 return; 187 return;
170 188
171 const bool enabled = profile_->GetPrefs()->GetBoolean( 189 const bool enabled = profile_->GetPrefs()->GetBoolean(
172 prefs::kAccessibilityScreenMagnifierEnabled); 190 prefs::kAccessibilityScreenMagnifierEnabled);
173 const int type_integer = profile_->GetPrefs()->GetInteger( 191 const int type_integer = profile_->GetPrefs()->GetInteger(
174 prefs::kAccessibilityScreenMagnifierType); 192 prefs::kAccessibilityScreenMagnifierType);
193 const bool keep_focus_centered = profile_->GetPrefs()->GetBoolean(
194 prefs::kAccessibilityScreenMagnifierCenterFocus);
175 195
176 ui::MagnifierType type = ui::kDefaultMagnifierType; 196 ui::MagnifierType type = ui::kDefaultMagnifierType;
177 if (type_integer > 0 && type_integer <= ui::kMaxMagnifierType) { 197 if (type_integer > 0 && type_integer <= ui::kMaxMagnifierType) {
178 type = static_cast<ui::MagnifierType>(type_integer); 198 type = static_cast<ui::MagnifierType>(type_integer);
179 } else if (type_integer == 0) { 199 } else if (type_integer == 0) {
180 // Type 0 is used to disable the screen magnifier through policy. As the 200 // Type 0 is used to disable the screen magnifier through policy. As the
181 // magnifier type is irrelevant in this case, it is OK to just fall back 201 // magnifier type is irrelevant in this case, it is OK to just fall back
182 // to the default. 202 // to the default.
183 } else { 203 } else {
184 NOTREACHED(); 204 NOTREACHED();
185 } 205 }
186 206
187 if (!enabled) { 207 if (!enabled) {
188 SetMagnifierEnabledInternal(enabled); 208 SetMagnifierEnabledInternal(enabled);
189 SetMagnifierTypeInternal(type); 209 SetMagnifierTypeInternal(type);
210 SetMagniferKeepFocusCenteredInternal(keep_focus_centered);
190 } else { 211 } else {
212 SetMagniferKeepFocusCenteredInternal(keep_focus_centered);
191 SetMagnifierTypeInternal(type); 213 SetMagnifierTypeInternal(type);
192 SetMagnifierEnabledInternal(enabled); 214 SetMagnifierEnabledInternal(enabled);
193 } 215 }
194 216
195 AccessibilityStatusEventDetails details( 217 AccessibilityStatusEventDetails details(
196 ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFIER, 218 ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFIER,
197 enabled_, 219 enabled_,
198 type_, 220 type_,
199 ui::A11Y_NOTIFICATION_NONE); 221 ui::A11Y_NOTIFICATION_NONE);
200 222
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 } 282 }
261 283
262 Profile* profile_; 284 Profile* profile_;
263 285
264 AccessibilityManager::PrefHandler magnifier_enabled_pref_handler_; 286 AccessibilityManager::PrefHandler magnifier_enabled_pref_handler_;
265 AccessibilityManager::PrefHandler magnifier_type_pref_handler_; 287 AccessibilityManager::PrefHandler magnifier_type_pref_handler_;
266 AccessibilityManager::PrefHandler magnifier_scale_pref_handler_; 288 AccessibilityManager::PrefHandler magnifier_scale_pref_handler_;
267 289
268 ui::MagnifierType type_; 290 ui::MagnifierType type_;
269 bool enabled_; 291 bool enabled_;
292 bool keep_focus_centered_;
270 bool observing_focus_change_in_page_; 293 bool observing_focus_change_in_page_;
271 294
272 content::NotificationRegistrar registrar_; 295 content::NotificationRegistrar registrar_;
273 scoped_ptr<PrefChangeRegistrar> pref_change_registrar_; 296 scoped_ptr<PrefChangeRegistrar> pref_change_registrar_;
274 scoped_ptr<ash::ScopedSessionStateObserver> session_state_observer_; 297 scoped_ptr<ash::ScopedSessionStateObserver> session_state_observer_;
275 298
276 DISALLOW_COPY_AND_ASSIGN(MagnificationManagerImpl); 299 DISALLOW_COPY_AND_ASSIGN(MagnificationManagerImpl);
277 }; 300 };
278 301
279 // static 302 // static
280 void MagnificationManager::Initialize() { 303 void MagnificationManager::Initialize() {
281 CHECK(g_magnification_manager == NULL); 304 CHECK(g_magnification_manager == NULL);
282 g_magnification_manager = new MagnificationManagerImpl(); 305 g_magnification_manager = new MagnificationManagerImpl();
283 } 306 }
284 307
285 // static 308 // static
286 void MagnificationManager::Shutdown() { 309 void MagnificationManager::Shutdown() {
287 CHECK(g_magnification_manager); 310 CHECK(g_magnification_manager);
288 delete g_magnification_manager; 311 delete g_magnification_manager;
289 g_magnification_manager = NULL; 312 g_magnification_manager = NULL;
290 } 313 }
291 314
292 // static 315 // static
293 MagnificationManager* MagnificationManager::Get() { 316 MagnificationManager* MagnificationManager::Get() {
294 return g_magnification_manager; 317 return g_magnification_manager;
295 } 318 }
296 319
297 } // namespace chromeos 320 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/app/chromeos_strings.grdp ('k') | chrome/browser/chromeos/preferences.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698