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
3 // found in the LICENSE file.
5 #include "content/browser/accessibility/accessibility_mode_helper.h"
8 #include "base/command_line.h"
9 #include "base/win/windows_version.h"
10 #include "content/public/common/content_switches.h"
17 AccessibilityMode CastToAccessibilityMode(unsigned int int_mode) {
18 AccessibilityMode mode = static_cast<AccessibilityMode>(int_mode);
20 case AccessibilityModeOff:
21 case AccessibilityModeComplete:
22 case AccessibilityModeEditableTextOnly:
25 DCHECK(false) << "Could not convert to AccessibilityMode: " << int_mode;
26 return AccessibilityModeOff;
31 AccessibilityMode AddAccessibilityModeTo(AccessibilityMode to,
32 AccessibilityMode mode_to_add) {
33 return CastToAccessibilityMode(to | mode_to_add);
36 AccessibilityMode RemoveAccessibilityModeFrom(
37 AccessibilityMode from,
38 AccessibilityMode mode_to_remove) {
39 unsigned int new_mode = from ^ (mode_to_remove & from);
41 // On Windows 8, always enable accessibility for editable text controls
42 // so we can show the virtual keyboard when one is enabled.
43 if (base::win::GetVersion() >= base::win::VERSION_WIN8 &&
44 !CommandLine::ForCurrentProcess()->HasSwitch(
45 switches::kDisableRendererAccessibility)) {
46 if ((from & AccessibilityModeEditableTextOnly) ==
47 AccessibilityModeEditableTextOnly)
48 new_mode |= AccessibilityModeEditableTextOnly;
50 #endif // defined(OS_WIN)
52 return CastToAccessibilityMode(new_mode);
55 } // namespace content