summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/accessibility/accessibility_ui.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/chrome/browser/accessibility/accessibility_ui.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/accessibility/accessibility_ui.cc')
-rw-r--r--chromium/chrome/browser/accessibility/accessibility_ui.cc36
1 files changed, 25 insertions, 11 deletions
diff --git a/chromium/chrome/browser/accessibility/accessibility_ui.cc b/chromium/chrome/browser/accessibility/accessibility_ui.cc
index c77a24e895d..012e421c6e7 100644
--- a/chromium/chrome/browser/accessibility/accessibility_ui.cc
+++ b/chromium/chrome/browser/accessibility/accessibility_ui.cc
@@ -13,6 +13,7 @@
#include "base/bind_helpers.h"
#include "base/command_line.h"
#include "base/json/json_writer.h"
+#include "base/optional.h"
#include "base/strings/pattern.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
@@ -80,6 +81,7 @@ static const char kInternal[] = "internal";
static const char kLabelImages[] = "labelImages";
static const char kNative[] = "native";
static const char kPage[] = "page";
+static const char kPDF[] = "pdf";
static const char kScreenReader[] = "screenreader";
static const char kShowOrRefreshTree[] = "showOrRefreshTree";
static const char kText[] = "text";
@@ -177,6 +179,7 @@ void HandleAccessibilityRequestCallback(
bool text = mode.has_mode(ui::AXMode::kInlineTextBoxes);
bool screenreader = mode.has_mode(ui::AXMode::kScreenReader);
bool html = mode.has_mode(ui::AXMode::kHTML);
+ bool pdf = mode.has_mode(ui::AXMode::kPDF);
// The "native" and "web" flags are disabled if
// --disable-renderer-accessibility is set.
@@ -203,6 +206,9 @@ void HandleAccessibilityRequestCallback(
? (label_images ? kOn : kOff)
: kDisabled);
+ // The "pdf" flag is independent of the others.
+ data.SetString(kPDF, pdf ? kOn : kOff);
+
bool show_internal = pref->GetBoolean(prefs::kShowInternalAccessibilityTree);
data.SetString(kInternal, show_internal ? kOn : kOff);
@@ -367,7 +373,14 @@ void AccessibilityUIObserver::AccessibilityEventReceived(
AccessibilityUIMessageHandler::AccessibilityUIMessageHandler() = default;
-AccessibilityUIMessageHandler::~AccessibilityUIMessageHandler() = default;
+AccessibilityUIMessageHandler::~AccessibilityUIMessageHandler() {
+ if (!observer_)
+ return;
+ content::WebContents* web_contents = observer_->web_contents();
+ if (!web_contents)
+ return;
+ StopRecording(web_contents);
+}
void AccessibilityUIMessageHandler::RegisterMessages() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -641,6 +654,12 @@ void AccessibilityUIMessageHandler::Callback(const std::string& str) {
event_logs_.push_back(str);
}
+void AccessibilityUIMessageHandler::StopRecording(
+ content::WebContents* web_contents) {
+ web_contents->RecordAccessibilityEvents(false, base::nullopt);
+ observer_.reset(nullptr);
+}
+
void AccessibilityUIMessageHandler::RequestAccessibilityEvents(
const base::ListValue* args) {
const base::DictionaryValue* data;
@@ -648,7 +667,7 @@ void AccessibilityUIMessageHandler::RequestAccessibilityEvents(
int process_id = *data->FindIntPath(kProcessIdField);
int routing_id = *data->FindIntPath(kRoutingIdField);
- bool start = *data->FindBoolPath(kStartField);
+ bool start_recording = *data->FindBoolPath(kStartField);
AllowJavascript();
@@ -661,22 +680,17 @@ void AccessibilityUIMessageHandler::RequestAccessibilityEvents(
std::unique_ptr<base::DictionaryValue> result(BuildTargetDescriptor(rvh));
content::WebContents* web_contents =
content::WebContents::FromRenderViewHost(rvh);
- if (start) {
+ if (start_recording) {
if (observer_) {
return;
}
web_contents->RecordAccessibilityEvents(
- base::BindRepeating(&AccessibilityUIMessageHandler::Callback,
- base::Unretained(this)),
- true);
+ true, base::BindRepeating(&AccessibilityUIMessageHandler::Callback,
+ base::Unretained(this)));
observer_ =
std::make_unique<AccessibilityUIObserver>(web_contents, &event_logs_);
} else {
- web_contents->RecordAccessibilityEvents(
- base::BindRepeating(&AccessibilityUIMessageHandler::Callback,
- base::Unretained(this)),
- false);
- observer_.release();
+ StopRecording(web_contents);
std::string event_logs_str;
for (std::string log : event_logs_) {