diff options
author | aboxhall@chromium.org <aboxhall@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-12 23:28:52 +0000 |
---|---|---|
committer | aboxhall@chromium.org <aboxhall@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-12 23:28:52 +0000 |
commit | 1e558fa034727f7de8eac220a48a02e25682aa4d (patch) | |
tree | 661d4a3f060b627587dfa499db015ba758814fa0 /content/browser/accessibility/accessibility_mode_helper.cc | |
parent | c2e269e232edae45275c5aa39494472301a80d09 (diff) | |
download | chromium_src-1e558fa034727f7de8eac220a48a02e25682aa4d.zip chromium_src-1e558fa034727f7de8eac220a48a02e25682aa4d.tar.gz chromium_src-1e558fa034727f7de8eac220a48a02e25682aa4d.tar.bz2 |
Switch AccessibilityMode to be a bitmap.
This will allow us, in a follow-up CL, to add a new Accessibility mode: AccessibilityModeExtension, which may co-exist with the previously existing modes.
BUG=
Review URL: https://codereview.chromium.org/145283003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250837 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/accessibility/accessibility_mode_helper.cc')
-rw-r--r-- | content/browser/accessibility/accessibility_mode_helper.cc | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/content/browser/accessibility/accessibility_mode_helper.cc b/content/browser/accessibility/accessibility_mode_helper.cc new file mode 100644 index 0000000..21eccaf --- /dev/null +++ b/content/browser/accessibility/accessibility_mode_helper.cc @@ -0,0 +1,55 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/accessibility/accessibility_mode_helper.h" + +#if defined(OS_WIN) +#include "base/command_line.h" +#include "base/win/windows_version.h" +#include "content/public/common/content_switches.h" +#endif + +namespace content { + +namespace { + +AccessibilityMode CastToAccessibilityMode(unsigned int int_mode) { + AccessibilityMode mode = static_cast<AccessibilityMode>(int_mode); + switch (mode) { + case AccessibilityModeOff: + case AccessibilityModeComplete: + case AccessibilityModeEditableTextOnly: + return mode; + } + DCHECK(false) << "Could not convert to AccessibilityMode: " << int_mode; + return AccessibilityModeOff; +} + +} // namespace + +AccessibilityMode AddAccessibilityModeTo(AccessibilityMode to, + AccessibilityMode mode_to_add) { + return CastToAccessibilityMode(to | mode_to_add); +} + +AccessibilityMode RemoveAccessibilityModeFrom( + AccessibilityMode from, + AccessibilityMode mode_to_remove) { + unsigned int new_mode = from ^ (mode_to_remove & from); +#if defined(OS_WIN) + // On Windows 8, always enable accessibility for editable text controls + // so we can show the virtual keyboard when one is enabled. + if (base::win::GetVersion() >= base::win::VERSION_WIN8 && + !CommandLine::ForCurrentProcess()->HasSwitch( + switches::kDisableRendererAccessibility)) { + if ((from & AccessibilityModeEditableTextOnly) == + AccessibilityModeEditableTextOnly) + new_mode |= AccessibilityModeEditableTextOnly; + } +#endif // defined(OS_WIN) + + return CastToAccessibilityMode(new_mode); +} + +} // namespace content |