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

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

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 4 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 unified diff | Download patch
« no previous file with comments | « packages/usage/lib/src/usage_impl.dart ('k') | packages/usage/lib/src/usage_impl_io.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_html;
6
7 import 'dart:async'; 5 import 'dart:async';
8 import 'dart:convert' show JSON; 6 import 'dart:convert' show JSON;
9 import 'dart:html'; 7 import 'dart:html';
10 8
11 import 'usage_impl.dart'; 9 import 'usage_impl.dart';
12 10
11 /// An interface to a Google Analytics session, suitable for use in web apps.
12 ///
13 /// [analyticsUrl] is an optional replacement for the default Google Analytics
14 /// URL (`https://www.google-analytics.com/collect`).
15 class AnalyticsHtml extends AnalyticsImpl {
16 AnalyticsHtml(
17 String trackingId, String applicationName, String applicationVersion,
18 {String analyticsUrl})
19 : super(trackingId, new HtmlPersistentProperties(applicationName),
20 new HtmlPostHandler(),
21 applicationName: applicationName,
22 applicationVersion: applicationVersion,
23 analyticsUrl: analyticsUrl) {
24 int screenWidth = window.screen.width;
25 int screenHeight = window.screen.height;
26
27 setSessionValue('sr', '${screenWidth}x$screenHeight');
28 setSessionValue('sd', '${window.screen.pixelDepth}-bits');
29 setSessionValue('ul', window.navigator.language);
30 }
31 }
32
33 typedef Future<HttpRequest> HttpRequestor(String url,
34 {String method, sendData});
35
13 class HtmlPostHandler extends PostHandler { 36 class HtmlPostHandler extends PostHandler {
14 final Function mockRequestor; 37 final HttpRequestor mockRequestor;
15 38
16 HtmlPostHandler({Function this.mockRequestor}); 39 HtmlPostHandler({this.mockRequestor});
17 40
41 @override
18 Future sendPost(String url, Map<String, dynamic> parameters) { 42 Future sendPost(String url, Map<String, dynamic> parameters) {
19 int viewportWidth = document.documentElement.clientWidth; 43 int viewportWidth = document.documentElement.clientWidth;
20 int viewportHeight = document.documentElement.clientHeight; 44 int viewportHeight = document.documentElement.clientHeight;
21 45
22 parameters['vp'] = '${viewportWidth}x$viewportHeight'; 46 parameters['vp'] = '${viewportWidth}x$viewportHeight';
23 47
24 String data = postEncode(parameters); 48 String data = postEncode(parameters);
25 var request = mockRequestor == null ? HttpRequest.request : mockRequestor; 49 HttpRequestor requestor =
26 return request(url, method: 'POST', sendData: data).catchError((e) { 50 mockRequestor == null ? HttpRequest.request : mockRequestor;
51 return requestor(url, method: 'POST', sendData: data).catchError((e) {
27 // Catch errors that can happen during a request, but that we can't do 52 // Catch errors that can happen during a request, but that we can't do
28 // anything about, e.g. a missing internet conenction. 53 // anything about, e.g. a missing internet connection.
29 }); 54 });
30 } 55 }
56
57 @override
58 void close() {}
31 } 59 }
32 60
33 class HtmlPersistentProperties extends PersistentProperties { 61 class HtmlPersistentProperties extends PersistentProperties {
34 Map _map; 62 Map _map;
35 63
36 HtmlPersistentProperties(String name) : super(name) { 64 HtmlPersistentProperties(String name) : super(name) {
37 String str = window.localStorage[name]; 65 String str = window.localStorage[name];
38 if (str == null || str.isEmpty) str = '{}'; 66 if (str == null || str.isEmpty) str = '{}';
39 _map = JSON.decode(str); 67 _map = JSON.decode(str);
40 } 68 }
41 69
42 dynamic operator[](String key) => _map[key]; 70 @override
71 dynamic operator [](String key) => _map[key];
43 72
44 void operator[]=(String key, dynamic value) { 73 @override
74 void operator []=(String key, dynamic value) {
45 if (value == null) { 75 if (value == null) {
46 _map.remove(key); 76 _map.remove(key);
47 } else { 77 } else {
48 _map[key] = value; 78 _map[key] = value;
49 } 79 }
50 80
51 window.localStorage[name] = JSON.encode(_map); 81 window.localStorage[name] = JSON.encode(_map);
52 } 82 }
83
84 @override
85 void syncSettings() {}
53 } 86 }
OLDNEW
« no previous file with comments | « packages/usage/lib/src/usage_impl.dart ('k') | packages/usage/lib/src/usage_impl_io.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698