Add an exponential backoff to rechecking the app list doodle.
[chromium-blink-merge.git] / third_party / polymer / components-chromium / core-meta / core-meta-extracted.js
blobc4e60a332ca65c8bb076e165d81818b800c350d0
3   (function() {
4     
5     var SKIP_ID = 'meta';
6     var metaData = {}, metaArray = {};
8     Polymer('core-meta', {
9       
10       /**
11        * The type of meta-data.  All meta-data with the same type with be
12        * stored together.
13        * 
14        * @attribute type
15        * @type string
16        * @default 'default'
17        */
18       type: 'default',
19       
20       alwaysPrepare: true,
21       
22       ready: function() {
23         this.register(this.id);
24       },
25       
26       get metaArray() {
27         var t = this.type;
28         if (!metaArray[t]) {
29           metaArray[t] = [];
30         }
31         return metaArray[t];
32       },
33       
34       get metaData() {
35         var t = this.type;
36         if (!metaData[t]) {
37           metaData[t] = {};
38         }
39         return metaData[t];
40       },
41       
42       register: function(id, old) {
43         if (id && id !== SKIP_ID) {
44           this.unregister(this, old);
45           this.metaData[id] = this;
46           this.metaArray.push(this);
47         }
48       },
49       
50       unregister: function(meta, id) {
51         delete this.metaData[id || meta.id];
52         var i = this.metaArray.indexOf(meta);
53         if (i >= 0) {
54           this.metaArray.splice(i, 1);
55         }
56       },
57       
58       /**
59        * Returns a list of all meta-data elements with the same type.
60        * 
61        * @property list
62        * @type array
63        * @default []
64        */
65       get list() {
66         return this.metaArray;
67       },
68       
69       /**
70        * Retrieves meta-data by ID.
71        *
72        * @method byId
73        * @param {String} id The ID of the meta-data to be returned.
74        * @returns Returns meta-data.
75        */
76       byId: function(id) {
77         return this.metaData[id];
78       }
79       
80     });
81     
82   })();
83