1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 14:48:08 +02:00

Expose entireWord in updateFindControlState

Allow apps with supportsIntegratedFind to better monitor the find state.

A recognized use case is the Firefox findbar, its "not found" sound must
consider `entireWord` and only make noise when it is off.

See related implementation in
https://hg.mozilla.org/mozilla-central/rev/16b902cbcf26

This change can help if we have to move the implementation from cpp to jsm.
This commit is contained in:
bootleq 2024-06-20 16:24:45 +08:00
parent a081dd25eb
commit 890c567eca
3 changed files with 35 additions and 0 deletions

View file

@ -1022,4 +1022,36 @@ describe("pdf_find_controller", function () {
pageMatchesLength: [[1, 1, 1, 1, 1, 1, 1, 1, 1]],
});
});
it("dispatches updatefindcontrolstate with correct properties", async function () {
const testOnFind = ({ eventBus }) =>
new Promise(function (resolve) {
const eventState = {
source: this,
type: "",
query: "Foo",
caseSensitive: true,
entireWord: true,
findPrevious: false,
matchDiacritics: false,
};
eventBus.dispatch("find", eventState);
eventBus.on("updatefindcontrolstate", function (evt) {
expect(evt).toEqual(
jasmine.objectContaining({
state: FindState.NOT_FOUND,
previous: false,
entireWord: true,
matchesCount: { current: 0, total: 0 },
rawQuery: "Foo",
})
);
resolve();
});
});
const { eventBus } = await initPdfFindController();
await testOnFind({ eventBus });
});
});

View file

@ -2516,6 +2516,7 @@ function webViewerUpdateFindMatchesCount({ matchesCount }) {
function webViewerUpdateFindControlState({
state,
previous,
entireWord,
matchesCount,
rawQuery,
}) {
@ -2523,6 +2524,7 @@ function webViewerUpdateFindControlState({
PDFViewerApplication.externalServices.updateFindControlState({
result: state,
findPrevious: previous,
entireWord,
matchesCount,
rawQuery,
});

View file

@ -1133,6 +1133,7 @@ class PDFFindController {
source: this,
state,
previous,
entireWord: this.#state?.entireWord ?? null,
matchesCount: this.#requestMatchesCount(),
rawQuery: this.#state?.query ?? null,
});