Skip to content

Commit

Permalink
Factor telemetry to separate module
Browse files Browse the repository at this point in the history
Also use exclusively in `properties-mixin`
  • Loading branch information
Steven Orvell committed Nov 1, 2018
1 parent 8d9219f commit ca03e08
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 48 deletions.
1 change: 0 additions & 1 deletion lib/mixins/element-mixin.html
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,6 @@
* @suppress {invalidCasts}
*/
_initializeProperties() {
Polymer.telemetry.instanceCount++;
this.constructor.finalize();
// note: finalize template when we have access to `localName` to
// avoid dependence on `is` for polyfilling styling.
Expand Down
2 changes: 2 additions & 0 deletions lib/mixins/properties-mixin.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
-->

<link rel="import" href="../utils/boot.html">
<link rel="import" href="../utils/telemetry.html">
<link rel="import" href="../utils/mixin.html">
<link rel="import" href="../mixins/properties-changed.html">

Expand Down Expand Up @@ -192,6 +193,7 @@
* @return {void}
*/
_initializeProperties() {
Polymer.telemetry.instanceCount++;
this.constructor.finalize();
super._initializeProperties();
}
Expand Down
47 changes: 0 additions & 47 deletions lib/utils/boot.html
Original file line number Diff line number Diff line change
Expand Up @@ -61,52 +61,5 @@
};
/* eslint-enable */

/**
* Provides basic tracking of element definitions (registrations) and
* instance counts.
*
* @namespace
* @summary Provides basic tracking of element definitions (registrations) and
* instance counts.
*/
Polymer.telemetry = {
/**
* Total number of Polymer element instances created.
* @type {number}
*/
instanceCount: 0,
/**
* Array of Polymer element classes that have been finalized.
* @type {Array<Polymer.Element>}
*/
registrations: [],
/**
* @param {!PolymerElementConstructor} prototype Element prototype to log
* @this {this}
* @private
*/
_regLog: function(prototype) {
console.log('[' + prototype.is + ']: registered');
},
/**
* Registers a class prototype for telemetry purposes.
* @param {HTMLElement} prototype Element prototype to register
* @this {this}
* @protected
*/
register: function(prototype) {
this.registrations.push(prototype);
Polymer.log && this._regLog(prototype);
},
/**
* Logs all elements registered with an `is` to the console.
* @public
* @this {this}
*/
dumpRegistrations: function() {
this.registrations.forEach(this._regLog);
}
};

})();
</script>
63 changes: 63 additions & 0 deletions lib/utils/telemetry.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<!--
@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
-->
<link rel="import" href="boot.html">
<script>
(function() {
'use strict';

/**
* Provides basic tracking of element definitions (registrations) and
* instance counts.
*
* @namespace
* @summary Provides basic tracking of element definitions (registrations) and
* instance counts.
*/
Polymer.telemetry = {
/**
* Total number of Polymer element instances created.
* @type {number}
*/
instanceCount: 0,
/**
* Array of Polymer element classes that have been finalized.
* @type {Array<Polymer.Element>}
*/
registrations: [],
/**
* @param {!PolymerElementConstructor} prototype Element prototype to log
* @this {this}
* @private
*/
_regLog: function(prototype) {
console.log('[' + prototype.is + ']: registered');
},
/**
* Registers a class prototype for telemetry purposes.
* @param {HTMLElement} prototype Element prototype to register
* @this {this}
* @protected
*/
register: function(prototype) {
this.registrations.push(prototype);
Polymer.log && this._regLog(prototype);
},
/**
* Logs all elements registered with an `is` to the console.
* @public
* @this {this}
*/
dumpRegistrations: function() {
this.registrations.forEach(this._regLog);
}
};

})();
</script>

0 comments on commit ca03e08

Please sign in to comment.