summaryrefslogtreecommitdiffstats
path: root/toolkit/actors/FinderChild.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/actors/FinderChild.sys.mjs')
-rw-r--r--toolkit/actors/FinderChild.sys.mjs129
1 files changed, 129 insertions, 0 deletions
diff --git a/toolkit/actors/FinderChild.sys.mjs b/toolkit/actors/FinderChild.sys.mjs
new file mode 100644
index 0000000000..6a245cd606
--- /dev/null
+++ b/toolkit/actors/FinderChild.sys.mjs
@@ -0,0 +1,129 @@
+// -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
+// vim: set ts=2 sw=2 sts=2 et tw=80: */
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+const lazy = {};
+
+ChromeUtils.defineESModuleGetters(lazy, {
+ Finder: "resource://gre/modules/Finder.sys.mjs",
+});
+
+export class FinderChild extends JSWindowActorChild {
+ get finder() {
+ if (!this._finder) {
+ this._finder = new lazy.Finder(this.docShell);
+ }
+ return this._finder;
+ }
+
+ receiveMessage(aMessage) {
+ let data = aMessage.data;
+
+ switch (aMessage.name) {
+ case "Finder:CaseSensitive":
+ this.finder.caseSensitive = data.caseSensitive;
+ break;
+
+ case "Finder:MatchDiacritics":
+ this.finder.matchDiacritics = data.matchDiacritics;
+ break;
+
+ case "Finder:EntireWord":
+ this.finder.entireWord = data.entireWord;
+ break;
+
+ case "Finder:SetSearchStringToSelection": {
+ return new Promise(resolve => {
+ resolve(this.finder.setSearchStringToSelection());
+ });
+ }
+
+ case "Finder:GetInitialSelection": {
+ return new Promise(resolve => {
+ resolve(this.finder.getActiveSelectionText());
+ });
+ }
+
+ case "Finder:Find":
+ return this.finder.find(data);
+
+ case "Finder:Highlight":
+ return this.finder
+ .highlight(
+ data.highlight,
+ data.searchString,
+ data.linksOnly,
+ data.useSubFrames
+ )
+ .then(result => {
+ if (result) {
+ result.browsingContextId = this.browsingContext.id;
+ }
+ return result;
+ });
+
+ case "Finder:UpdateHighlightAndMatchCount":
+ return this.finder.updateHighlightAndMatchCount(data).then(result => {
+ if (result) {
+ result.browsingContextId = this.browsingContext.id;
+ }
+ return result;
+ });
+
+ case "Finder:HighlightAllChange":
+ this.finder.onHighlightAllChange(data.highlightAll);
+ break;
+
+ case "Finder:EnableSelection":
+ this.finder.enableSelection();
+ break;
+
+ case "Finder:RemoveSelection":
+ this.finder.removeSelection(data.keepHighlight);
+ break;
+
+ case "Finder:FocusContent":
+ this.finder.focusContent();
+ break;
+
+ case "Finder:FindbarClose":
+ this.finder.onFindbarClose();
+ break;
+
+ case "Finder:FindbarOpen":
+ this.finder.onFindbarOpen();
+ break;
+
+ case "Finder:KeyPress":
+ var KeyboardEvent = this.finder._getWindow().KeyboardEvent;
+ this.finder.keyPress(new KeyboardEvent("keypress", data));
+ break;
+
+ case "Finder:MatchesCount":
+ return this.finder
+ .requestMatchesCount(
+ data.searchString,
+ data.linksOnly,
+ data.useSubFrames
+ )
+ .then(result => {
+ if (result) {
+ result.browsingContextId = this.browsingContext.id;
+ }
+ return result;
+ });
+
+ case "Finder:ModalHighlightChange":
+ this.finder.onModalHighlightChange(data.useModalHighlight);
+ break;
+
+ case "Finder:EnableMarkTesting":
+ this.finder.highlighter.enableTesting(data.enable);
+ break;
+ }
+
+ return null;
+ }
+}