From 6025d6f81e2808c7a46daffe129a3a75066c3f79 Mon Sep 17 00:00:00 2001 From: Dima Voytenko Date: Tue, 9 Feb 2021 14:30:45 -0800 Subject: [PATCH] Make createLoaderLogoCallback static (#32534) --- .../0.1/amp-facebook-comments.js | 10 ++-- .../0.1/amp-facebook-page.js | 10 ++-- extensions/amp-facebook/0.1/amp-facebook.js | 10 ++-- extensions/amp-pinterest/0.1/amp-pinterest.js | 53 ++++++++++--------- extensions/amp-twitter/0.1/amp-twitter.js | 42 +++++++-------- src/base-element.js | 27 +++++----- src/custom-element.js | 4 +- 7 files changed, 81 insertions(+), 75 deletions(-) diff --git a/extensions/amp-facebook-comments/0.1/amp-facebook-comments.js b/extensions/amp-facebook-comments/0.1/amp-facebook-comments.js index b4fb2eba5e5b..fda8db63e0c0 100644 --- a/extensions/amp-facebook-comments/0.1/amp-facebook-comments.js +++ b/extensions/amp-facebook-comments/0.1/amp-facebook-comments.js @@ -26,6 +26,11 @@ import {removeElement} from '../../../src/dom'; import {tryParseJson} from '../../../src/json'; class AmpFacebookComments extends AMP.BaseElement { + /** @override @nocollapse */ + static createLoaderLogoCallback(element) { + return createLoaderLogo(element); + } + /** @param {!AmpElement} element */ constructor(element) { super(element); @@ -120,11 +125,6 @@ class AmpFacebookComments extends AMP.BaseElement { } } - /** @override */ - createLoaderLogoCallback() { - return createLoaderLogo(this.element); - } - /** @override */ unlayoutCallback() { if (this.iframe_) { diff --git a/extensions/amp-facebook-page/0.1/amp-facebook-page.js b/extensions/amp-facebook-page/0.1/amp-facebook-page.js index 0b47d2b98987..11125fba5300 100644 --- a/extensions/amp-facebook-page/0.1/amp-facebook-page.js +++ b/extensions/amp-facebook-page/0.1/amp-facebook-page.js @@ -26,6 +26,11 @@ import {removeElement} from '../../../src/dom'; import {tryParseJson} from '../../../src/json'; class AmpFacebookPage extends AMP.BaseElement { + /** @override @nocollapse */ + static createLoaderLogoCallback(element) { + return createLoaderLogo(element); + } + /** @param {!AmpElement} element */ constructor(element) { super(element); @@ -122,11 +127,6 @@ class AmpFacebookPage extends AMP.BaseElement { } } - /** @override */ - createLoaderLogoCallback() { - return createLoaderLogo(this.element); - } - /** @override */ unlayoutCallback() { if (this.iframe_) { diff --git a/extensions/amp-facebook/0.1/amp-facebook.js b/extensions/amp-facebook/0.1/amp-facebook.js index 5b18b3c58d35..d90c879d8d9f 100644 --- a/extensions/amp-facebook/0.1/amp-facebook.js +++ b/extensions/amp-facebook/0.1/amp-facebook.js @@ -27,6 +27,11 @@ import {removeElement} from '../../../src/dom'; import {tryParseJson} from '../../../src/json'; class AmpFacebook extends AMP.BaseElement { + /** @override @nocollapse */ + static createLoaderLogoCallback(element) { + return createLoaderLogo(element); + } + /** @param {!AmpElement} element */ constructor(element) { super(element); @@ -133,11 +138,6 @@ class AmpFacebook extends AMP.BaseElement { } } - /** @override */ - createLoaderLogoCallback() { - return createLoaderLogo(this.element); - } - /** @override */ unlayoutOnPause() { return true; diff --git a/extensions/amp-pinterest/0.1/amp-pinterest.js b/extensions/amp-pinterest/0.1/amp-pinterest.js index 4b0dbfea37e9..056dd60e1cac 100644 --- a/extensions/amp-pinterest/0.1/amp-pinterest.js +++ b/extensions/amp-pinterest/0.1/amp-pinterest.js @@ -50,6 +50,33 @@ import {user, userAssert} from '../../../src/log'; * - buttonFollow: User follow button */ class AmpPinterest extends AMP.BaseElement { + /** @override @nocollapse */ + static createLoaderLogoCallback(element) { + const type = element.getAttribute('data-do'); + if (type != 'embedPin') { + return {}; + } + + const html = htmlFor(element); + return { + color: '#E60019', + content: html` + + + + `, + }; + } + /** @param {!AmpElement} element */ constructor(element) { super(element); @@ -118,32 +145,6 @@ class AmpPinterest extends AMP.BaseElement { } }); } - - /** @override */ - createLoaderLogoCallback() { - if (this.type_ != 'embedPin') { - return {}; - } - - const html = htmlFor(this.element); - return { - color: '#E60019', - content: html` - - - - `, - }; - } } AMP.extension('amp-pinterest', '0.1', (AMP) => { diff --git a/extensions/amp-twitter/0.1/amp-twitter.js b/extensions/amp-twitter/0.1/amp-twitter.js index d8a6a8ccaf5e..a6ba5ff808dc 100644 --- a/extensions/amp-twitter/0.1/amp-twitter.js +++ b/extensions/amp-twitter/0.1/amp-twitter.js @@ -23,6 +23,27 @@ import {listenFor} from '../../../src/iframe-helper'; import {removeElement} from '../../../src/dom'; class AmpTwitter extends AMP.BaseElement { + /** @override @nocollapse */ + static createLoaderLogoCallback(element) { + const html = htmlFor(element); + return { + color: '#1DA1F2', + content: html` + + + + `, + }; + } + /** @param {!AmpElement} element */ constructor(element) { super(element); @@ -155,27 +176,6 @@ class AmpTwitter extends AMP.BaseElement { }); } - /** @override */ - createLoaderLogoCallback() { - const html = htmlFor(this.element); - return { - color: '#1DA1F2', - content: html` - - - - `, - }; - } - /** @override */ unlayoutOnPause() { return true; diff --git a/src/base-element.js b/src/base-element.js index 5d218170040d..3f7975e37bab 100644 --- a/src/base-element.js +++ b/src/base-element.js @@ -120,6 +120,21 @@ export class BaseElement { return false; } + /** + * Subclasses can override this method to provide a svg logo that will be + * displayed as the loader. + * + * @param {!AmpElement} unusedElement + * @return {{ + * content: (!Element|undefined), + * color: (string|undefined), + * }} + * @nocollapse + */ + static createLoaderLogoCallback(unusedElement) { + return {}; + } + /** @param {!AmpElement} element */ constructor(element) { /** @public @const {!Element} */ @@ -374,18 +389,6 @@ export class BaseElement { return null; } - /** - * Subclasses can override this method to provide a svg logo that will be - * displayed as the loader. - * @return {{ - * content: (!Element|undefined), - * color: (string|undefined), - * }} - */ - createLoaderLogoCallback() { - return {}; - } - /** * Subclasses can override this method to opt-out of rendering the element * when it is not currently visible. diff --git a/src/custom-element.js b/src/custom-element.js index 33a66f745870..01f9b26b3f2c 100644 --- a/src/custom-element.js +++ b/src/custom-element.js @@ -1025,7 +1025,9 @@ function createBaseCustomElementClass(win) { * @final */ createLoaderLogo() { - return this.impl_ ? this.impl_.createLoaderLogoCallback() : {}; + return this.implClass_ + ? this.implClass_.createLoaderLogoCallback(this) + : {}; } /**