Skip to content

Commit f0a8729

Browse files
authored
chore: remove unused selector engines (#4950)
css and id are superseeded by the new css engine.
1 parent 3f90405 commit f0a8729

File tree

4 files changed

+25
-343
lines changed

4 files changed

+25
-343
lines changed

src/server/injected/attributeSelectorEngine.ts

Lines changed: 0 additions & 66 deletions
This file was deleted.

src/server/injected/cssSelectorEngine.ts

Lines changed: 0 additions & 264 deletions
This file was deleted.

src/server/injected/injectedScript.ts

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,13 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { createAttributeEngine } from './attributeSelectorEngine';
1817
import { SelectorEngine, SelectorRoot } from './selectorEngine';
1918
import { createTextSelector } from './textSelectorEngine';
2019
import { XPathEngine } from './xpathSelectorEngine';
2120
import { ParsedSelector, ParsedSelectorPart, parseSelector } from '../common/selectorParser';
2221
import { FatalDOMError } from '../common/domErrors';
2322
import { SelectorEvaluatorImpl, isVisible, parentElementOrShadowHost } from './selectorEvaluator';
24-
import { createCSSEngine } from './cssSelectorEngine';
23+
import { CSSComplexSelectorList } from '../common/cssParser';
2524

2625
type Predicate<T> = (progress: InjectedScriptProgress, continuePolling: symbol) => T | symbol;
2726

@@ -46,20 +45,18 @@ export class InjectedScript {
4645

4746
constructor(customEngines: { name: string, engine: SelectorEngine}[]) {
4847
this._enginesV1 = new Map();
49-
this._enginesV1.set('css', createCSSEngine(true));
50-
this._enginesV1.set('css:light', createCSSEngine(false));
5148
this._enginesV1.set('xpath', XPathEngine);
5249
this._enginesV1.set('xpath:light', XPathEngine);
5350
this._enginesV1.set('text', createTextSelector(true));
5451
this._enginesV1.set('text:light', createTextSelector(false));
55-
this._enginesV1.set('id', createAttributeEngine('id', true));
56-
this._enginesV1.set('id:light', createAttributeEngine('id', false));
57-
this._enginesV1.set('data-testid', createAttributeEngine('data-testid', true));
58-
this._enginesV1.set('data-testid:light', createAttributeEngine('data-testid', false));
59-
this._enginesV1.set('data-test-id', createAttributeEngine('data-test-id', true));
60-
this._enginesV1.set('data-test-id:light', createAttributeEngine('data-test-id', false));
61-
this._enginesV1.set('data-test', createAttributeEngine('data-test', true));
62-
this._enginesV1.set('data-test:light', createAttributeEngine('data-test', false));
52+
this._enginesV1.set('id', this._createAttributeEngine('id', true));
53+
this._enginesV1.set('id:light', this._createAttributeEngine('id', false));
54+
this._enginesV1.set('data-testid', this._createAttributeEngine('data-testid', true));
55+
this._enginesV1.set('data-testid:light', this._createAttributeEngine('data-testid', false));
56+
this._enginesV1.set('data-test-id', this._createAttributeEngine('data-test-id', true));
57+
this._enginesV1.set('data-test-id:light', this._createAttributeEngine('data-test-id', false));
58+
this._enginesV1.set('data-test', this._createAttributeEngine('data-test', true));
59+
this._enginesV1.set('data-test:light', this._createAttributeEngine('data-test', false));
6360
for (const { name, engine } of customEngines)
6461
this._enginesV1.set(name, engine);
6562

@@ -133,6 +130,21 @@ export class InjectedScript {
133130
return this._enginesV1.get(part.name)!.queryAll(root, part.body);
134131
}
135132

133+
private _createAttributeEngine(attribute: string, shadow: boolean): SelectorEngine {
134+
const toCSS = (selector: string): CSSComplexSelectorList => {
135+
const css = `[${attribute}=${JSON.stringify(selector)}]`;
136+
return [{ simples: [{ selector: { css, functions: [] }, combinator: '' }] }];
137+
};
138+
return {
139+
query: (root: SelectorRoot, selector: string): Element | undefined => {
140+
return this._evaluator.evaluate({ scope: root as Document | Element, pierceShadow: shadow }, toCSS(selector))[0];
141+
},
142+
queryAll: (root: SelectorRoot, selector: string): Element[] => {
143+
return this._evaluator.evaluate({ scope: root as Document | Element, pierceShadow: shadow }, toCSS(selector));
144+
}
145+
};
146+
}
147+
136148
extend(source: string, params: any): any {
137149
const constrFunction = global.eval(source);
138150
return new constrFunction(this, params);

0 commit comments

Comments
 (0)