Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2843)

Unified Diff: appengine/config_service/ui/bower_components/shadycss/src/style-cache.js

Issue 2923973003: Added base template for config ui. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/config_service/ui/bower_components/shadycss/src/style-cache.js
diff --git a/appengine/config_service/ui/bower_components/shadycss/src/style-cache.js b/appengine/config_service/ui/bower_components/shadycss/src/style-cache.js
new file mode 100644
index 0000000000000000000000000000000000000000..7b51d0f4fce8c49127fc31a1ef36559bd16321ac
--- /dev/null
+++ b/appengine/config_service/ui/bower_components/shadycss/src/style-cache.js
@@ -0,0 +1,51 @@
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+
+export default class StyleCache {
+ constructor(typeMax = 100) {
+ // map element name -> [{properties, styleElement, scopeSelector}]
+ this.cache = {};
+ this.typeMax = typeMax;
+ }
+
+ _validate(cacheEntry, properties, ownPropertyNames) {
+ for (let idx = 0; idx < ownPropertyNames.length; idx++) {
+ let pn = ownPropertyNames[idx];
+ if (cacheEntry.properties[pn] !== properties[pn]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ store(tagname, properties, styleElement, scopeSelector) {
+ let list = this.cache[tagname] || [];
+ list.push({properties, styleElement, scopeSelector});
+ if (list.length > this.typeMax) {
+ list.shift();
+ }
+ this.cache[tagname] = list;
+ }
+
+ fetch(tagname, properties, ownPropertyNames) {
+ let list = this.cache[tagname];
+ if (!list) {
+ return;
+ }
+ // reverse list for most-recent lookups
+ for (let idx = list.length - 1; idx >= 0; idx--) {
+ let entry = list[idx];
+ if (this._validate(entry, properties, ownPropertyNames)) {
+ return entry;
+ }
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698