| Index: content/browser/accessibility/accessibility_mode_helper.cc
|
| diff --git a/content/browser/accessibility/accessibility_mode_helper.cc b/content/browser/accessibility/accessibility_mode_helper.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b753e1ca5b52b5f3ce4a7676f0a9a9e23438e939
|
| --- /dev/null
|
| +++ b/content/browser/accessibility/accessibility_mode_helper.cc
|
| @@ -0,0 +1,55 @@
|
| +// Copyright (c) 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
|
|
|