diff --git a/toolkit/components/pdfjs/content/PdfStreamConverter.sys.mjs b/toolkit/components/pdfjs/content/PdfStreamConverter.sys.mjs index bf64528d51fd..f049a3824c13 100644 --- a/toolkit/components/pdfjs/content/PdfStreamConverter.sys.mjs +++ b/toolkit/components/pdfjs/content/PdfStreamConverter.sys.mjs @@ -525,11 +525,17 @@ class ChromeActions { if (typeof data.rawQuery === "string") { rawQuery = data.rawQuery; } + // Same for the `entireWord` property. + let entireWord = false; + if (typeof data.entireWord === "boolean") { + entireWord = data.entireWord; + } let actor = getActor(this.domWindow); actor?.sendAsyncMessage("PDFJS:Parent:updateControlState", { result, findPrevious, + entireWord, matchesCount, rawQuery, }); diff --git a/toolkit/components/pdfjs/content/PdfjsParent.sys.mjs b/toolkit/components/pdfjs/content/PdfjsParent.sys.mjs index 3938f2b9490f..fb37c3c6a6df 100644 --- a/toolkit/components/pdfjs/content/PdfjsParent.sys.mjs +++ b/toolkit/components/pdfjs/content/PdfjsParent.sys.mjs @@ -15,6 +15,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; import { PdfJsTelemetry } from "resource://pdf.js/PdfJsTelemetry.sys.mjs"; +import { playNotFoundSound } from "resource://gre/modules/FinderSound.sys.mjs"; const lazy = {}; @@ -69,6 +70,7 @@ export class PdfjsParent extends JSWindowActorParent { super(); this._boundToFindbar = null; this._findFailedString = null; + this._lastNotFoundStringLength = 0; this._updatedPreference(); } @@ -414,6 +416,23 @@ export class PdfjsParent extends JSWindowActorParent { lazy.SetClipboardSearchString(data.rawQuery); } + let searchLengthened; + switch (data.result) { + case Ci.nsITypeAheadFind.FIND_NOTFOUND: + searchLengthened = + data.rawQuery.length > this._lastNotFoundStringLength; + this._lastNotFoundStringLength = data.rawQuery.length; + + if (searchLengthened && !data.entireWord) { + playNotFoundSound(); + } + break; + case Ci.nsITypeAheadFind.FIND_PENDING: + break; + default: + this._lastNotFoundStringLength = 0; + } + const matchesCount = this._requestMatchesCount(data.matchesCount); fb.onMatchesCountResult(matchesCount); });