From aa5f119e6ba22aeef20189a458c965f8a42cdecd Mon Sep 17 00:00:00 2001 From: Gene Levitzky Date: Thu, 12 Sep 2019 12:36:54 -0400 Subject: [PATCH] Carve out flex slot expansion if the returned creative has a size that matches one that was requested. --- .../0.1/amp-ad-network-doubleclick-impl.js | 7 ++++++- .../test/test-amp-ad-network-doubleclick-impl.js | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/extensions/amp-ad-network-doubleclick-impl/0.1/amp-ad-network-doubleclick-impl.js b/extensions/amp-ad-network-doubleclick-impl/0.1/amp-ad-network-doubleclick-impl.js index 84ccdec1fde3b..238b192e222da 100644 --- a/extensions/amp-ad-network-doubleclick-impl/0.1/amp-ad-network-doubleclick-impl.js +++ b/extensions/amp-ad-network-doubleclick-impl/0.1/amp-ad-network-doubleclick-impl.js @@ -1249,7 +1249,12 @@ export class AmpAdNetworkDoubleclickImpl extends AmpA4A { (returnedSizeDifferent && heightNotIncreased) ) { this.attemptChangeSize(newHeight, newWidth).catch(() => {}); - if (newWidth > width) { + if ( + newWidth > width && + // Nothing to adjust if the returned size was one that was requested. + this.parameterSize && + this.parameterSize.indexOf(`${newWidth}x${newHeight}`) == -1 + ) { this.adjustSlotPostExpansion_(newWidth); } } diff --git a/extensions/amp-ad-network-doubleclick-impl/0.1/test/test-amp-ad-network-doubleclick-impl.js b/extensions/amp-ad-network-doubleclick-impl/0.1/test/test-amp-ad-network-doubleclick-impl.js index 3a0fe64ec9bef..757e02c5962cc 100644 --- a/extensions/amp-ad-network-doubleclick-impl/0.1/test/test-amp-ad-network-doubleclick-impl.js +++ b/extensions/amp-ad-network-doubleclick-impl/0.1/test/test-amp-ad-network-doubleclick-impl.js @@ -355,8 +355,18 @@ describes.realWin('amp-ad-network-doubleclick-impl', realWinConfig, env => { newWidth: 400, margin: '-375px', }, + { + direction: 'ltr', + parentWidth: 300, + newWidth: 200, + margin: '', + isMultiSizeResponse: true, + }, ].forEach((testCase, testNum) => { it(`should adjust slot CSS after expanding width #${testNum}`, () => { + impl.parameterSize = testCase.isMultiSizeResponse + ? '320x50,200x50' + : '200x50'; sandbox.stub(impl, 'attemptChangeSize').callsFake((height, width) => { impl.element.style.width = `${width}px`; return { @@ -390,8 +400,10 @@ describes.realWin('amp-ad-network-doubleclick-impl', realWinConfig, env => { }, }); expect(impl.element.style[`margin${dirStr}`]).to.equal(testCase.margin); - // We use a fixed '30' value for z-index. - expect(impl.element.style.zIndex).to.equal('30'); + if (!testCase.isMultiSizeResponse) { + // We use a fixed '30' value for z-index. + expect(impl.element.style.zIndex).to.equal('30'); + } }); }); });