123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Shelley Vohr <[email protected]>
- Date: Mon, 6 Jul 2020 13:46:06 -0700
- Subject: Adjust accessibility_ui for Electron
- This tweaks Chrome's Accessibility support at chrome://accessibility
- to make it usable from Electron by replacing use of the Profile PrefService
- with Electron's own PrefService in ElectronBrowserContext. It also removes
- usage of BrowserList and Browser as we subclass related methods and use our
- WindowList.
- diff --git a/chrome/browser/ui/webui/accessibility/accessibility_ui.cc b/chrome/browser/ui/webui/accessibility/accessibility_ui.cc
- index d0fe2040a65211c6ba25ce74c71b397573b7519c..7dfe50a1c90b028b79a22534800ee498a262ac35 100644
- --- a/chrome/browser/ui/webui/accessibility/accessibility_ui.cc
- +++ b/chrome/browser/ui/webui/accessibility/accessibility_ui.cc
- @@ -43,6 +43,7 @@
- #include "content/public/browser/web_contents.h"
- #include "content/public/browser/web_contents_delegate.h"
- #include "content/public/browser/web_ui_data_source.h"
- +#include "electron/shell/browser/electron_browser_context.h"
- #include "ui/accessibility/accessibility_features.h"
- #include "ui/accessibility/ax_updates_and_events.h"
- #include "ui/accessibility/platform/ax_platform_node.h"
- @@ -169,7 +170,7 @@ base::Value::Dict BuildTargetDescriptor(content::RenderViewHost* rvh) {
- accessibility_mode);
- }
-
- -#if !BUILDFLAG(IS_ANDROID)
- +#if 0
- base::Value::Dict BuildTargetDescriptor(Browser* browser) {
- base::Value::Dict target_data;
- target_data.Set(kSessionIdField, browser->session_id().id());
- @@ -203,7 +204,7 @@ void HandleAccessibilityRequestCallback(
- DCHECK(ShouldHandleAccessibilityRequestCallback(path));
-
- base::Value::Dict data;
- - PrefService* pref = Profile::FromBrowserContext(current_context)->GetPrefs();
- + PrefService* pref = static_cast<electron::ElectronBrowserContext*>(current_context)->prefs();
- ui::AXMode mode =
- content::BrowserAccessibilityState::GetInstance()->GetAccessibilityMode();
- bool is_native_enabled = content::BrowserAccessibilityState::GetInstance()
- @@ -236,7 +237,7 @@ void HandleAccessibilityRequestCallback(
- data.Set(kViewsAccessibility, features::IsAccessibilityTreeForViewsEnabled());
-
- std::string pref_api_type =
- - pref->GetString(prefs::kShownAccessibilityApiType);
- + std::string(pref->GetString(prefs::kShownAccessibilityApiType));
- bool pref_api_type_supported = false;
-
- std::vector<ui::AXApiType::Type> supported_api_types =
- @@ -303,11 +304,11 @@ void HandleAccessibilityRequestCallback(
- data.Set(kPagesField, std::move(page_list));
-
- base::Value::List browser_list;
- -#if !BUILDFLAG(IS_ANDROID)
- +#if 0
- for (Browser* browser : *BrowserList::GetInstance()) {
- browser_list.Append(BuildTargetDescriptor(browser));
- }
- -#endif // !BUILDFLAG(IS_ANDROID)
- +#endif
- data.Set(kBrowsersField, std::move(browser_list));
-
- base::Value::List widgets_list;
- @@ -639,7 +640,8 @@ void AccessibilityUIMessageHandler::SetGlobalString(
- const std::string value = CheckJSValue(data.FindString(kValueField));
-
- if (string_name == kApiTypeField) {
- - PrefService* pref = Profile::FromWebUI(web_ui())->GetPrefs();
- + PrefService* pref = static_cast<electron::ElectronBrowserContext*>(
- + web_ui()->GetWebContents()->GetBrowserContext())->prefs();
- pref->SetString(prefs::kShownAccessibilityApiType, value);
- }
- }
- @@ -692,7 +694,8 @@ void AccessibilityUIMessageHandler::RequestWebContentsTree(
- AXPropertyFilter::ALLOW_EMPTY);
- AddPropertyFilters(property_filters, deny, AXPropertyFilter::DENY);
-
- - PrefService* pref = Profile::FromWebUI(web_ui())->GetPrefs();
- + PrefService* pref = static_cast<electron::ElectronBrowserContext*>(
- + web_contents->GetBrowserContext())->prefs();
- ui::AXApiType::Type api_type =
- ui::AXApiType::From(pref->GetString(prefs::kShownAccessibilityApiType));
- std::string accessibility_contents =
- @@ -719,6 +722,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
- AXPropertyFilter::ALLOW_EMPTY);
- AddPropertyFilters(property_filters, deny, AXPropertyFilter::DENY);
-
- +#if 0
- for (Browser* browser : *BrowserList::GetInstance()) {
- if (browser->session_id().id() == session_id) {
- base::Value::Dict result = BuildTargetDescriptor(browser);
- @@ -731,6 +735,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
- return;
- }
- }
- +#endif
- #endif // !BUILDFLAG(IS_ANDROID)
- // No browser with the specified |session_id| was found.
- base::Value::Dict result;
- @@ -799,11 +804,13 @@ void AccessibilityUIMessageHandler::StopRecording(
- }
-
- ui::AXApiType::Type AccessibilityUIMessageHandler::GetRecordingApiType() {
- - PrefService* pref = Profile::FromWebUI(web_ui())->GetPrefs();
- - const std::vector<ui::AXApiType::Type> supported_types =
- - content::AXInspectFactory::SupportedApis();
- + PrefService* pref = static_cast<electron::ElectronBrowserContext*>(
- + web_ui()->GetWebContents()->GetBrowserContext())->prefs();
- ui::AXApiType::Type api_type =
- ui::AXApiType::From(pref->GetString(prefs::kShownAccessibilityApiType));
- +
- + const std::vector<ui::AXApiType::Type> supported_types =
- + content::AXInspectFactory::SupportedApis();
- // Check to see if it is in the supported types list.
- if (std::find(supported_types.begin(), supported_types.end(), api_type) ==
- supported_types.end()) {
- @@ -873,8 +880,11 @@ void AccessibilityUIMessageHandler::RequestAccessibilityEvents(
- // static
- void AccessibilityUIMessageHandler::RegisterProfilePrefs(
- user_prefs::PrefRegistrySyncable* registry) {
- +#if 0
- const std::string_view default_api_type =
- std::string_view(ui::AXApiType::Type(ui::AXApiType::kBlink));
- registry->RegisterStringPref(prefs::kShownAccessibilityApiType,
- std::string(default_api_type));
- + registry->RegisterBooleanPref(prefs::kShowInternalAccessibilityTree, false);
- +#endif
- }
- diff --git a/chrome/browser/ui/webui/accessibility/accessibility_ui.h b/chrome/browser/ui/webui/accessibility/accessibility_ui.h
- index d9ae654c8405621925e39f0b28b9288c0ea151f6..ab5b4249b4f5c01be04ed27cf53e8c286548f6db 100644
- --- a/chrome/browser/ui/webui/accessibility/accessibility_ui.h
- +++ b/chrome/browser/ui/webui/accessibility/accessibility_ui.h
- @@ -30,6 +30,8 @@ class ScopedAccessibilityMode;
- class WebContents;
- } // namespace content
-
- +class ElectronAccessibilityUIMessageHandler;
- +
- namespace user_prefs {
- class PrefRegistrySyncable;
- } // namespace user_prefs
- @@ -80,6 +82,8 @@ class AccessibilityUIMessageHandler : public content::WebUIMessageHandler {
- static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
-
- private:
- + friend class ElectronAccessibilityUIMessageHandler;
- +
- // Applies `mode` to `web_contents` for the lifetime of the accessibility
- // UI page.
- void SetAccessibilityModeForWebContents(content::WebContents* web_contents,
|