electron/patches/chromium/adjust_accessibility_ui_for_electron.patch
electron-roller[bot] e3e647d21e
chore: bump chromium to 138.0.7175.0 (main) (#46986)
* chore: bump chromium in DEPS to 138.0.7166.0

* chore: bump chromium in DEPS to 138.0.7166.2

* 6508373: Add WebContents, Tab getters for future Clank navigation capture rework

6508373

* 6470924: Introduce auto-populated Search Engine icons.

6470924

* 6502977: Force same tab navigation while actor coordinator is acting on a tab

6502977

* chore: bump chromium in DEPS to 138.0.7168.0

* chore: update patches

* fix grit patch

* chore: bump Chromium to 138.0.7169.2

* fixup! 6508373: Add WebContents, Tab getters for future Clank navigation capture rework

* 6493688: NavigationThrottleRunner2: void CreateThrottlesForNavigation

6493688

* 6488755: Reland "WebSQL: Remove WebPreference"

6488755

* 6428707: FSA: Only normalize the hardcoded rules once during initialization

6428707

* chore: fixup patch indices

* chore: bump chromium in DEPS to 138.0.7170.0

* 6514121: Remove origin calculation debug info and related methods

 6514121

* chore: bump chromium in DEPS to 138.0.7172.0

* chore: bump chromium in DEPS to 138.0.7173.0

* chore: bump chromium in DEPS to 138.0.7175.0

* fixup! 6514121: Remove origin calculation debug info and related methods

Refs 6514121

* 6531585: Don't retry LayerTreeSink creation on the high priority queue

Refs 6531585

* 6512253: Modernize base::apple's base bundle ID

Refs 6512253

* fixup! 6428707: FSA: Only normalize the hardcoded rules once during initialization

Refs 6428707

* fixup! 6508373: Add WebContents, Tab getters for future Clank navigation capture rework

Refs 6508373

* chore: update patches

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2025-05-13 14:51:20 -04:00

151 lines
6.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
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 d7a9cff6401f0953297acd18708ec2952f60407f..b4777ce0bcda2bdb9645a4ed86040f62ce4027eb 100644
--- a/chrome/browser/ui/webui/accessibility/accessibility_ui.cc
+++ b/chrome/browser/ui/webui/accessibility/accessibility_ui.cc
@@ -48,6 +48,7 @@
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.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) {
rvh->GetRoutingID(), 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());
@@ -193,7 +194,7 @@ void HandleAccessibilityRequestCallback(
auto& browser_accessibility_state =
*content::BrowserAccessibilityState::GetInstance();
base::Value::Dict data;
- PrefService* pref = Profile::FromBrowserContext(current_context)->GetPrefs();
+ PrefService* pref = static_cast<electron::ElectronBrowserContext*>(current_context)->prefs();
ui::AXMode mode = browser_accessibility_state.GetAccessibilityMode();
bool native = mode.has_mode(ui::AXMode::kNativeAPIs);
bool web = mode.has_mode(ui::AXMode::kWebContents);
@@ -246,7 +247,7 @@ void HandleAccessibilityRequestCallback(
initial_process_mode.has_mode(ui::AXMode::kHTML)));
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 =
@@ -314,11 +315,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));
std::string json_string;
@@ -792,7 +793,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);
}
}
@@ -846,7 +848,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 =
@@ -873,6 +876,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);
@@ -885,6 +889,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
return;
}
}
+#endif
#endif // !BUILDFLAG(IS_ANDROID)
// No browser with the specified |session_id| was found.
base::Value::Dict result;
@@ -928,11 +933,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()) {
@@ -1002,8 +1009,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 b171afc941b2b3ef4aeba04a2b1c6eef2774d442..8f431aae69365bc8756e515c603332a7f1648148 100644
--- a/chrome/browser/ui/webui/accessibility/accessibility_ui.h
+++ b/chrome/browser/ui/webui/accessibility/accessibility_ui.h
@@ -27,6 +27,8 @@ namespace content {
class WebContents;
} // namespace content
+class ElectronAccessibilityUIMessageHandler;
+
namespace user_prefs {
class PrefRegistrySyncable;
} // namespace user_prefs
@@ -77,6 +79,8 @@ class AccessibilityUIMessageHandler : public content::WebUIMessageHandler {
static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
private:
+ friend class ElectronAccessibilityUIMessageHandler;
+
void ToggleAccessibilityForWebContents(const base::Value::List& args);
void SetGlobalFlag(const base::Value::List& args);
void SetGlobalString(const base::Value::List& args);