refactor(core): remove unused attribute utilities from DomAdapters (#32278)
PR Close #32278
This commit is contained in:
parent
c3f9893d81
commit
4908a5cffc
|
@ -2080,9 +2080,8 @@ function declareTests(config?: {useJit: boolean}) {
|
|||
TestBed.overrideComponent(SomeCmp, {set: {template}});
|
||||
const fixture = TestBed.createComponent(SomeCmp);
|
||||
|
||||
const useEl = getDOM().firstChild(fixture.nativeElement);
|
||||
expect(getDOM().getAttributeNS(useEl, 'http://www.w3.org/1999/xlink', 'href'))
|
||||
.toEqual('#id');
|
||||
const useEl = getDOM().firstChild(fixture.nativeElement) as Element;
|
||||
expect(useEl.getAttributeNS('http://www.w3.org/1999/xlink', 'href')).toEqual('#id');
|
||||
});
|
||||
|
||||
it('should support binding to attributes with namespace', () => {
|
||||
|
@ -2092,19 +2091,17 @@ function declareTests(config?: {useJit: boolean}) {
|
|||
const fixture = TestBed.createComponent(SomeCmp);
|
||||
|
||||
const cmp = fixture.componentInstance;
|
||||
const useEl = getDOM().firstChild(fixture.nativeElement);
|
||||
const useEl = getDOM().firstChild(fixture.nativeElement) as Element;
|
||||
|
||||
cmp.value = '#id';
|
||||
fixture.detectChanges();
|
||||
|
||||
expect(getDOM().getAttributeNS(useEl, 'http://www.w3.org/1999/xlink', 'href'))
|
||||
.toEqual('#id');
|
||||
expect(useEl.getAttributeNS('http://www.w3.org/1999/xlink', 'href')).toEqual('#id');
|
||||
|
||||
cmp.value = null;
|
||||
fixture.detectChanges();
|
||||
|
||||
expect(getDOM().hasAttributeNS(useEl, 'http://www.w3.org/1999/xlink', 'href'))
|
||||
.toEqual(false);
|
||||
expect(useEl.hasAttributeNS('http://www.w3.org/1999/xlink', 'href')).toEqual(false);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -258,27 +258,13 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
|||
return styleValue ? value == styleValue : value.length > 0;
|
||||
}
|
||||
tagName(element: any): string { return element.tagName; }
|
||||
attributeMap(element: any): Map<string, string> {
|
||||
const res = new Map<string, string>();
|
||||
const elAttrs = element.attributes;
|
||||
for (let i = 0; i < elAttrs.length; i++) {
|
||||
const attrib = elAttrs.item(i);
|
||||
res.set(attrib.name, attrib.value);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
hasAttribute(element: Element, attribute: string): boolean {
|
||||
return element.hasAttribute(attribute);
|
||||
}
|
||||
hasAttributeNS(element: Element, ns: string, attribute: string): boolean {
|
||||
return element.hasAttributeNS(ns, attribute);
|
||||
}
|
||||
getAttribute(element: Element, attribute: string): string|null {
|
||||
return element.getAttribute(attribute);
|
||||
}
|
||||
getAttributeNS(element: Element, ns: string, name: string): string|null {
|
||||
return element.getAttributeNS(ns, name);
|
||||
}
|
||||
setAttribute(element: Element, name: string, value: string) { element.setAttribute(name, value); }
|
||||
setAttributeNS(element: Element, ns: string, name: string, value: string) {
|
||||
element.setAttributeNS(ns, name, value);
|
||||
|
@ -370,9 +356,6 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
|||
setData(element: Element, name: string, value: string) {
|
||||
this.setAttribute(element, 'data-' + name, value);
|
||||
}
|
||||
getData(element: Element, name: string): string|null {
|
||||
return this.getAttribute(element, 'data-' + name);
|
||||
}
|
||||
getComputedStyle(element: any): any { return getComputedStyle(element); }
|
||||
// TODO(tbosch): move this into a separate environment class once we have it
|
||||
supportsWebAnimation(): boolean {
|
||||
|
|
|
@ -113,11 +113,8 @@ export abstract class DomAdapter {
|
|||
abstract getStyle(element: any, styleName: string): string;
|
||||
abstract hasStyle(element: any, styleName: string, styleValue?: string): boolean;
|
||||
abstract tagName(element: any): string;
|
||||
abstract attributeMap(element: any): Map<string, string>;
|
||||
abstract hasAttribute(element: any, attribute: string): boolean;
|
||||
abstract hasAttributeNS(element: any, ns: string, attribute: string): boolean;
|
||||
abstract getAttribute(element: any, attribute: string): string|null;
|
||||
abstract getAttributeNS(element: any, ns: string, attribute: string): string|null;
|
||||
abstract setAttribute(element: any, name: string, value: string): any;
|
||||
abstract setAttributeNS(element: any, ns: string, name: string, value: string): any;
|
||||
abstract removeAttribute(element: any, attribute: string): any;
|
||||
|
@ -150,7 +147,6 @@ export abstract class DomAdapter {
|
|||
abstract getUserAgent(): string;
|
||||
abstract setData(element: any, name: string, value: string): any;
|
||||
abstract getComputedStyle(element: any): any;
|
||||
abstract getData(element: any, name: string): string|null;
|
||||
abstract supportsWebAnimation(): boolean;
|
||||
abstract performanceNow(): number;
|
||||
abstract getAnimationPrefix(): string;
|
||||
|
|
|
@ -107,6 +107,16 @@ export function normalizeCSS(css: string): string {
|
|||
.replace(/\[(.+)=([^"\]]+)\]/g, (...match: string[]) => `[${match[1]}="${match[2]}"]`);
|
||||
}
|
||||
|
||||
function getAttributeMap(element: any): Map<string, string> {
|
||||
const res = new Map<string, string>();
|
||||
const elAttrs = element.attributes;
|
||||
for (let i = 0; i < elAttrs.length; i++) {
|
||||
const attrib = elAttrs.item(i);
|
||||
res.set(attrib.name, attrib.value);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
const _selfClosingTags = ['br', 'hr', 'input'];
|
||||
export function stringifyElement(el: any /** TODO #9100 */): string {
|
||||
let result = '';
|
||||
|
@ -117,7 +127,7 @@ export function stringifyElement(el: any /** TODO #9100 */): string {
|
|||
result += `<${tagName}`;
|
||||
|
||||
// Attributes in an ordered way
|
||||
const attributeMap = getDOM().attributeMap(el);
|
||||
const attributeMap = getAttributeMap(el);
|
||||
const sortedKeys = Array.from(attributeMap.keys()).sort();
|
||||
for (const key of sortedKeys) {
|
||||
const lowerCaseKey = key.toLowerCase();
|
||||
|
|
|
@ -117,11 +117,8 @@ export class WorkerDomAdapter extends DomAdapter {
|
|||
throw 'not implemented';
|
||||
}
|
||||
tagName(element: any): string { throw 'not implemented'; }
|
||||
attributeMap(element: any): Map<string, string> { throw 'not implemented'; }
|
||||
hasAttribute(element: any, attribute: string): boolean { throw 'not implemented'; }
|
||||
hasAttributeNS(element: any, ns: string, attribute: string): boolean { throw 'not implemented'; }
|
||||
getAttribute(element: any, attribute: string): string { throw 'not implemented'; }
|
||||
getAttributeNS(element: any, ns: string, attribute: string): string { throw 'not implemented'; }
|
||||
setAttribute(element: any, name: string, value: string) { throw 'not implemented'; }
|
||||
setAttributeNS(element: any, ns: string, name: string, value: string) { throw 'not implemented'; }
|
||||
removeAttribute(element: any, attribute: string) { throw 'not implemented'; }
|
||||
|
@ -154,7 +151,6 @@ export class WorkerDomAdapter extends DomAdapter {
|
|||
getUserAgent(): string { return 'Fake user agent'; }
|
||||
setData(element: any, name: string, value: string) { throw 'not implemented'; }
|
||||
getComputedStyle(element: any): any { throw 'not implemented'; }
|
||||
getData(element: any, name: string): string { throw 'not implemented'; }
|
||||
performanceNow(): number { throw 'not implemented'; }
|
||||
getAnimationPrefix(): string { throw 'not implemented'; }
|
||||
getTransitionEnd(): string { throw 'not implemented'; }
|
||||
|
|
Loading…
Reference in New Issue