* Reloads the new version of the extension. * @param {string} extensionId * @param {string} version * @param {boolean} latest * @return {!Promise<!ExtensionDef>}
(extensionId, version, latest)
| 253 | * @return {!Promise<!ExtensionDef>} |
| 254 | */ |
| 255 | reloadExtension(extensionId, version, latest) { |
| 256 | // Ignore inserted script elements to prevent recursion. |
| 257 | const els = getExtensionScripts( |
| 258 | this.win, |
| 259 | extensionId, |
| 260 | version, |
| 261 | latest, |
| 262 | /* includeInserted */ false |
| 263 | ); |
| 264 | // The previously awaited extension loader must not have finished or |
| 265 | // failed. |
| 266 | const holder = this.extensions_[extensionKey(extensionId, version)]; |
| 267 | if (holder) { |
| 268 | devAssert(!holder.loaded && !holder.error); |
| 269 | holder.scriptPresent = false; |
| 270 | } |
| 271 | els.forEach((el) => |
| 272 | el.setAttribute('i-amphtml-loaded-new-version', extensionId) |
| 273 | ); |
| 274 | return this.preloadExtension(extensionId, version); |
| 275 | } |
| 276 | |
| 277 | /** |
| 278 | * @param {!Window} win |
no test coverage detected