* Returns the promise that will be resolved when the extension has been * loaded. If necessary, adds the extension script to the page. * @param {!./ampdoc-impl.AmpDoc} ampdoc * @param {string} extensionId * @param {string=} version * @return {!Promise<!ExtensionDef>}
(ampdoc, extensionId, version = DEFAULT_VERSION)
| 229 | * @return {!Promise<!ExtensionDef>} |
| 230 | */ |
| 231 | installExtensionForDoc(ampdoc, extensionId, version = DEFAULT_VERSION) { |
| 232 | const rootNode = ampdoc.getRootNode(); |
| 233 | let extLoaders = rootNode[LOADER_PROP]; |
| 234 | if (!extLoaders) { |
| 235 | extLoaders = rootNode[LOADER_PROP] = map(); |
| 236 | } |
| 237 | if (extLoaders[extensionId]) { |
| 238 | return extLoaders[extensionId]; |
| 239 | } |
| 240 | ampdoc.declareExtension(extensionId, version); |
| 241 | stubElementIfNotKnown(ampdoc.win, extensionId); |
| 242 | return (extLoaders[extensionId] = this.preloadExtension( |
| 243 | extensionId, |
| 244 | version |
| 245 | ).then(() => this.installExtensionInDoc(ampdoc, extensionId, version))); |
| 246 | } |
| 247 | |
| 248 | /** |
| 249 | * Reloads the new version of the extension. |
no test coverage detected