Bug 1796551 [wpt PR 36570] - WebKit export of https://bugs.webkit.org/show_bug.cgi...
[gecko.git] / toolkit / actors / FinderChild.jsm
blob02dcc0f180cd3d9fb3e0fde799fc38de32932a15
1 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
2 // vim: set ts=2 sw=2 sts=2 et tw=80: */
3 // This Source Code Form is subject to the terms of the Mozilla Public
4 // License, v. 2.0. If a copy of the MPL was not distributed with this
5 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 var EXPORTED_SYMBOLS = ["FinderChild"];
9 const lazy = {};
11 ChromeUtils.defineESModuleGetters(lazy, {
12   Finder: "resource://gre/modules/Finder.sys.mjs",
13 });
15 class FinderChild extends JSWindowActorChild {
16   get finder() {
17     if (!this._finder) {
18       this._finder = new lazy.Finder(this.docShell);
19     }
20     return this._finder;
21   }
23   receiveMessage(aMessage) {
24     let data = aMessage.data;
26     switch (aMessage.name) {
27       case "Finder:CaseSensitive":
28         this.finder.caseSensitive = data.caseSensitive;
29         break;
31       case "Finder:MatchDiacritics":
32         this.finder.matchDiacritics = data.matchDiacritics;
33         break;
35       case "Finder:EntireWord":
36         this.finder.entireWord = data.entireWord;
37         break;
39       case "Finder:SetSearchStringToSelection": {
40         return new Promise(resolve => {
41           resolve(this.finder.setSearchStringToSelection());
42         });
43       }
45       case "Finder:GetInitialSelection": {
46         return new Promise(resolve => {
47           resolve(this.finder.getActiveSelectionText());
48         });
49       }
51       case "Finder:Find":
52         return this.finder.find(data);
54       case "Finder:Highlight":
55         return this.finder
56           .highlight(
57             data.highlight,
58             data.searchString,
59             data.linksOnly,
60             data.useSubFrames
61           )
62           .then(result => {
63             if (result) {
64               result.browsingContextId = this.browsingContext.id;
65             }
66             return result;
67           });
69       case "Finder:UpdateHighlightAndMatchCount":
70         return this.finder.updateHighlightAndMatchCount(data).then(result => {
71           if (result) {
72             result.browsingContextId = this.browsingContext.id;
73           }
74           return result;
75         });
77       case "Finder:HighlightAllChange":
78         this.finder.onHighlightAllChange(data.highlightAll);
79         break;
81       case "Finder:EnableSelection":
82         this.finder.enableSelection();
83         break;
85       case "Finder:RemoveSelection":
86         this.finder.removeSelection(data.keepHighlight);
87         break;
89       case "Finder:FocusContent":
90         this.finder.focusContent();
91         break;
93       case "Finder:FindbarClose":
94         this.finder.onFindbarClose();
95         break;
97       case "Finder:FindbarOpen":
98         this.finder.onFindbarOpen();
99         break;
101       case "Finder:KeyPress":
102         var KeyboardEvent = this.finder._getWindow().KeyboardEvent;
103         this.finder.keyPress(new KeyboardEvent("keypress", data));
104         break;
106       case "Finder:MatchesCount":
107         return this.finder
108           .requestMatchesCount(
109             data.searchString,
110             data.linksOnly,
111             data.useSubFrames
112           )
113           .then(result => {
114             if (result) {
115               result.browsingContextId = this.browsingContext.id;
116             }
117             return result;
118           });
120       case "Finder:ModalHighlightChange":
121         this.finder.onModalHighlightChange(data.useModalHighlight);
122         break;
124       case "Finder:EnableMarkTesting":
125         this.finder.highlighter.enableTesting(data.enable);
126         break;
127     }
129     return null;
130   }