[pdf] Improve PdfViewPluginBase a11y move semantics
Avoid extra copies in PdfViewWebPlugin by propagating a11y objects with moves instead of const references. The class implementation passes the objects to callbacks, and cannot do so safely as const references. The only options remaining are moves and copies, of which the former is preferred. Change-Id: I9d0e70a122db6caf30442c2de74f430c8120d52a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3315162 Commit-Queue: Daniel Hosseinian <dhoss@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org> Cr-Commit-Position: refs/heads/main@{#948138}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
8e612350b6
commit
7c9eb72937
@ -759,7 +759,7 @@ Image OutOfProcessInstance::GetPluginImageData() const {
|
||||
}
|
||||
|
||||
void OutOfProcessInstance::SetAccessibilityDocInfo(
|
||||
const AccessibilityDocInfo& doc_info) {
|
||||
AccessibilityDocInfo doc_info) {
|
||||
PP_PrivateAccessibilityDocInfo pp_doc_info = {
|
||||
doc_info.page_count, PP_FromBool(doc_info.text_accessible),
|
||||
PP_FromBool(doc_info.text_copyable)};
|
||||
@ -784,7 +784,7 @@ void OutOfProcessInstance::SetAccessibilityPageInfo(
|
||||
}
|
||||
|
||||
void OutOfProcessInstance::SetAccessibilityViewportInfo(
|
||||
const AccessibilityViewportInfo& viewport_info) {
|
||||
AccessibilityViewportInfo viewport_info) {
|
||||
PP_PrivateAccessibilityViewportInfo pp_viewport_info = {
|
||||
viewport_info.zoom,
|
||||
viewport_info.scale,
|
||||
|
@ -122,13 +122,13 @@ class OutOfProcessInstance : public PdfViewPluginBase,
|
||||
void InitImageData(const gfx::Size& size) override;
|
||||
Image GetPluginImageData() const override;
|
||||
void SetFormTextFieldInFocus(bool in_focus) override;
|
||||
void SetAccessibilityDocInfo(const AccessibilityDocInfo& doc_info) override;
|
||||
void SetAccessibilityDocInfo(AccessibilityDocInfo doc_info) override;
|
||||
void SetAccessibilityPageInfo(AccessibilityPageInfo page_info,
|
||||
std::vector<AccessibilityTextRunInfo> text_runs,
|
||||
std::vector<AccessibilityCharInfo> chars,
|
||||
AccessibilityPageObjects page_objects) override;
|
||||
void SetAccessibilityViewportInfo(
|
||||
const AccessibilityViewportInfo& viewport_info) override;
|
||||
AccessibilityViewportInfo viewport_info) override;
|
||||
void NotifyFindResultsChanged(int total, bool final_result) override;
|
||||
void NotifyFindTickmarks(const std::vector<gfx::Rect>& tickmarks) override;
|
||||
void SetContentRestrictions(int content_restrictions) override;
|
||||
|
@ -1032,7 +1032,8 @@ void PdfViewPluginBase::PrepareAndSetAccessibilityPageInfo(int32_t page_index) {
|
||||
return;
|
||||
}
|
||||
|
||||
SetAccessibilityPageInfo(page_info, text_runs, chars, page_objects);
|
||||
SetAccessibilityPageInfo(std::move(page_info), std::move(text_runs),
|
||||
std::move(chars), std::move(page_objects));
|
||||
|
||||
// Schedule loading the next page.
|
||||
ScheduleTaskOnMainThread(
|
||||
@ -1057,7 +1058,7 @@ void PdfViewPluginBase::PrepareAndSetAccessibilityViewportInfo() {
|
||||
&viewport_info.selection_end_page_index,
|
||||
&viewport_info.selection_end_char_index);
|
||||
|
||||
SetAccessibilityViewportInfo(viewport_info);
|
||||
SetAccessibilityViewportInfo(std::move(viewport_info));
|
||||
}
|
||||
|
||||
bool PdfViewPluginBase::StartFind(const std::string& text,
|
||||
|
@ -300,8 +300,7 @@ class PdfViewPluginBase : public PDFEngine::Client,
|
||||
virtual void SetFormTextFieldInFocus(bool in_focus) = 0;
|
||||
|
||||
// Sets the accessibility information about the PDF document in the renderer.
|
||||
virtual void SetAccessibilityDocInfo(
|
||||
const AccessibilityDocInfo& doc_info) = 0;
|
||||
virtual void SetAccessibilityDocInfo(AccessibilityDocInfo doc_info) = 0;
|
||||
|
||||
// Sets the accessibility information about the given `page_index` in the
|
||||
// renderer.
|
||||
@ -323,7 +322,7 @@ class PdfViewPluginBase : public PDFEngine::Client,
|
||||
// Sets the accessibility information about the current viewport in the
|
||||
// renderer.
|
||||
virtual void SetAccessibilityViewportInfo(
|
||||
const AccessibilityViewportInfo& viewport_info) = 0;
|
||||
AccessibilityViewportInfo viewport_info) = 0;
|
||||
|
||||
// Find handlers.
|
||||
bool StartFind(const std::string& text, bool case_sensitive);
|
||||
|
@ -226,7 +226,7 @@ class FakePdfViewPluginBase : public PdfViewPluginBase {
|
||||
|
||||
MOCK_METHOD(void,
|
||||
SetAccessibilityDocInfo,
|
||||
(const AccessibilityDocInfo&),
|
||||
(AccessibilityDocInfo),
|
||||
(override));
|
||||
|
||||
MOCK_METHOD(void,
|
||||
@ -239,7 +239,7 @@ class FakePdfViewPluginBase : public PdfViewPluginBase {
|
||||
|
||||
MOCK_METHOD(void,
|
||||
SetAccessibilityViewportInfo,
|
||||
(const AccessibilityViewportInfo&),
|
||||
(AccessibilityViewportInfo),
|
||||
(override));
|
||||
|
||||
MOCK_METHOD(void, NotifyFindResultsChanged, (int, bool), (override));
|
||||
|
@ -850,11 +850,11 @@ void PdfViewWebPlugin::SetFormTextFieldInFocus(bool in_focus) {
|
||||
container_wrapper_->UpdateTextInputState();
|
||||
}
|
||||
|
||||
void PdfViewWebPlugin::SetAccessibilityDocInfo(
|
||||
const AccessibilityDocInfo& doc_info) {
|
||||
void PdfViewWebPlugin::SetAccessibilityDocInfo(AccessibilityDocInfo doc_info) {
|
||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||
FROM_HERE, base::BindOnce(&PdfViewWebPlugin::OnSetAccessibilityDocInfo,
|
||||
weak_factory_.GetWeakPtr(), doc_info));
|
||||
FROM_HERE,
|
||||
base::BindOnce(&PdfViewWebPlugin::OnSetAccessibilityDocInfo,
|
||||
weak_factory_.GetWeakPtr(), std::move(doc_info)));
|
||||
}
|
||||
|
||||
void PdfViewWebPlugin::SetAccessibilityPageInfo(
|
||||
@ -870,11 +870,11 @@ void PdfViewWebPlugin::SetAccessibilityPageInfo(
|
||||
}
|
||||
|
||||
void PdfViewWebPlugin::SetAccessibilityViewportInfo(
|
||||
const AccessibilityViewportInfo& viewport_info) {
|
||||
AccessibilityViewportInfo viewport_info) {
|
||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||
FROM_HERE,
|
||||
base::BindOnce(&PdfViewWebPlugin::OnSetAccessibilityViewportInfo,
|
||||
weak_factory_.GetWeakPtr(), viewport_info));
|
||||
weak_factory_.GetWeakPtr(), std::move(viewport_info)));
|
||||
}
|
||||
|
||||
void PdfViewWebPlugin::NotifyFindResultsChanged(int total, bool final_result) {
|
||||
|
@ -282,13 +282,13 @@ class PdfViewWebPlugin final : public PdfViewPluginBase,
|
||||
void SaveAs() override;
|
||||
void InitImageData(const gfx::Size& size) override;
|
||||
void SetFormTextFieldInFocus(bool in_focus) override;
|
||||
void SetAccessibilityDocInfo(const AccessibilityDocInfo& doc_info) override;
|
||||
void SetAccessibilityDocInfo(AccessibilityDocInfo doc_info) override;
|
||||
void SetAccessibilityPageInfo(AccessibilityPageInfo page_info,
|
||||
std::vector<AccessibilityTextRunInfo> text_runs,
|
||||
std::vector<AccessibilityCharInfo> chars,
|
||||
AccessibilityPageObjects page_objects) override;
|
||||
void SetAccessibilityViewportInfo(
|
||||
const AccessibilityViewportInfo& viewport_info) override;
|
||||
AccessibilityViewportInfo viewport_info) override;
|
||||
void NotifyFindResultsChanged(int total, bool final_result) override;
|
||||
void NotifyFindTickmarks(const std::vector<gfx::Rect>& tickmarks) override;
|
||||
void SetContentRestrictions(int content_restrictions) override;
|
||||
|
Reference in New Issue
Block a user