diff --git a/extensions/amp-a4a/0.1/amp-a4a.js b/extensions/amp-a4a/0.1/amp-a4a.js index e013a9f29682..88fb97268403 100644 --- a/extensions/amp-a4a/0.1/amp-a4a.js +++ b/extensions/amp-a4a/0.1/amp-a4a.js @@ -40,7 +40,7 @@ import {isArray, isObject, isEnumValue} from '../../../src/types'; import {utf8Decode} from '../../../src/utils/bytes'; import {getBinaryType, isExperimentOn} from '../../../src/experiments'; import {setStyle} from '../../../src/style'; -import {assertHttpsUrl} from '../../../src/url'; +import {assertHttpsUrl, isSecureUrl} from '../../../src/url'; import {parseJson} from '../../../src/json'; import {handleClick} from '../../../ads/alp/handler'; import { @@ -106,7 +106,8 @@ export let SizeInfoDef; /** @typedef {{ minifiedCreative: string, customElementExtensions: !Array, - customStylesheets: !Array<{href: string}> + customStylesheets: !Array<{href: string}>, + images: (Array|undefined), }} */ let CreativeMetaDataDef; @@ -733,6 +734,9 @@ export class AmpA4A extends AMP.BaseElement { // Preload any fonts. (creativeMetaDataDef.customStylesheets || []).forEach(font => this.preconnect.preload(font.href)); + // Preload any AMP images. + (creativeMetaDataDef.images || []).forEach(image => + isSecureUrl(image) && this.preconnect.preload(image)); return creativeMetaDataDef; }) .catch(error => { @@ -1472,11 +1476,15 @@ export class AmpA4A extends AMP.BaseElement { metaData.customStylesheets.forEach(stylesheet => { if (!isObject(stylesheet) || !stylesheet['href'] || typeof stylesheet['href'] !== 'string' || - !/^https:\/\//i.test(stylesheet['href'])) { + !isSecureUrl(stylesheet['href'])) { throw new Error(errorMsg); } }); } + if (isArray(metaDataObj['images'])) { + // Load maximum of 5 images. + metaData.images = metaDataObj['images'].splice(0, 5); + } // TODO(keithwrightbos): OK to assume ampRuntimeUtf16CharOffsets is before // metadata as its in the head? metaData.minifiedCreative = diff --git a/extensions/amp-a4a/0.1/test/test-amp-a4a.js b/extensions/amp-a4a/0.1/test/test-amp-a4a.js index 07baeffb3ea2..998c12e9ca93 100644 --- a/extensions/amp-a4a/0.1/test/test-amp-a4a.js +++ b/extensions/amp-a4a/0.1/test/test-amp-a4a.js @@ -152,7 +152,7 @@ describe('amp-a4a', () => { function buildCreativeString(opt_additionalInfo) { const baseTestDoc = testFragments.minimalDocOneStyle; - const offsets = opt_additionalInfo || {}; + const offsets = Object.assign({}, opt_additionalInfo || {}); offsets.ampRuntimeUtf16CharOffsets = [ baseTestDoc.indexOf('