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

Migrate PP_PrivateAccessibilityCharInfo to PDF specific struct

Add AccessibilityCharInfo in pdf/ to replace usage of
PP_PrivateAccessibilityCharInfo.

PP_PrivateAccessibilityCharInfo is a Pepper struct. The new struct
ensures that PP_PrivateAccessibilityCharInfo is scoped to parts
specific to Pepper implementation.

Bug: 1144444
Change-Id: I55ab25fd01a8b49976f936688a35de0ada1192a5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2554255
Commit-Queue: Ankit Kumar 🌪️ <ankk@microsoft.com>
Reviewed-by: default avatarDaniel Hosseinian <dhoss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#830490}
parent 013c962f
...@@ -186,7 +186,7 @@ bool GetAccessibilityInfo( ...@@ -186,7 +186,7 @@ bool GetAccessibilityInfo(
int32_t page_index, int32_t page_index,
AccessibilityPageInfo& page_info, AccessibilityPageInfo& page_info,
std::vector<pp::PDF::PrivateAccessibilityTextRunInfo>* text_runs, std::vector<pp::PDF::PrivateAccessibilityTextRunInfo>* text_runs,
std::vector<PP_PrivateAccessibilityCharInfo>* chars, std::vector<AccessibilityCharInfo>& chars,
pp::PDF::PrivateAccessibilityPageObjects* page_objects) { pp::PDF::PrivateAccessibilityPageObjects* page_objects) {
int page_count = engine->GetNumberOfPages(); int page_count = engine->GetNumberOfPages();
if (page_index < 0 || page_index >= page_count) if (page_index < 0 || page_index >= page_count)
...@@ -203,9 +203,9 @@ bool GetAccessibilityInfo( ...@@ -203,9 +203,9 @@ bool GetAccessibilityInfo(
page_info.bounds = engine->GetPageBoundsRect(page_index); page_info.bounds = engine->GetPageBoundsRect(page_index);
page_info.char_count = char_count; page_info.char_count = char_count;
chars->resize(page_info.char_count); chars.resize(page_info.char_count);
for (uint32_t i = 0; i < page_info.char_count; ++i) { for (uint32_t i = 0; i < page_info.char_count; ++i) {
(*chars)[i].unicode_character = engine->GetCharUnicode(page_index, i); chars[i].unicode_character = engine->GetCharUnicode(page_index, i);
} }
int char_index = 0; int char_index = 0;
...@@ -231,7 +231,7 @@ bool GetAccessibilityInfo( ...@@ -231,7 +231,7 @@ bool GetAccessibilityInfo(
for (uint32_t i = char_index; i < text_run_end - 1; i++) { for (uint32_t i = char_index; i < text_run_end - 1; i++) {
DCHECK_LT(i + 1, static_cast<uint32_t>(char_count)); DCHECK_LT(i + 1, static_cast<uint32_t>(char_count));
gfx::RectF next_char_bounds = engine->GetCharBounds(page_index, i + 1); gfx::RectF next_char_bounds = engine->GetCharBounds(page_index, i + 1);
double& char_width = (*chars)[i].char_width; double& char_width = chars[i].char_width;
switch (text_run_info.direction) { switch (text_run_info.direction) {
case PP_PRIVATEDIRECTION_NONE: case PP_PRIVATEDIRECTION_NONE:
case PP_PRIVATEDIRECTION_LTR: case PP_PRIVATEDIRECTION_LTR:
...@@ -249,7 +249,7 @@ bool GetAccessibilityInfo( ...@@ -249,7 +249,7 @@ bool GetAccessibilityInfo(
} }
char_bounds = next_char_bounds; char_bounds = next_char_bounds;
} }
double& char_width = (*chars)[text_run_end - 1].char_width; double& char_width = chars[text_run_end - 1].char_width;
if (text_run_info.direction == PP_PRIVATEDIRECTION_BTT || if (text_run_info.direction == PP_PRIVATEDIRECTION_BTT ||
text_run_info.direction == PP_PRIVATEDIRECTION_TTB) { text_run_info.direction == PP_PRIVATEDIRECTION_TTB) {
char_width = char_bounds.height(); char_width = char_bounds.height();
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
namespace chrome_pdf { namespace chrome_pdf {
struct AccessibilityCharInfo;
struct AccessibilityPageInfo; struct AccessibilityPageInfo;
class PDFEngine; class PDFEngine;
...@@ -25,7 +26,7 @@ bool GetAccessibilityInfo( ...@@ -25,7 +26,7 @@ bool GetAccessibilityInfo(
int32_t page_index, int32_t page_index,
AccessibilityPageInfo& page_info, AccessibilityPageInfo& page_info,
std::vector<pp::PDF::PrivateAccessibilityTextRunInfo>* text_runs, std::vector<pp::PDF::PrivateAccessibilityTextRunInfo>* text_runs,
std::vector<PP_PrivateAccessibilityCharInfo>* chars, std::vector<AccessibilityCharInfo>& chars,
pp::PDF::PrivateAccessibilityPageObjects* page_objects); pp::PDF::PrivateAccessibilityPageObjects* page_objects);
} // namespace chrome_pdf } // namespace chrome_pdf
......
...@@ -18,6 +18,11 @@ struct AccessibilityPageInfo { ...@@ -18,6 +18,11 @@ struct AccessibilityPageInfo {
uint32_t char_count = 0; uint32_t char_count = 0;
}; };
struct AccessibilityCharInfo {
uint32_t unicode_character = 0;
double char_width = 0.0;
};
} // namespace chrome_pdf } // namespace chrome_pdf
#endif // PDF_ACCESSIBILITY_STRUCTS_H_ #endif // PDF_ACCESSIBILITY_STRUCTS_H_
\ No newline at end of file
...@@ -488,6 +488,16 @@ PrivateAccessibilityPageInfoFromAccessibilityPageInfo( ...@@ -488,6 +488,16 @@ PrivateAccessibilityPageInfoFromAccessibilityPageInfo(
return pp_page_info; return pp_page_info;
} }
std::vector<PP_PrivateAccessibilityCharInfo>
PrivateAccessibilityCharInfoFromAccessibilityCharInfo(
const std::vector<AccessibilityCharInfo>& chars) {
std::vector<PP_PrivateAccessibilityCharInfo> pp_chars;
pp_chars.reserve(chars.size());
for (const auto& char_object : chars)
pp_chars.push_back({char_object.unicode_character, char_object.char_width});
return pp_chars;
}
} // namespace } // namespace
OutOfProcessInstance::OutOfProcessInstance(PP_Instance instance) OutOfProcessInstance::OutOfProcessInstance(PP_Instance instance)
...@@ -828,18 +838,20 @@ void OutOfProcessInstance::LoadAccessibility() { ...@@ -828,18 +838,20 @@ void OutOfProcessInstance::LoadAccessibility() {
void OutOfProcessInstance::SendNextAccessibilityPage(int32_t page_index) { void OutOfProcessInstance::SendNextAccessibilityPage(int32_t page_index) {
AccessibilityPageInfo page_info; AccessibilityPageInfo page_info;
std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs; std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs;
std::vector<PP_PrivateAccessibilityCharInfo> chars; std::vector<AccessibilityCharInfo> chars;
pp::PDF::PrivateAccessibilityPageObjects page_objects; pp::PDF::PrivateAccessibilityPageObjects page_objects;
if (!GetAccessibilityInfo(engine(), page_index, page_info, &text_runs, &chars, if (!GetAccessibilityInfo(engine(), page_index, page_info, &text_runs, chars,
&page_objects)) { &page_objects)) {
return; return;
} }
PP_PrivateAccessibilityPageInfo pp_page_info = PP_PrivateAccessibilityPageInfo pp_page_info =
PrivateAccessibilityPageInfoFromAccessibilityPageInfo(page_info); PrivateAccessibilityPageInfoFromAccessibilityPageInfo(page_info);
std::vector<PP_PrivateAccessibilityCharInfo> pp_chars =
PrivateAccessibilityCharInfoFromAccessibilityCharInfo(chars);
pp::PDF::SetAccessibilityPageInfo(GetPluginInstance(), &pp_page_info, pp::PDF::SetAccessibilityPageInfo(GetPluginInstance(), &pp_page_info,
text_runs, chars, page_objects); text_runs, pp_chars, page_objects);
// Schedule loading the next page. // Schedule loading the next page.
pp::Module::Get()->core()->CallOnMainThread( pp::Module::Get()->core()->CallOnMainThread(
......
...@@ -57,7 +57,7 @@ TEST_F(AccessibilityTest, GetAccessibilityPage) { ...@@ -57,7 +57,7 @@ TEST_F(AccessibilityTest, GetAccessibilityPage) {
"Bad test expectation count"); "Bad test expectation count");
static constexpr size_t kExpectedCharCount = 30; static constexpr size_t kExpectedCharCount = 30;
static constexpr PP_PrivateAccessibilityCharInfo kExpectedChars[] = { static constexpr AccessibilityCharInfo kExpectedChars[] = {
{'H', 12}, {'e', 6.6666}, {'l', 5.3333}, {'l', 4}, {'o', 8}, {'H', 12}, {'e', 6.6666}, {'l', 5.3333}, {'l', 4}, {'o', 8},
{',', 4}, {' ', 4}, {'w', 12}, {'o', 6.6666}, {'r', 6.6666}, {',', 4}, {' ', 4}, {'w', 12}, {'o', 6.6666}, {'r', 6.6666},
{'l', 4}, {'d', 9.3333}, {'!', 4}, {'\r', 0}, {'\n', 0}, {'l', 4}, {'d', 9.3333}, {'!', 4}, {'\r', 0}, {'\n', 0},
...@@ -76,10 +76,10 @@ TEST_F(AccessibilityTest, GetAccessibilityPage) { ...@@ -76,10 +76,10 @@ TEST_F(AccessibilityTest, GetAccessibilityPage) {
ASSERT_EQ(2, engine->GetNumberOfPages()); ASSERT_EQ(2, engine->GetNumberOfPages());
AccessibilityPageInfo page_info; AccessibilityPageInfo page_info;
std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs; std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs;
std::vector<PP_PrivateAccessibilityCharInfo> chars; std::vector<AccessibilityCharInfo> chars;
pp::PDF::PrivateAccessibilityPageObjects page_objects; pp::PDF::PrivateAccessibilityPageObjects page_objects;
ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs, ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs,
&chars, &page_objects)); chars, &page_objects));
EXPECT_EQ(0u, page_info.page_index); EXPECT_EQ(0u, page_info.page_index);
EXPECT_EQ(gfx::Rect(5, 3, 266, 266), page_info.bounds); EXPECT_EQ(gfx::Rect(5, 3, 266, 266), page_info.bounds);
EXPECT_EQ(text_runs.size(), page_info.text_run_count); EXPECT_EQ(text_runs.size(), page_info.text_run_count);
...@@ -129,10 +129,10 @@ TEST_F(AccessibilityTest, GetAccessibilityImageInfo) { ...@@ -129,10 +129,10 @@ TEST_F(AccessibilityTest, GetAccessibilityImageInfo) {
AccessibilityPageInfo page_info; AccessibilityPageInfo page_info;
std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs; std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs;
std::vector<PP_PrivateAccessibilityCharInfo> chars; std::vector<AccessibilityCharInfo> chars;
pp::PDF::PrivateAccessibilityPageObjects page_objects; pp::PDF::PrivateAccessibilityPageObjects page_objects;
ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs, ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs,
&chars, &page_objects)); chars, &page_objects));
EXPECT_EQ(0u, page_info.page_index); EXPECT_EQ(0u, page_info.page_index);
EXPECT_EQ(gfx::Rect(5, 3, 816, 1056), page_info.bounds); EXPECT_EQ(gfx::Rect(5, 3, 816, 1056), page_info.bounds);
EXPECT_EQ(text_runs.size(), page_info.text_run_count); EXPECT_EQ(text_runs.size(), page_info.text_run_count);
...@@ -472,10 +472,10 @@ TEST_F(AccessibilityTest, GetAccessibilityLinkInfo) { ...@@ -472,10 +472,10 @@ TEST_F(AccessibilityTest, GetAccessibilityLinkInfo) {
AccessibilityPageInfo page_info; AccessibilityPageInfo page_info;
std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs; std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs;
std::vector<PP_PrivateAccessibilityCharInfo> chars; std::vector<AccessibilityCharInfo> chars;
pp::PDF::PrivateAccessibilityPageObjects page_objects; pp::PDF::PrivateAccessibilityPageObjects page_objects;
ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs, ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs,
&chars, &page_objects)); chars, &page_objects));
EXPECT_EQ(0u, page_info.page_index); EXPECT_EQ(0u, page_info.page_index);
EXPECT_EQ(gfx::Rect(5, 3, 533, 266), page_info.bounds); EXPECT_EQ(gfx::Rect(5, 3, 533, 266), page_info.bounds);
EXPECT_EQ(text_runs.size(), page_info.text_run_count); EXPECT_EQ(text_runs.size(), page_info.text_run_count);
...@@ -519,10 +519,10 @@ TEST_F(AccessibilityTest, GetAccessibilityHighlightInfo) { ...@@ -519,10 +519,10 @@ TEST_F(AccessibilityTest, GetAccessibilityHighlightInfo) {
AccessibilityPageInfo page_info; AccessibilityPageInfo page_info;
std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs; std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs;
std::vector<PP_PrivateAccessibilityCharInfo> chars; std::vector<AccessibilityCharInfo> chars;
pp::PDF::PrivateAccessibilityPageObjects page_objects; pp::PDF::PrivateAccessibilityPageObjects page_objects;
ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs, ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs,
&chars, &page_objects)); chars, &page_objects));
EXPECT_EQ(0u, page_info.page_index); EXPECT_EQ(0u, page_info.page_index);
EXPECT_EQ(gfx::Rect(5, 3, 533, 266), page_info.bounds); EXPECT_EQ(gfx::Rect(5, 3, 533, 266), page_info.bounds);
EXPECT_EQ(text_runs.size(), page_info.text_run_count); EXPECT_EQ(text_runs.size(), page_info.text_run_count);
...@@ -577,10 +577,10 @@ TEST_F(AccessibilityTest, GetAccessibilityTextFieldInfo) { ...@@ -577,10 +577,10 @@ TEST_F(AccessibilityTest, GetAccessibilityTextFieldInfo) {
AccessibilityPageInfo page_info; AccessibilityPageInfo page_info;
std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs; std::vector<pp::PDF::PrivateAccessibilityTextRunInfo> text_runs;
std::vector<PP_PrivateAccessibilityCharInfo> chars; std::vector<AccessibilityCharInfo> chars;
pp::PDF::PrivateAccessibilityPageObjects page_objects; pp::PDF::PrivateAccessibilityPageObjects page_objects;
ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs, ASSERT_TRUE(GetAccessibilityInfo(engine.get(), 0, page_info, &text_runs,
&chars, &page_objects)); chars, &page_objects));
EXPECT_EQ(0u, page_info.page_index); EXPECT_EQ(0u, page_info.page_index);
EXPECT_EQ(gfx::Rect(5, 3, 400, 400), page_info.bounds); EXPECT_EQ(gfx::Rect(5, 3, 400, 400), page_info.bounds);
EXPECT_EQ(text_runs.size(), page_info.text_run_count); EXPECT_EQ(text_runs.size(), page_info.text_run_count);
......
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