From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Mon, 6 Jul 2020 13:46:06 -0700 Subject: fix: patch out Profile refs in accessibility_ui This tweaks Chrome's Accessibility support at chrome://accessibility to make it usable from Electron by removing Profile references. diff --git a/chrome/browser/accessibility/accessibility_ui.cc b/chrome/browser/accessibility/accessibility_ui.cc index 4453990236f07a58932f50701f31fab961d0fb9e..d505af3e2207921257e212e88f2c95f1071b591b 100644 --- a/chrome/browser/accessibility/accessibility_ui.cc +++ b/chrome/browser/accessibility/accessibility_ui.cc @@ -20,7 +20,10 @@ #include "base/values.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" +#if 0 #include "chrome/browser/profiles/profile.h" +#endif +#include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" #include "chrome/common/webui_url_constants.h" #include "chrome/grit/dev_ui_browser_resources.h" @@ -47,14 +50,14 @@ #include "ui/base/webui/web_ui_util.h" #include "ui/views/accessibility/view_accessibility.h" -#if !defined(OS_ANDROID) +#if 0 #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_window.h" +#endif #include "ui/views/accessibility/widget_ax_tree_id_map.h" #include "ui/views/widget/widget.h" #include "ui/views/widget/widget_delegate.h" -#endif static const char kTargetsDataFile[] = "targets-data.json"; @@ -161,7 +164,7 @@ std::unique_ptr BuildTargetDescriptor( accessibility_mode); } -#if !defined(OS_ANDROID) +#if 0 std::unique_ptr BuildTargetDescriptor(Browser* browser) { std::unique_ptr target_data( new base::DictionaryValue()); @@ -200,7 +203,9 @@ void HandleAccessibilityRequestCallback( DCHECK(ShouldHandleAccessibilityRequestCallback(path)); base::DictionaryValue data; +#if 0 PrefService* pref = Profile::FromBrowserContext(current_context)->GetPrefs(); +#endif ui::AXMode mode = content::BrowserAccessibilityState::GetInstance()->GetAccessibilityMode(); bool is_native_enabled = content::BrowserAccessibilityState::GetInstance() @@ -229,9 +234,7 @@ void HandleAccessibilityRequestCallback( // The "labelImages" flag works only if "web" is enabled, the current profile // has the kAccessibilityImageLabelsEnabled preference set and the appropriate // command line switch has been used. - bool are_accessibility_image_labels_enabled = - is_web_enabled && - pref->GetBoolean(prefs::kAccessibilityImageLabelsEnabled); + bool are_accessibility_image_labels_enabled = is_web_enabled; bool label_images = mode.has_mode(ui::AXMode::kLabelImages); data.SetString(kLabelImages, are_accessibility_image_labels_enabled ? (label_images ? kOn : kOff) @@ -245,7 +248,7 @@ void HandleAccessibilityRequestCallback( data.SetBoolean(kViewsAccessibility, features::IsAccessibilityTreeForViewsEnabled()); - bool show_internal = pref->GetBoolean(prefs::kShowInternalAccessibilityTree); + bool show_internal = true; data.SetString(kInternal, show_internal ? kOn : kOff); std::unique_ptr rvh_list(new base::ListValue()); @@ -282,11 +285,11 @@ void HandleAccessibilityRequestCallback( data.Set(kPagesField, std::move(rvh_list)); std::unique_ptr browser_list(new base::ListValue()); -#if !defined(OS_ANDROID) +#if 0 for (Browser* browser : *BrowserList::GetInstance()) { browser_list->Append(BuildTargetDescriptor(browser)); } -#endif // !defined(OS_ANDROID) +#endif // !defined(OS_ANDROID) data.Set(kBrowsersField, std::move(browser_list)); std::unique_ptr widgets_list(new base::ListValue()); @@ -505,8 +508,10 @@ void AccessibilityUIMessageHandler::SetGlobalFlag(const base::ListValue* args) { AllowJavascript(); if (flag_name_str == kInternal) { +#if 0 PrefService* pref = Profile::FromWebUI(web_ui())->GetPrefs(); pref->SetBoolean(prefs::kShowInternalAccessibilityTree, enabled); +#endif return; } @@ -615,10 +620,12 @@ void AccessibilityUIMessageHandler::RequestWebContentsTree( AXPropertyFilter::ALLOW_EMPTY); AddPropertyFilters(property_filters, deny, AXPropertyFilter::DENY); +#if 0 PrefService* pref = Profile::FromWebUI(web_ui())->GetPrefs(); bool internal = pref->GetBoolean(prefs::kShowInternalAccessibilityTree); +#endif std::string accessibility_contents = - web_contents->DumpAccessibilityTree(internal, property_filters); + web_contents->DumpAccessibilityTree(true, property_filters); result->SetString(kTreeField, accessibility_contents); FireWebUIListener(request_type, *(result.get())); } @@ -642,6 +649,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) { std::unique_ptr result( @@ -656,6 +664,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree( return; } } +#endif #endif // !defined(OS_ANDROID) // No browser with the specified |session_id| was found. std::unique_ptr result(new base::DictionaryValue()); @@ -771,5 +780,7 @@ void AccessibilityUIMessageHandler::RequestAccessibilityEvents( // static void AccessibilityUIMessageHandler::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { +#if 0 registry->RegisterBooleanPref(prefs::kShowInternalAccessibilityTree, false); +#endif } diff --git a/chrome/browser/accessibility/accessibility_ui.h b/chrome/browser/accessibility/accessibility_ui.h index c0453b9f8603ba99a83a747666a1b05b9c36ca14..b0c610de6322177baf5a7ba44b632a9658756ce8 100644 --- a/chrome/browser/accessibility/accessibility_ui.h +++ b/chrome/browser/accessibility/accessibility_ui.h @@ -24,6 +24,8 @@ struct AXEventNotificationDetails; class WebContents; } // namespace content +class ElectronAccessibilityUIMessageHandler; + namespace user_prefs { class PrefRegistrySyncable; } // namespace user_prefs @@ -60,6 +62,8 @@ class AccessibilityUIMessageHandler : public content::WebUIMessageHandler { static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); private: + friend class ElectronAccessibilityUIMessageHandler; + std::vector event_logs_; std::unique_ptr observer_;