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

Side by Side Diff: packages/usage/lib/src/usage_impl.dart

Issue 1521693002: Roll Observatory deps (charted -> ^0.3.0) (Closed) Base URL: https://chromium.googlesource.com/external/github.com/dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years 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 unified diff | Download patch
« no previous file with comments | « packages/usage/changelog.md ('k') | packages/usage/lib/src/usage_impl_html.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library usage_impl; 5 library usage_impl;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:math' as math; 8 import 'dart:math' as math;
9 9
10 import 'uuid.dart'; 10 import 'uuid.dart';
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 84
85 bool get optIn => properties['optIn'] == true; 85 bool get optIn => properties['optIn'] == true;
86 86
87 set optIn(bool value) { 87 set optIn(bool value) {
88 properties['optIn'] = value; 88 properties['optIn'] = value;
89 } 89 }
90 90
91 bool get hasSetOptIn => properties['optIn'] != null; 91 bool get hasSetOptIn => properties['optIn'] != null;
92 92
93 Future sendScreenView(String viewName) { 93 Future sendScreenView(String viewName) {
94 Map args = {'cd': viewName}; 94 Map<String, dynamic> args = {'cd': viewName};
95 return _sendPayload('screenview', args); 95 return _sendPayload('screenview', args);
96 } 96 }
97 97
98 Future sendEvent(String category, String action, {String label, int value}) { 98 Future sendEvent(String category, String action, {String label, int value}) {
99 if (!optIn) return new Future.value(); 99 if (!optIn) return new Future.value();
100 100
101 Map args = {'ec': category, 'ea': action}; 101 Map<String, dynamic> args = {'ec': category, 'ea': action};
102 if (label != null) args['el'] = label; 102 if (label != null) args['el'] = label;
103 if (value != null) args['ev'] = value; 103 if (value != null) args['ev'] = value;
104 return _sendPayload('event', args); 104 return _sendPayload('event', args);
105 } 105 }
106 106
107 Future sendSocial(String network, String action, String target) { 107 Future sendSocial(String network, String action, String target) {
108 if (!optIn) return new Future.value(); 108 if (!optIn) return new Future.value();
109 109
110 Map args = {'sn': network, 'sa': action, 'st': target}; 110 Map<String, dynamic> args = {'sn': network, 'sa': action, 'st': target};
111 return _sendPayload('social', args); 111 return _sendPayload('social', args);
112 } 112 }
113 113
114 Future sendTiming(String variableName, int time, {String category, 114 Future sendTiming(String variableName, int time, {String category,
115 String label}) { 115 String label}) {
116 if (!optIn) return new Future.value(); 116 if (!optIn) return new Future.value();
117 117
118 Map args = {'utv': variableName, 'utt': time}; 118 Map<String, dynamic> args = {'utv': variableName, 'utt': time};
119 if (label != null) args['utl'] = label; 119 if (label != null) args['utl'] = label;
120 if (category != null) args['utc'] = category; 120 if (category != null) args['utc'] = category;
121 return _sendPayload('timing', args); 121 return _sendPayload('timing', args);
122 } 122 }
123 123
124 AnalyticsTimer startTimer(String variableName, {String category, String label} ) { 124 AnalyticsTimer startTimer(String variableName, {String category, String label} ) {
125 return new AnalyticsTimer(this, 125 return new AnalyticsTimer(this,
126 variableName, category: category, label: label); 126 variableName, category: category, label: label);
127 } 127 }
128 128
129 Future sendException(String description, {bool fatal}) { 129 Future sendException(String description, {bool fatal}) {
130 if (!optIn) return new Future.value(); 130 if (!optIn) return new Future.value();
131 131
132 // In order to ensure that the client of this API is not sending any PII 132 // In order to ensure that the client of this API is not sending any PII
133 // data, we strip out any stack trace that may reference a path on the 133 // data, we strip out any stack trace that may reference a path on the
134 // user's drive (file:/...). 134 // user's drive (file:/...).
135 if (description.contains('file:/')) { 135 if (description.contains('file:/')) {
136 description = description.substring(0, description.indexOf('file:/')); 136 description = description.substring(0, description.indexOf('file:/'));
137 } 137 }
138 138
139 if (description != null && description.length > _MAX_EXCEPTION_LENGTH) { 139 if (description != null && description.length > _MAX_EXCEPTION_LENGTH) {
140 description = description.substring(0, _MAX_EXCEPTION_LENGTH); 140 description = description.substring(0, _MAX_EXCEPTION_LENGTH);
141 } 141 }
142 142
143 Map args = {'exd': description}; 143 Map<String, dynamic> args = {'exd': description};
144 if (fatal != null && fatal) args['exf'] = '1'; 144 if (fatal != null && fatal) args['exf'] = '1';
145 return _sendPayload('exception', args); 145 return _sendPayload('exception', args);
146 } 146 }
147 147
148 void setSessionValue(String param, dynamic value) { 148 void setSessionValue(String param, dynamic value) {
149 if (value == null) { 149 if (value == null) {
150 _variableMap.remove(param); 150 _variableMap.remove(param);
151 } else { 151 } else {
152 _variableMap[param] = value; 152 _variableMap[param] = value;
153 } 153 }
(...skipping 15 matching lines...) Expand all
169 String get _clientId => properties['clientId']; 169 String get _clientId => properties['clientId'];
170 170
171 void _initClientId() { 171 void _initClientId() {
172 if (_clientId == null) { 172 if (_clientId == null) {
173 properties['clientId'] = new Uuid().generateV4(); 173 properties['clientId'] = new Uuid().generateV4();
174 } 174 }
175 } 175 }
176 176
177 // Valid values for [hitType] are: 'pageview', 'screenview', 'event', 177 // Valid values for [hitType] are: 'pageview', 'screenview', 'event',
178 // 'transaction', 'item', 'social', 'exception', and 'timing'. 178 // 'transaction', 'item', 'social', 'exception', and 'timing'.
179 Future _sendPayload(String hitType, Map args) { 179 Future _sendPayload(String hitType, Map<String, dynamic> args) {
180 if (_bucket.removeDrop()) { 180 if (_bucket.removeDrop()) {
181 _initClientId(); 181 _initClientId();
182 182
183 _variableMap.forEach((key, value) { 183 _variableMap.forEach((key, value) {
184 args[key] = value; 184 args[key] = value;
185 }); 185 });
186 186
187 args['v'] = '1'; // protocol version 187 args['v'] = '1'; // protocol version
188 args['tid'] = trackingId; 188 args['tid'] = trackingId;
189 args['cid'] = _clientId; 189 args['cid'] = _clientId;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 /** 221 /**
222 * A utility class to perform HTTP POSTs. An [AnalyticsImpl] instance expects to 222 * A utility class to perform HTTP POSTs. An [AnalyticsImpl] instance expects to
223 * have one of these injected into it. There are default implementations for 223 * have one of these injected into it. There are default implementations for
224 * `dart:io` and `dart:html` clients. 224 * `dart:io` and `dart:html` clients.
225 * 225 *
226 * The POST information should be sent on a best-effort basis. The `Future` from 226 * The POST information should be sent on a best-effort basis. The `Future` from
227 * [sendPost] should complete when the operation is finished, but failures to 227 * [sendPost] should complete when the operation is finished, but failures to
228 * send the information should be silent. 228 * send the information should be silent.
229 */ 229 */
230 abstract class PostHandler { 230 abstract class PostHandler {
231 Future sendPost(String url, Map<String, String> parameters); 231 Future sendPost(String url, Map<String, dynamic> parameters);
232 } 232 }
OLDNEW
« no previous file with comments | « packages/usage/changelog.md ('k') | packages/usage/lib/src/usage_impl_html.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698