UNPKG

17.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"testing.js","sources":["../../../../../../packages/platform-browser/testing/src/browser_util.ts","../../../../../../packages/platform-browser/testing/src/browser.ts","../../../../../../packages/platform-browser/testing/testing.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ɵgetDOM as getDOM} from '@angular/common';\nimport {NgZone, ɵglobal as global} from '@angular/core';\n\nexport class BrowserDetection {\n private _overrideUa: string|null;\n private get _ua(): string {\n if (typeof this._overrideUa === 'string') {\n return this._overrideUa;\n }\n\n return getDOM() ? getDOM().getUserAgent() : '';\n }\n\n static setup() {\n return new BrowserDetection(null);\n }\n\n constructor(ua: string|null) {\n this._overrideUa = ua;\n }\n\n get isFirefox(): boolean {\n return this._ua.indexOf('Firefox') > -1;\n }\n\n get isAndroid(): boolean {\n return this._ua.indexOf('Mozilla/5.0') > -1 && this._ua.indexOf('Android') > -1 &&\n this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Chrome') == -1 &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isEdge(): boolean {\n return this._ua.indexOf('Edge') > -1;\n }\n\n get isIE(): boolean {\n return this._ua.indexOf('Trident') > -1;\n }\n\n get isWebkit(): boolean {\n return this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Edge') == -1 &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isIOS7(): boolean {\n return (this._ua.indexOf('iPhone OS 7') > -1 || this._ua.indexOf('iPad OS 7') > -1) &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isSlow(): boolean {\n return this.isAndroid || this.isIE || this.isIOS7;\n }\n\n // The Intl API is only natively supported in Chrome, Firefox, IE11 and Edge.\n // This detector is needed in tests to make the difference between:\n // 1) IE11/Edge: they have a native Intl API, but with some discrepancies\n // 2) IE9/IE10: they use the polyfill, and so no discrepancies\n get supportsNativeIntlApi(): boolean {\n return !!(<any>global).Intl && (<any>global).Intl !== (<any>global).IntlPolyfill;\n }\n\n get isChromeDesktop(): boolean {\n return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Mobile Safari') == -1 &&\n this._ua.indexOf('Edge') == -1;\n }\n\n // \"Old Chrome\" means Chrome 3X, where there are some discrepancies in the Intl API.\n // Android 4.4 and 5.X have such browsers by default (respectively 30 and 39).\n get isOldChrome(): boolean {\n return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Chrome/3') > -1 &&\n this._ua.indexOf('Edge') == -1;\n }\n\n get supportsCustomElements() {\n return (typeof (<any>global).customElements !== 'undefined');\n }\n\n get supportsDeprecatedCustomCustomElementsV0() {\n return (typeof (document as any).registerElement !== 'undefined');\n }\n\n get supportsRegExUnicodeFlag(): boolean {\n return RegExp.prototype.hasOwnProperty('unicode');\n }\n\n get supportsShadowDom() {\n const testEl = document.createElement('div');\n return (typeof testEl.attachShadow !== 'undefined');\n }\n\n get supportsDeprecatedShadowDomV0() {\n const testEl = document.createElement('div') as any;\n return (typeof testEl.createShadowRoot !== 'undefined');\n }\n}\n\nexport const browserDetection: BrowserDetection = BrowserDetection.setup();\n\nexport function dispatchEvent(element: any, eventType: any): void {\n const evt: Event = getDOM().getDefaultDocument().createEvent('Event');\n evt.initEvent(eventType, true, true);\n getDOM().dispatchEvent(element, evt);\n}\n\nexport function createMouseEvent(eventType: string): MouseEvent {\n const evt: MouseEvent = getDOM().getDefaultDocument().createEvent('MouseEvent');\n evt.initEvent(eventType, true, true);\n return evt;\n}\n\nexport function el(html: string): HTMLElement {\n return <HTMLElement>getContent(createTemplate(html)).firstChild;\n}\n\nexport function normalizeCSS(css: string): string {\n return css.replace(/\\s+/g, ' ')\n .replace(/:\\s/g, ':')\n .replace(/'/g, '\"')\n .replace(/ }/g, '}')\n .replace(/url\\((\\\"|\\s)(.+)(\\\"|\\s)\\)(\\s*)/g, (...match: string[]) => `url(\"${match[2]}\")`)\n .replace(/\\[(.+)=([^\"\\]]+)\\]/g, (...match: string[]) => `[${match[1]}=\"${match[2]}\"]`);\n}\n\nfunction getAttributeMap(element: any): Map<string, string> {\n const res = new Map<string, string>();\n const elAttrs = element.attributes;\n for (let i = 0; i < elAttrs.length; i++) {\n const attrib = elAttrs.item(i);\n res.set(attrib.name, attrib.value);\n }\n return res;\n}\n\nconst _selfClosingTags = ['br', 'hr', 'input'];\nexport function stringifyElement(el: any /** TODO #9100 */): string {\n let result = '';\n if (getDOM().isElementNode(el)) {\n const tagName = el.tagName.toLowerCase();\n\n // Opening tag\n result += `<${tagName}`;\n\n // Attributes in an ordered way\n const attributeMap = getAttributeMap(el);\n const sortedKeys = Array.from(attributeMap.keys()).sort();\n for (const key of sortedKeys) {\n const lowerCaseKey = key.toLowerCase();\n let attValue = attributeMap.get(key);\n\n if (typeof attValue !== 'string') {\n result += ` ${lowerCaseKey}`;\n } else {\n // Browsers order style rules differently. Order them alphabetically for consistency.\n if (lowerCaseKey === 'style') {\n attValue = attValue.split(/; ?/).filter(s => !!s).sort().map(s => `${s};`).join(' ');\n }\n\n result += ` ${lowerCaseKey}=\"${attValue}\"`;\n }\n }\n result += '>';\n\n // Children\n const childrenRoot = templateAwareRoot(el);\n const children = childrenRoot ? childrenRoot.childNodes : [];\n for (let j = 0; j < children.length; j++) {\n result += stringifyElement(children[j]);\n }\n\n // Closing tag\n if (_selfClosingTags.indexOf(tagName) == -1) {\n result += `</${tagName}>`;\n }\n } else if (isCommentNode(el)) {\n result += `<!--${el.nodeValue}-->`;\n } else {\n result += el.textContent;\n }\n\n return result;\n}\n\nexport function createNgZone(): NgZone {\n return new NgZone({enableLongStackTrace: true, shouldCoalesceEventChangeDetection: false});\n}\n\nexport function isCommentNode(node: Node): boolean {\n return node.nodeType === Node.COMMENT_NODE;\n}\n\nexport function isTextNode(node: Node): boolean {\n return node.nodeType === Node.TEXT_NODE;\n}\n\nexport function getContent(node: Node): Node {\n if ('content' in node) {\n return (<any>node).content;\n } else {\n return node;\n }\n}\n\nexport function templateAwareRoot(el: Node): any {\n return getDOM().isElementNode(el) && el.nodeName === 'TEMPLATE' ? getContent(el) : el;\n}\n\nexport function setCookie(name: string, value: string) {\n // document.cookie is magical, assigning into it assigns/overrides one cookie value, but does\n // not clear other cookies.\n document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value);\n}\n\nexport function supportsWebAnimation(): boolean {\n return typeof (<any>Element).prototype['animate'] === 'function';\n}\n\nexport function hasStyle(element: any, styleName: string, styleValue?: string|null): boolean {\n const value = element.style[styleName] || '';\n return styleValue ? value == styleValue : value.length > 0;\n}\n\nexport function hasClass(element: any, className: string): boolean {\n return element.classList.contains(className);\n}\n\nexport function sortedClassList(element: any): any[] {\n return Array.prototype.slice.call(element.classList, 0).sort();\n}\n\nexport function createTemplate(html: any): HTMLElement {\n const t = getDOM().getDefaultDocument().createElement('template');\n t.innerHTML = html;\n return t;\n}\n\nexport function childNodesAsList(el: Node): any[] {\n const childNodes = el.childNodes;\n const res = [];\n for (let i = 0; i < childNodes.length; i++) {\n res[i] = childNodes[i];\n }\n return res;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {APP_ID, createPlatformFactory, NgModule, NgZone, PLATFORM_INITIALIZER, platformCore, PlatformRef, StaticProvider} from '@angular/core';\nimport {BrowserModule, ɵBrowserDomAdapter as BrowserDomAdapter, ɵELEMENT_PROBE_PROVIDERS as ELEMENT_PROBE_PROVIDERS} from '@angular/platform-browser';\n\nimport {BrowserDetection, createNgZone} from './browser_util';\n\nfunction initBrowserTests() {\n BrowserDomAdapter.makeCurrent();\n BrowserDetection.setup();\n}\n\nconst _TEST_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] =\n [{provide: PLATFORM_INITIALIZER, useValue: initBrowserTests, multi: true}];\n\n/**\n * Platform for testing\n *\n * @publicApi\n */\nexport const platformBrowserTesting =\n createPlatformFactory(platformCore, 'browserTesting', _TEST_BROWSER_PLATFORM_PROVIDERS);\n\n/**\n * NgModule for testing.\n *\n * @publicApi\n */\n@NgModule({\n exports: [BrowserModule],\n providers: [\n {provide: APP_ID, useValue: 'a'},\n ELEMENT_PROBE_PROVIDERS,\n {provide: NgZone, useFactory: createNgZone},\n ]\n})\nexport class BrowserTestingModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {createNgZone as ɵangular_packages_platform_browser_testing_testing_a} from './src/browser_util';"],"names":["getDOM","global","BrowserDomAdapter","ELEMENT_PROBE_PROVIDERS"],"mappings":"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"}
\No newline at end of file