![electron-roller[bot]](/assets/img/avatar_default.png)
* chore: bump chromium in DEPS to 136.0.7076.0 * chore: bump chromium in DEPS to 136.0.7077.0 * 6368856: Migrate absl variant.h and utility.h in content (part 2/2) |6368856
* 6356528: Clean up LegacyRenderWidgetHostHWND code |6356528
* chore: export patches * 6339113: [Viewport Segments] Add CDP commands to override Viewport Segments without overriding other device properties. |6339113
* 6352169: [DevTools][MultiInstance] Support new tab in another window on Android |6352169
* 6368856: Migrate absl variant.h and utility.h in content (part 2/2) |6368856
* 6360858:Clickiness: Wire response from URLLoader to DB, add e2e tests|6360858
* chore: bump chromium in DEPS to 136.0.7079.0 * chore: export patches * chore: bump chromium in DEPS to 136.0.7081.0 * chore: export patches * chore: bump chromium in DEPS to 136.0.7083.0 * 6361987: Remove double-declaration with gfx::NativeView and gfx::NativeWindow |6361987
* chore: export patches * chore: bump chromium in DEPS to 136.0.7087.0 * chore: export patches * fix: include node patch for missing AtomicsWaitEvent6385540
* build: add depot_tools python to path * fix: cppgc init and unregistering v8 isolate6333562
CppGc is now initialized earlier so Node can skip reinitializing it. Additionally, gin::IsolateHandle was attempting to destruct an already destructed v8::Isolate upon electron::JavaScriptEnvironment destruction. By removing the call to NodePlatform::UnregisterIsolate, this fixes the crash on app shutdown. * fix: unregister isolate after destruction See code comment. * chore: bump chromium in DEPS to 136.0.7095.0 * chore: sync patches * fix: add script_parsing::ContentScriptType parameter6298395
* fix: migrate content::BrowserAccessibilityState methods6401437
6383275
* feat: enableHappyEyeballs option for host resolver6332599
* fix: add new cookie exclusion reason6343479
* fix: add new url loader method6337340
* fix: add new cppgc header file for electron_node headers6348644
* fix: disable CREL on Linux ARM64 https://chromium-review.googlesource.com/q/I3a62f02f564f07be63173b0773b4ecaffbe939b9 * fixup! fix: add new cppgc header file for electron_node headers6348644
* chore: update corner smoothing patch * fixup! chore: update corner smoothing patch * chore: disable NAN weak tests These two tests are incompatible with a V8 change that disallows running JS code from a weak finalizer callback. Ref:4733273
* test: fix task starvation in node test A V8 change makes these contexts get collected in a task that is posted and run asynchronously. The tests were synchronously GC'ing in an infinite loop, preventing the task loop from running the task that would GC these contexts. This change should be upstreamed in some way. Ref:4733273
--------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: alice <alice@makenotion.com> Co-authored-by: Samuel Maddock <smaddock@slack-corp.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: clavin <clavin@electronjs.org>
151 lines
6.9 KiB
Diff
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 628fe5557f963c52cbe0c5b24c6e06aaa81f9677..868f5eb60c35dfaa0a4e33e7f175743848e0cc2e 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"
|
|
@@ -171,7 +172,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());
|
|
@@ -192,7 +193,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_a11y_allowed = content::BrowserAccessibilityState::GetInstance()
|
|
@@ -221,7 +222,7 @@ void HandleAccessibilityRequestCallback(
|
|
data.Set(kPDFPrinting, pdf_printing ? kOn : kOff);
|
|
|
|
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 =
|
|
@@ -288,11 +289,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;
|
|
@@ -762,7 +763,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);
|
|
}
|
|
}
|
|
@@ -816,7 +818,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 =
|
|
@@ -843,6 +846,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);
|
|
@@ -855,6 +859,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
|
|
return;
|
|
}
|
|
}
|
|
+#endif
|
|
#endif // !BUILDFLAG(IS_ANDROID)
|
|
// No browser with the specified |session_id| was found.
|
|
base::Value::Dict result;
|
|
@@ -898,11 +903,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()) {
|
|
@@ -972,8 +979,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);
|