Commit 6f055d01 authored by Ankit Kumar 🌪️'s avatar Ankit Kumar 🌪️ Committed by Commit Bot

Simplify PdfAccessibilityTree::GetPdfAnnotationInfoFromAXNode()

Return base::Optional<PdfAccessibilityTree::AnnotationInfo> instead of
returning the individual elements of AnnotationInfo as out parameters.

Bug: 1008775
Change-Id: I8490b735c48d8e5e70eb27c7895001ad98c1dccc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1958496
Commit-Queue: Ankit Kumar 🌪️ <ankk@microsoft.com>
Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#724472}
parent b890b33d
...@@ -1088,17 +1088,13 @@ void PdfAccessibilityTree::HandleAction( ...@@ -1088,17 +1088,13 @@ void PdfAccessibilityTree::HandleAction(
} }
} }
bool PdfAccessibilityTree::GetPdfAnnotationInfoFromAXNode( base::Optional<PdfAccessibilityTree::AnnotationInfo>
int32_t ax_node_id, PdfAccessibilityTree::GetPdfAnnotationInfoFromAXNode(int32_t ax_node_id) const {
uint32_t* page_index,
uint32_t* annotation_index_in_page) const {
auto iter = node_id_to_annotation_info_.find(ax_node_id); auto iter = node_id_to_annotation_info_.find(ax_node_id);
if (iter == node_id_to_annotation_info_.end()) if (iter == node_id_to_annotation_info_.end())
return false; return base::nullopt;
*page_index = iter->second.page_index; return AnnotationInfo(iter->second.page_index, iter->second.annotation_index);
*annotation_index_in_page = iter->second.annotation_index;
return true;
} }
} // namespace pdf } // namespace pdf
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <memory> #include <memory>
#include <vector> #include <vector>
#include "base/optional.h"
#include "content/public/renderer/plugin_ax_tree_source.h" #include "content/public/renderer/plugin_ax_tree_source.h"
#include "ppapi/c/pp_instance.h" #include "ppapi/c/pp_instance.h"
#include "ppapi/c/private/ppb_pdf.h" #include "ppapi/c/private/ppb_pdf.h"
...@@ -41,6 +42,16 @@ class PdfAccessibilityTree : public content::PluginAXTreeSource { ...@@ -41,6 +42,16 @@ class PdfAccessibilityTree : public content::PluginAXTreeSource {
const std::vector<PP_PrivateAccessibilityCharInfo>& chars, const std::vector<PP_PrivateAccessibilityCharInfo>& chars,
const ppapi::PdfAccessibilityPageObjects& page_objects); const ppapi::PdfAccessibilityPageObjects& page_objects);
// Stores the page index and annotation index in the page.
struct AnnotationInfo {
AnnotationInfo(uint32_t page_index, uint32_t annotation_index);
AnnotationInfo(const AnnotationInfo& other);
~AnnotationInfo();
uint32_t page_index;
uint32_t annotation_index;
};
void SetAccessibilityViewportInfo( void SetAccessibilityViewportInfo(
const PP_PrivateAccessibilityViewportInfo& viewport_info); const PP_PrivateAccessibilityViewportInfo& viewport_info);
void SetAccessibilityDocInfo( void SetAccessibilityDocInfo(
...@@ -51,9 +62,8 @@ class PdfAccessibilityTree : public content::PluginAXTreeSource { ...@@ -51,9 +62,8 @@ class PdfAccessibilityTree : public content::PluginAXTreeSource {
const std::vector<PP_PrivateAccessibilityCharInfo>& chars, const std::vector<PP_PrivateAccessibilityCharInfo>& chars,
const ppapi::PdfAccessibilityPageObjects& page_objects); const ppapi::PdfAccessibilityPageObjects& page_objects);
void HandleAction(const PP_PdfAccessibilityActionData& action_data); void HandleAction(const PP_PdfAccessibilityActionData& action_data);
bool GetPdfAnnotationInfoFromAXNode(int32_t ax_node_id, base::Optional<AnnotationInfo> GetPdfAnnotationInfoFromAXNode(
uint32_t* page_index, int32_t ax_node_id) const;
uint32_t* annotation_index_in_page) const;
// PluginAXTreeSource implementation. // PluginAXTreeSource implementation.
bool GetTreeData(ui::AXTreeData* tree_data) const override; bool GetTreeData(ui::AXTreeData* tree_data) const override;
...@@ -148,16 +158,6 @@ class PdfAccessibilityTree : public content::PluginAXTreeSource { ...@@ -148,16 +158,6 @@ class PdfAccessibilityTree : public content::PluginAXTreeSource {
gfx::Transform* MakeTransformFromViewInfo(); gfx::Transform* MakeTransformFromViewInfo();
void AddWordStartsAndEnds(ui::AXNodeData* inline_text_box); void AddWordStartsAndEnds(ui::AXNodeData* inline_text_box);
// Stores the page index and annotation index in the page.
struct AnnotationInfo {
AnnotationInfo(uint32_t page_index, uint32_t annotation_index);
AnnotationInfo(const AnnotationInfo& other);
~AnnotationInfo();
uint32_t page_index;
uint32_t annotation_index;
};
ui::AXTreeData tree_data_; ui::AXTreeData tree_data_;
ui::AXTree tree_; ui::AXTree tree_;
content::RendererPpapiHost* host_; content::RendererPpapiHost* host_;
......
...@@ -55,13 +55,18 @@ bool PdfAXActionTarget::ClearAccessibilityFocus() const { ...@@ -55,13 +55,18 @@ bool PdfAXActionTarget::ClearAccessibilityFocus() const {
bool PdfAXActionTarget::Click() const { bool PdfAXActionTarget::Click() const {
PP_PdfAccessibilityActionData pdf_action_data = {}; PP_PdfAccessibilityActionData pdf_action_data = {};
if ((target_plugin_node_.data().role != ax::mojom::Role::kLink) || if (target_plugin_node_.data().role != ax::mojom::Role::kLink)
!pdf_accessibility_tree_source_->GetPdfAnnotationInfoFromAXNode( return false;
target_plugin_node_.data().id, &pdf_action_data.page_index,
&pdf_action_data.annotation_index)) { base::Optional<PdfAccessibilityTree::AnnotationInfo> annotation_info_result =
pdf_accessibility_tree_source_->GetPdfAnnotationInfoFromAXNode(
target_plugin_node_.data().id);
if (!annotation_info_result.has_value())
return false; return false;
}
const auto& annotation_info = annotation_info_result.value();
pdf_action_data.page_index = annotation_info.page_index;
pdf_action_data.annotation_index = annotation_info.annotation_index;
pdf_action_data.annotation_type = pdf_action_data.annotation_type =
PP_PdfAccessibilityAnnotationType::PP_PDF_LINK; PP_PdfAccessibilityAnnotationType::PP_PDF_LINK;
pdf_action_data.action = PP_PdfAccessibilityAction::PP_PDF_DO_DEFAULT_ACTION; pdf_action_data.action = PP_PdfAccessibilityAction::PP_PDF_DO_DEFAULT_ACTION;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment