diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2020-08-05 23:05:44 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-08-05 23:05:44 +0000 |
commit | 548f841b745404224698a3eafc6d4cb190d0ca8c (patch) | |
tree | 8a0d6fd78eb610653f12ded770595c80f1e89a61 /catapult/third_party/polymer/components/iron-location/iron-query-params.html | |
parent | 1d3aa42aef5ab74bf9b13fb5a7e18c73e137f58c (diff) | |
parent | a5e4f4d2969520f4563ec0d66cbe469c49ee38bc (diff) | |
download | chromium-trace-548f841b745404224698a3eafc6d4cb190d0ca8c.tar.gz |
Merge changes Ie9f01eed,I3acb8a0d am: fb769a1607 am: 316160b179 am: 3fd616f492 am: 5338649baa am: a5e4f4d296
Original change: https://android-review.googlesource.com/c/platform/external/chromium-trace/+/1392438
Change-Id: I7a428aa7cb0cdad8a449e25867e8c4bb514c2d2d
Diffstat (limited to 'catapult/third_party/polymer/components/iron-location/iron-query-params.html')
-rw-r--r-- | catapult/third_party/polymer/components/iron-location/iron-query-params.html | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/iron-location/iron-query-params.html b/catapult/third_party/polymer/components/iron-location/iron-query-params.html new file mode 100644 index 00000000..edcc3e1f --- /dev/null +++ b/catapult/third_party/polymer/components/iron-location/iron-query-params.html @@ -0,0 +1,89 @@ +<!-- +@license +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 +--> + +<link rel="import" href="../polymer/polymer.html"> + + +<script> + 'use strict'; + + Polymer({ + is: 'iron-query-params', + properties: { + paramsString: { + type: String, + notify: true, + observer: 'paramsStringChanged', + }, + paramsObject: { + type: Object, + notify: true, + value: function() { + return {}; + } + }, + _dontReact: { + type: Boolean, + value: false + } + }, + hostAttributes: { + hidden: true + }, + observers: [ + 'paramsObjectChanged(paramsObject.*)' + ], + paramsStringChanged: function() { + this._dontReact = true; + this.paramsObject = this._decodeParams(this.paramsString); + this._dontReact = false; + }, + paramsObjectChanged: function() { + if (this._dontReact) { + return; + } + this.paramsString = this._encodeParams(this.paramsObject) + .replace(/%3F/g, '?').replace(/%2F/g, '/').replace(/'/g, '%27'); + }, + _encodeParams: function(params) { + var encodedParams = []; + for (var key in params) { + var value = params[key]; + if (value === '') { + encodedParams.push(encodeURIComponent(key)); + } else if (value) { + encodedParams.push( + encodeURIComponent(key) + + '=' + + encodeURIComponent(value.toString()) + ); + } + } + return encodedParams.join('&'); + }, + _decodeParams: function(paramString) { + var params = {}; + + // Work around a bug in decodeURIComponent where + is not + // converted to spaces: + paramString = (paramString || '').replace(/\+/g, '%20'); + + var paramList = paramString.split('&'); + for (var i = 0; i < paramList.length; i++) { + var param = paramList[i].split('='); + if (param[0]) { + params[decodeURIComponent(param[0])] = + decodeURIComponent(param[1] || ''); + } + } + return params; + } + }); +</script> |