diff options
Diffstat (limited to 'polygerrit-ui/app/elements/plugins/gr-external-style/gr-external-style.js')
-rw-r--r-- | polygerrit-ui/app/elements/plugins/gr-external-style/gr-external-style.js | 56 |
1 files changed, 39 insertions, 17 deletions
diff --git a/polygerrit-ui/app/elements/plugins/gr-external-style/gr-external-style.js b/polygerrit-ui/app/elements/plugins/gr-external-style/gr-external-style.js index a4f1f741c7..0e8bb459e0 100644 --- a/polygerrit-ui/app/elements/plugins/gr-external-style/gr-external-style.js +++ b/polygerrit-ui/app/elements/plugins/gr-external-style/gr-external-style.js @@ -1,16 +1,19 @@ -// Copyright (C) 2017 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/** + * @license + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ (function() { 'use strict'; @@ -19,24 +22,35 @@ properties: { name: String, + _urlsImported: { + type: Array, + value() { return []; }, + }, + _stylesApplied: { + type: Array, + value() { return []; }, + }, }, _import(url) { + if (this._urlsImported.includes(url)) { return Promise.resolve(); } + this._urlsImported.push(url); return new Promise((resolve, reject) => { this.importHref(url, resolve, reject); }); }, _applyStyle(name) { + if (this._stylesApplied.includes(name)) { return; } + this._stylesApplied.push(name); const s = document.createElement('style', 'custom-style'); s.setAttribute('include', name); Polymer.dom(this.root).appendChild(s); }, - ready() { - Gerrit.awaitPluginsLoaded().then(() => Promise.all( - Gerrit._endpoints.getPlugins(this.name).map( - pluginUrl => this._import(pluginUrl))) + _importAndApply() { + Promise.all(Gerrit._endpoints.getPlugins(this.name).map( + pluginUrl => this._import(pluginUrl)) ).then(() => { const moduleNames = Gerrit._endpoints.getModules(this.name); for (const name of moduleNames) { @@ -44,5 +58,13 @@ } }); }, + + attached() { + this._importAndApply(); + }, + + ready() { + Gerrit.awaitPluginsLoaded().then(() => this._importAndApply()); + }, }); })(); |