0

[unseasoned-pdf] Introduce PdfAccessibilityDataHandler

Introduce an interface class named PdfAccessibilityDataHandler. The
interface will be implemented by PdfAccessibilityTree. In case of
unseasoned-pdf-viewer, PdfViewWebPlugin will hold the
PdfAccessibilityTree class in form of its base class
PdfAccessibilityDataHandler.

Bug: 1144444
Change-Id: Iad296eb1d65be43576fcbf0cfac29073760a54b7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3081306
Commit-Queue: Ankit Kumar 🌪️ <ankk@microsoft.com>
Reviewed-by: Daniel Hosseinian <dhoss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#909940}
This commit is contained in:
Ankit Kumar 🌪️
2021-08-09 20:02:54 +00:00
committed by Chromium LUCI CQ
parent bd48805637
commit 9a35b308d2
4 changed files with 46 additions and 4 deletions

@ -8,6 +8,7 @@ include_rules = [
"+pdf/buildflags.h",
"+pdf/mojom/pdf.mojom.h",
"+pdf/pdf_accessibility_action_handler.h",
"+pdf/pdf_accessibility_data_handler.h",
"+pdf/pdf_features.h",
"+pdf/pdf_view_web_plugin.h",
"+ppapi",

@ -11,6 +11,7 @@
#include "content/public/renderer/plugin_ax_tree_source.h"
#include "content/public/renderer/render_frame_observer.h"
#include "pdf/pdf_accessibility_data_handler.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/accessibility/ax_node.h"
#include "ui/accessibility/ax_tree.h"
@ -42,7 +43,8 @@ class Transform;
namespace pdf {
class PdfAccessibilityTree : public content::PluginAXTreeSource,
public content::RenderFrameObserver {
public content::RenderFrameObserver,
public chrome_pdf::PdfAccessibilityDataHandler {
public:
PdfAccessibilityTree(
content::RenderFrame* render_frame,
@ -64,15 +66,17 @@ class PdfAccessibilityTree : public content::PluginAXTreeSource,
uint32_t annotation_index;
};
// chrome_pdf::PdfAccessibilityDataHandler:
void SetAccessibilityViewportInfo(
const chrome_pdf::AccessibilityViewportInfo& viewport_info);
const chrome_pdf::AccessibilityViewportInfo& viewport_info) override;
void SetAccessibilityDocInfo(
const chrome_pdf::AccessibilityDocInfo& doc_info);
const chrome_pdf::AccessibilityDocInfo& doc_info) override;
void SetAccessibilityPageInfo(
const chrome_pdf::AccessibilityPageInfo& page_info,
const std::vector<chrome_pdf::AccessibilityTextRunInfo>& text_runs,
const std::vector<chrome_pdf::AccessibilityCharInfo>& chars,
const chrome_pdf::AccessibilityPageObjects& page_objects);
const chrome_pdf::AccessibilityPageObjects& page_objects) override;
void HandleAction(const chrome_pdf::AccessibilityActionData& action_data);
absl::optional<AnnotationInfo> GetPdfAnnotationInfoFromAXNode(
int32_t ax_node_id) const;

@ -254,6 +254,7 @@ if (enable_pdf) {
"accessibility_structs.cc",
"accessibility_structs.h",
"pdf_accessibility_action_handler.h",
"pdf_accessibility_data_handler.h",
]
configs += [ ":strict" ]

@ -0,0 +1,36 @@
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PDF_PDF_ACCESSIBILITY_DATA_HANDLER_H_
#define PDF_PDF_ACCESSIBILITY_DATA_HANDLER_H_
#include <vector>
namespace chrome_pdf {
struct AccessibilityCharInfo;
struct AccessibilityDocInfo;
struct AccessibilityPageInfo;
struct AccessibilityPageObjects;
struct AccessibilityTextRunInfo;
struct AccessibilityViewportInfo;
class PdfAccessibilityDataHandler {
public:
virtual ~PdfAccessibilityDataHandler() = default;
virtual void SetAccessibilityViewportInfo(
const AccessibilityViewportInfo& viewport_info) = 0;
virtual void SetAccessibilityDocInfo(
const AccessibilityDocInfo& doc_info) = 0;
virtual void SetAccessibilityPageInfo(
const AccessibilityPageInfo& page_info,
const std::vector<AccessibilityTextRunInfo>& text_runs,
const std::vector<AccessibilityCharInfo>& chars,
const AccessibilityPageObjects& page_objects) = 0;
};
} // namespace chrome_pdf
#endif // PDF_PDF_ACCESSIBILITY_DATA_HANDLER_H_