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

Unified Diff: third_party/polymer/v0_8/components/more-routing/emitter.html

Issue 1140393002: Update more-routing for md-settings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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: third_party/polymer/v0_8/components/more-routing/emitter.html
diff --git a/third_party/polymer/v0_8/components/more-routing/emitter.html b/third_party/polymer/v0_8/components/more-routing/emitter.html
new file mode 100644
index 0000000000000000000000000000000000000000..5c2aa0e381aa637380982f55095fa6780621fb26
--- /dev/null
+++ b/third_party/polymer/v0_8/components/more-routing/emitter.html
@@ -0,0 +1,77 @@
+<!--
+Copyright (c) 2015 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
+-->
+<script>
+(function(scope) {
+var MoreRouting = scope.MoreRouting = scope.MoreRouting || {};
+MoreRouting.Emitter = Object.create(null); // Minimal set of properties.
+
+/**
+ * A dumb prototype that provides very simple event subscription.
+ *
+ * You are responsible for initializing `__listeners` as an array on objects
+ * that make use of this.
+ */
+Object.defineProperties(MoreRouting.Emitter, {
+
+ /**
+ * Registers a callback that will be called each time any parameter managed by
+ * this object (or its parents) have changed.
+ *
+ * @param {!Function} callback
+ * @return {{close: function()}}
+ */
+ __subscribe: {
+ value: function __subscribe(callback) {
+ this.__listeners.push(callback);
+
+ return {
+ close: this.__unsubscribe.bind(this, callback),
+ };
+ },
+ },
+
+ /**
+ * Unsubscribes a previously registered callback.
+ *
+ * @param {!Function} callback
+ */
+ __unsubscribe: {
+ value: function __unsubscribe(callback) {
+ var index = this.__listeners.indexOf(callback);
+ if (index < 0) {
+ console.warn(this, 'attempted unsubscribe of unregistered listener:', callback);
+ return;
+ }
+ this.__listeners.splice(index, 1);
+ },
+ },
+
+ /**
+ * Notifies subscribed callbacks.
+ */
+ __notify: {
+ value: function __notify(key, value) {
+ if (this.__silent) return;
+ var args = Array.prototype.slice.call(arguments);
+ // Notify listeners on parents first.
+ var parent = Object.getPrototypeOf(this);
+ if (parent && parent.__notify && parent.__listeners) {
+ parent.__notify.apply(parent, args);
+ }
+
+ this.__listeners.forEach(function(listener) {
+ listener.apply(null, args);
+ }.bind(this));
+ },
+ },
+
+});
+
+})(window);
+</script>

Powered by Google App Engine
This is Rietveld 408576698