aboutsummaryrefslogtreecommitdiff
path: root/catapult/third_party/polymer/components/iron-location/iron-query-params.html
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2020-08-05 23:05:44 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-08-05 23:05:44 +0000
commit548f841b745404224698a3eafc6d4cb190d0ca8c (patch)
tree8a0d6fd78eb610653f12ded770595c80f1e89a61 /catapult/third_party/polymer/components/iron-location/iron-query-params.html
parent1d3aa42aef5ab74bf9b13fb5a7e18c73e137f58c (diff)
parenta5e4f4d2969520f4563ec0d66cbe469c49ee38bc (diff)
downloadchromium-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.html89
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>