diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/chrome/browser/accessibility/accessibility_ui.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-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.cc | 36 |
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_) { |