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

Side by Side Diff: content/browser/accessibility/accessibility_mode_helper.cc

Issue 600263002: Get Win32K lockdown for renderers working again on Windows 8+. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix linux build failures Created 6 years, 2 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
OLDNEW
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 "base/logging.h" 5 #include "base/logging.h"
6 #include "content/browser/accessibility/accessibility_mode_helper.h" 6 #include "content/browser/accessibility/accessibility_mode_helper.h"
7 7
8 #if defined(OS_WIN)
9 #include "base/command_line.h"
10 #include "base/win/windows_version.h"
11 #include "content/public/common/content_switches.h"
12 #endif
13
14 namespace content { 8 namespace content {
15 9
16 namespace { 10 namespace {
17 11
18 AccessibilityMode CastToAccessibilityMode(unsigned int int_mode) { 12 AccessibilityMode CastToAccessibilityMode(unsigned int int_mode) {
19 AccessibilityMode mode = static_cast<AccessibilityMode>(int_mode); 13 AccessibilityMode mode = static_cast<AccessibilityMode>(int_mode);
20 switch (mode) { 14 switch (mode) {
21 case AccessibilityModeOff: 15 case AccessibilityModeOff:
22 case AccessibilityModeComplete: 16 case AccessibilityModeComplete:
23 case AccessibilityModeEditableTextOnly: 17 case AccessibilityModeEditableTextOnly:
24 case AccessibilityModeTreeOnly: 18 case AccessibilityModeTreeOnly:
25 return mode; 19 return mode;
26 } 20 }
27 DCHECK(false) << "Could not convert to AccessibilityMode: " << int_mode; 21 DCHECK(false) << "Could not convert to AccessibilityMode: " << int_mode;
28 return AccessibilityModeOff; 22 return AccessibilityModeOff;
29 } 23 }
30 24
31 } // namespace 25 } // namespace
32 26
33 AccessibilityMode GetBaseAccessibilityMode() { 27 AccessibilityMode GetBaseAccessibilityMode() {
34 AccessibilityMode accessibility_mode = AccessibilityModeOff; 28 AccessibilityMode accessibility_mode = AccessibilityModeOff;
35 #if defined(OS_WIN)
36 // On Windows 8, always enable accessibility for editable text controls
37 // so we can show the virtual keyboard when one is enabled.
38 if (base::win::GetVersion() >= base::win::VERSION_WIN8 &&
39 !CommandLine::ForCurrentProcess()->HasSwitch(
40 switches::kDisableRendererAccessibility)) {
41 accessibility_mode = AccessibilityModeEditableTextOnly;
42 }
43 #endif // defined(OS_WIN)
44 return accessibility_mode; 29 return accessibility_mode;
45 } 30 }
46 31
47 AccessibilityMode AddAccessibilityModeTo(AccessibilityMode to, 32 AccessibilityMode AddAccessibilityModeTo(AccessibilityMode to,
48 AccessibilityMode mode_to_add) { 33 AccessibilityMode mode_to_add) {
49 return CastToAccessibilityMode(to | mode_to_add); 34 return CastToAccessibilityMode(to | mode_to_add);
50 } 35 }
51 36
52 AccessibilityMode RemoveAccessibilityModeFrom( 37 AccessibilityMode RemoveAccessibilityModeFrom(
53 AccessibilityMode from, 38 AccessibilityMode from,
54 AccessibilityMode mode_to_remove) { 39 AccessibilityMode mode_to_remove) {
55 unsigned int new_mode = from ^ (mode_to_remove & from); 40 unsigned int new_mode = from ^ (mode_to_remove & from);
56 #if defined(OS_WIN)
57 // On Windows 8, always enable accessibility for editable text controls
58 // so we can show the virtual keyboard when one is enabled.
59 if (base::win::GetVersion() >= base::win::VERSION_WIN8 &&
60 !CommandLine::ForCurrentProcess()->HasSwitch(
61 switches::kDisableRendererAccessibility)) {
62 if ((from & AccessibilityModeEditableTextOnly) ==
63 AccessibilityModeEditableTextOnly)
64 new_mode |= AccessibilityModeEditableTextOnly;
65 }
66 #endif // defined(OS_WIN)
67
68 return CastToAccessibilityMode(new_mode); 41 return CastToAccessibilityMode(new_mode);
69 } 42 }
70 43
71 } // namespace content 44 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698