diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2020-08-05 22:45:32 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-08-05 22:45:32 +0000 |
commit | a5e4f4d2969520f4563ec0d66cbe469c49ee38bc (patch) | |
tree | 8a0d6fd78eb610653f12ded770595c80f1e89a61 /catapult/third_party/polymer/components/app-route/app-route-converter-behavior.html | |
parent | 5e1447373f2b6aaefa0e866c5907a291e7071a3d (diff) | |
parent | 5338649baa46daab43dd19d939fc1f016d400a94 (diff) | |
download | chromium-trace-a5e4f4d2969520f4563ec0d66cbe469c49ee38bc.tar.gz |
Merge changes Ie9f01eed,I3acb8a0d am: fb769a1607 am: 316160b179 am: 3fd616f492 am: 5338649baa
Original change: https://android-review.googlesource.com/c/platform/external/chromium-trace/+/1392438
Change-Id: I01f6e9f32cc3210fbc5f6f645a77b74316ecfb3b
Diffstat (limited to 'catapult/third_party/polymer/components/app-route/app-route-converter-behavior.html')
-rw-r--r-- | catapult/third_party/polymer/components/app-route/app-route-converter-behavior.html | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/app-route/app-route-converter-behavior.html b/catapult/third_party/polymer/components/app-route/app-route-converter-behavior.html new file mode 100644 index 00000000..23cc9dc7 --- /dev/null +++ b/catapult/third_party/polymer/components/app-route/app-route-converter-behavior.html @@ -0,0 +1,112 @@ +<!-- +@license +Copyright (c) 2016 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() { + 'use strict'; + + /** + * Provides bidirectional mapping between `path` and `queryParams` and a + * app-route compatible `route` object. + * + * For more information, see the docs for `app-route-converter`. + * + * @polymerBehavior + */ + Polymer.AppRouteConverterBehavior = { + properties: { + /** + * A model representing the deserialized path through the route tree, as + * well as the current queryParams. + * + * A route object is the kernel of the routing system. It is intended to + * be fed into consuming elements such as `app-route`. + * + * @type {?Object} + */ + route: { + type: Object, + notify: true + }, + + /** + * A set of key/value pairs that are universally accessible to branches of + * the route tree. + * + * @type {?Object} + */ + queryParams: { + type: Object, + notify: true + }, + + /** + * The serialized path through the route tree. This corresponds to the + * `window.location.pathname` value, and will update to reflect changes + * to that value. + */ + path: { + type: String, + notify: true, + } + }, + + observers: [ + '_locationChanged(path, queryParams)', + '_routeChanged(route.prefix, route.path)', + '_routeQueryParamsChanged(route.__queryParams)' + ], + + created: function() { + this.linkPaths('route.__queryParams', 'queryParams'); + this.linkPaths('queryParams', 'route.__queryParams'); + }, + + /** + * Handler called when the path or queryParams change. + */ + _locationChanged: function() { + if (this.route && + this.route.path === this.path && + this.queryParams === this.route.__queryParams) { + return; + } + this.route = { + prefix: '', + path: this.path, + __queryParams: this.queryParams + }; + }, + + /** + * Handler called when the route prefix and route path change. + */ + _routeChanged: function() { + if (!this.route) { + return; + } + + this.path = this.route.prefix + this.route.path; + }, + + /** + * Handler called when the route queryParams change. + * + * @param {Object} queryParams A set of key/value pairs that are + * universally accessible to branches of the route tree. + */ + _routeQueryParamsChanged: function(queryParams) { + if (!this.route) { + return; + } + this.queryParams = queryParams; + } + }; + })(); +</script> |