Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "content/browser/accessibility/browser_accessibility_state_impl.h" | 5 #include "content/browser/accessibility/browser_accessibility_state_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
| 11 #include "build/build_config.h" | 11 #include "build/build_config.h" |
| 12 #include "content/browser/accessibility/accessibility_mode_helper.h" | |
| 13 #include "content/browser/renderer_host/render_widget_host_impl.h" | 12 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| 14 #include "content/browser/web_contents/web_contents_impl.h" | 13 #include "content/browser/web_contents/web_contents_impl.h" |
| 15 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
| 16 #include "content/public/common/content_switches.h" | 15 #include "content/public/common/content_switches.h" |
| 17 #include "ui/gfx/color_utils.h" | 16 #include "ui/gfx/color_utils.h" |
| 18 | 17 |
| 19 namespace content { | 18 namespace content { |
| 20 | 19 |
| 21 // Update the accessibility histogram 45 seconds after initialization. | 20 // Update the accessibility histogram 45 seconds after initialization. |
| 22 static const int kAccessibilityHistogramDelaySecs = 45; | 21 static const int kAccessibilityHistogramDelaySecs = 45; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 63 | 62 |
| 64 void BrowserAccessibilityStateImpl::OnScreenReaderDetected() { | 63 void BrowserAccessibilityStateImpl::OnScreenReaderDetected() { |
| 65 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 64 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 66 switches::kDisableRendererAccessibility)) { | 65 switches::kDisableRendererAccessibility)) { |
| 67 return; | 66 return; |
| 68 } | 67 } |
| 69 EnableAccessibility(); | 68 EnableAccessibility(); |
| 70 } | 69 } |
| 71 | 70 |
| 72 void BrowserAccessibilityStateImpl::EnableAccessibility() { | 71 void BrowserAccessibilityStateImpl::EnableAccessibility() { |
| 73 AddAccessibilityMode(AccessibilityModeComplete); | 72 AddAccessibilityModeFlags(kAccessibilityModeComplete); |
| 74 } | 73 } |
| 75 | 74 |
| 76 void BrowserAccessibilityStateImpl::DisableAccessibility() { | 75 void BrowserAccessibilityStateImpl::DisableAccessibility() { |
| 77 ResetAccessibilityMode(); | 76 ResetAccessibilityMode(); |
| 78 } | 77 } |
| 79 | 78 |
| 80 void BrowserAccessibilityStateImpl::ResetAccessibilityModeValue() { | 79 void BrowserAccessibilityStateImpl::ResetAccessibilityModeValue() { |
| 81 accessibility_mode_ = AccessibilityModeOff; | 80 accessibility_mode_ = AccessibilityModeOff; |
| 82 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 81 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 83 switches::kForceRendererAccessibility)) { | 82 switches::kForceRendererAccessibility)) { |
| 84 accessibility_mode_ = AccessibilityModeComplete; | 83 accessibility_mode_ = kAccessibilityModeComplete; |
| 85 } | 84 } |
| 86 } | 85 } |
| 87 | 86 |
| 88 void BrowserAccessibilityStateImpl::ResetAccessibilityMode() { | 87 void BrowserAccessibilityStateImpl::ResetAccessibilityMode() { |
| 89 ResetAccessibilityModeValue(); | 88 ResetAccessibilityModeValue(); |
| 90 | 89 |
| 91 std::vector<WebContentsImpl*> web_contents_vector = | 90 std::vector<WebContentsImpl*> web_contents_vector = |
| 92 WebContentsImpl::GetAllWebContents(); | 91 WebContentsImpl::GetAllWebContents(); |
| 93 for (size_t i = 0; i < web_contents_vector.size(); ++i) | 92 for (size_t i = 0; i < web_contents_vector.size(); ++i) |
| 94 web_contents_vector[i]->SetAccessibilityMode(accessibility_mode()); | 93 web_contents_vector[i]->SetAccessibilityMode(accessibility_mode()); |
| 95 } | 94 } |
| 96 | 95 |
| 97 bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() { | 96 bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() { |
| 98 return ((accessibility_mode_ & AccessibilityModeComplete) == | 97 return ((accessibility_mode_ & kAccessibilityModeComplete) == |
| 99 AccessibilityModeComplete); | 98 kAccessibilityModeComplete); |
| 100 } | 99 } |
| 101 | 100 |
| 102 void BrowserAccessibilityStateImpl::AddHistogramCallback( | 101 void BrowserAccessibilityStateImpl::AddHistogramCallback( |
| 103 base::Closure callback) { | 102 base::Closure callback) { |
| 104 histogram_callbacks_.push_back(callback); | 103 histogram_callbacks_.push_back(callback); |
| 105 } | 104 } |
| 106 | 105 |
| 107 void BrowserAccessibilityStateImpl::UpdateHistogramsForTesting() { | 106 void BrowserAccessibilityStateImpl::UpdateHistogramsForTesting() { |
| 108 UpdateHistograms(); | 107 UpdateHistograms(); |
| 109 } | 108 } |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 120 UMA_HISTOGRAM_BOOLEAN("Accessibility.ManuallyEnabled", | 119 UMA_HISTOGRAM_BOOLEAN("Accessibility.ManuallyEnabled", |
| 121 base::CommandLine::ForCurrentProcess()->HasSwitch( | 120 base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 122 switches::kForceRendererAccessibility)); | 121 switches::kForceRendererAccessibility)); |
| 123 } | 122 } |
| 124 | 123 |
| 125 #if !defined(OS_WIN) && !defined(OS_MACOSX) | 124 #if !defined(OS_WIN) && !defined(OS_MACOSX) |
| 126 void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() { | 125 void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() { |
| 127 } | 126 } |
| 128 #endif | 127 #endif |
| 129 | 128 |
| 130 void BrowserAccessibilityStateImpl::AddAccessibilityMode( | 129 void BrowserAccessibilityStateImpl::AddAccessibilityModeFlags( |
| 131 AccessibilityMode mode) { | 130 AccessibilityMode mode) { |
| 132 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 131 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 133 switches::kDisableRendererAccessibility)) { | 132 switches::kDisableRendererAccessibility)) { |
| 133 mode &= (AccessibilityModeFlagNativeAPIs | | |
|
aboxhall
2016/12/12 20:18:29
Can you explain the change here?
dmazzoni
2016/12/12 22:15:36
Hmmm, I think what I was trying to do was make the
| |
| 134 AccessibilityModeFlagWebContents); | |
| 135 } | |
| 136 | |
| 137 accessibility_mode_ |= mode; | |
| 138 std::vector<WebContentsImpl*> web_contents_vector = | |
| 139 WebContentsImpl::GetAllWebContents(); | |
| 140 for (size_t i = 0; i < web_contents_vector.size(); ++i) | |
| 141 web_contents_vector[i]->AddAccessibilityMode(accessibility_mode_); | |
| 142 } | |
| 143 | |
| 144 void BrowserAccessibilityStateImpl::RemoveAccessibilityModeFlags( | |
| 145 AccessibilityMode mode) { | |
| 146 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 147 switches::kForceRendererAccessibility) && | |
| 148 mode == kAccessibilityModeComplete) { | |
| 134 return; | 149 return; |
| 135 } | 150 } |
| 136 | 151 |
| 137 accessibility_mode_ = | 152 accessibility_mode_ = accessibility_mode_ ^ (mode & accessibility_mode_); |
| 138 content::AddAccessibilityModeTo(accessibility_mode_, mode); | |
| 139 | |
| 140 AddOrRemoveFromAllWebContents(mode, true); | |
| 141 } | |
| 142 | |
| 143 void BrowserAccessibilityStateImpl::RemoveAccessibilityMode( | |
| 144 AccessibilityMode mode) { | |
| 145 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 146 switches::kForceRendererAccessibility) && | |
| 147 mode == AccessibilityModeComplete) { | |
| 148 return; | |
| 149 } | |
| 150 | |
| 151 accessibility_mode_ = | |
| 152 content::RemoveAccessibilityModeFrom(accessibility_mode_, mode); | |
| 153 | |
| 154 AddOrRemoveFromAllWebContents(mode, false); | |
| 155 } | |
| 156 | |
| 157 void BrowserAccessibilityStateImpl::AddOrRemoveFromAllWebContents( | |
| 158 AccessibilityMode mode, | |
| 159 bool add) { | |
| 160 std::vector<WebContentsImpl*> web_contents_vector = | 153 std::vector<WebContentsImpl*> web_contents_vector = |
| 161 WebContentsImpl::GetAllWebContents(); | 154 WebContentsImpl::GetAllWebContents(); |
| 162 for (size_t i = 0; i < web_contents_vector.size(); ++i) { | 155 for (size_t i = 0; i < web_contents_vector.size(); ++i) |
| 163 if (add) | 156 web_contents_vector[i]->SetAccessibilityMode(accessibility_mode()); |
| 164 web_contents_vector[i]->AddAccessibilityMode(mode); | |
| 165 else | |
| 166 web_contents_vector[i]->RemoveAccessibilityMode(mode); | |
| 167 } | |
| 168 } | 157 } |
| 169 | 158 |
| 170 } // namespace content | 159 } // namespace content |
| OLD | NEW |