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

Side by Side Diff: ui/webui/resources/cr_elements/network/cr_network_icon.js

Issue 2647573002: WebUI: Animate connecting network svg icons (Closed)
Patch Set: . Created 3 years, 11 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 | « ui/webui/resources/cr_elements/network/cr_network_icon.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Polymer element for rendering network icons based on ONC 6 * @fileoverview Polymer element for rendering network icons based on ONC
7 * state properties. 7 * state properties.
8 */ 8 */
9 9
10 Polymer({ 10 Polymer({
(...skipping 10 matching lines...) Expand all
21 21
22 /** 22 /**
23 * If true, the icon is part of a list of networks and may be displayed 23 * If true, the icon is part of a list of networks and may be displayed
24 * differently, e.g. the disconnected image will never be shown for 24 * differently, e.g. the disconnected image will never be shown for
25 * list items. 25 * list items.
26 */ 26 */
27 isListItem: { 27 isListItem: {
28 type: Boolean, 28 type: Boolean,
29 value: false, 29 value: false,
30 }, 30 },
31
32 /**
33 * Animation frame, updated while the icon is in a connecting state.
34 * Exposed to the DOM to trigger getIcon_ calls when it changes.
35 * @private
36 */
37 animationFrame_: {
38 type: Number,
39 value: 0,
40 },
41 },
42
43 /** @private {?number} */
44 animationId_: null,
45
46 /** @override */
47 detached: function() {
48 this.resetAnimation_();
31 }, 49 },
32 50
33 /** 51 /**
34 * @return {string} The name of the svg icon image to show. 52 * @return {string} The name of the svg icon image to show.
35 * @private 53 * @private
36 */ 54 */
37 getIcon_: function() { 55 getIcon_: function() {
38 if (!this.networkState) 56 var networkState = this.networkState;
57 if (!networkState)
39 return ''; 58 return '';
40 let showDisconnected = 59 var type = networkState.Type;
41 !this.isListItem && (!this.networkState.ConnectionState || 60 if (type == CrOnc.Type.ETHERNET)
42 this.networkState.ConnectionState == 61 return 'network:settings-ethernet';
43 CrOnc.ConnectionState.NOT_CONNECTED); 62 if (type == CrOnc.Type.VPN)
63 return 'network:vpn-key';
44 64
45 switch (this.networkState.Type) { 65 var connectionState = networkState.ConnectionState;
46 case CrOnc.Type.ETHERNET: { 66 var showDisconnected = !this.isListItem &&
47 return 'network:settings-ethernet'; 67 (!connectionState ||
48 } 68 connectionState == CrOnc.ConnectionState.NOT_CONNECTED);
49 case CrOnc.Type.VPN: { 69 var index = 0;
50 return 'network:vpn-key'; 70 if (connectionState == CrOnc.ConnectionState.CONNECTING) {
51 } 71 index = this.getAnimationIndex_();
52 case CrOnc.Type.CELLULAR: { 72 } else {
53 let strength = 73 this.resetAnimation_();
54 showDisconnected ? 0 : CrOnc.getSignalStrength(this.networkState); 74 if (!showDisconnected)
55 let index = this.strengthToIndex_(strength); 75 index = this.strengthToIndex_(CrOnc.getSignalStrength(networkState));
56 return 'network:signal-cellular-' + index.toString(10) + '-bar';
57 }
58 case CrOnc.Type.WI_FI:
59 case CrOnc.Type.WI_MAX: {
60 if (showDisconnected)
61 return 'network:signal-wifi-off';
62 let strength = CrOnc.getSignalStrength(this.networkState);
63 let index = this.strengthToIndex_(strength);
64 return 'network:signal-wifi-' + index.toString(10) + '-bar';
65 }
66 default:
67 assertNotReached();
68 } 76 }
77
78 if (type == CrOnc.Type.CELLULAR) {
79 return 'network:signal-cellular-' + index.toString(10) + '-bar';
80 } else if (type == CrOnc.Type.WI_FI || type == CrOnc.Type.WI_MAX) {
81 if (showDisconnected)
82 return 'network:signal-wifi-off';
83 return 'network:signal-wifi-' + index.toString(10) + '-bar';
84 }
85 assertNotReached();
69 return ''; 86 return '';
70 }, 87 },
71 88
72 /** 89 /**
73 * @param {number} strength The signal strength from [0 - 100]. 90 * @param {number} strength The signal strength from [0 - 100].
74 * @return {number} An index from 0-4 corresponding to |strength|. 91 * @return {number} An index from 0-4 corresponding to |strength|.
75 * @private 92 * @private
76 */ 93 */
77 strengthToIndex_: function(strength) { 94 strengthToIndex_: function(strength) {
78 if (strength == 0) 95 if (strength == 0)
79 return 0; 96 return 0;
80 return Math.min(Math.trunc((strength - 1) / 25) + 1, 4); 97 return Math.min(Math.trunc((strength - 1) / 25) + 1, 4);
81 }, 98 },
82 99
83 /** 100 /**
101 * Returns an index from 0-4 for animating a connecting wireless icon.
102 * The index will cycle from 0 -> 4 then from 4 -> 0.
103 * @return {number}
104 * @private
105 */
106 getAnimationIndex_() {
107 if (this.animationId_ == null) {
108 /** const */ var INTERVAL_MS = 750 / 4; // Matches network_icon.cc.
109 this.animationFrame_ = 0;
110 this.animationId_ = window.setInterval(function() {
111 this.animationFrame_ =
112 (this.animationFrame_ >= 9) ? 0 : this.animationFrame_ + 1;
113 }.bind(this), INTERVAL_MS);
114 }
115 if (this.animationFrame_ > 4)
116 return 9 - this.animationFrame_;
117 return this.animationFrame_;
118 },
119
120 /** @private */
121 resetAnimation_() {
122 this.animationFrame_ = 0;
123 if (this.animationId_ != null) {
124 window.clearInterval(this.animationId_);
125 this.animationId_ = null;
126 }
127 },
128
129 /**
84 * @return {boolean} 130 * @return {boolean}
85 * @private 131 * @private
86 */ 132 */
87 showTechnology_: function() { 133 showTechnology_: function() {
88 return this.getTechnology_() != ''; 134 return this.getTechnology_() != '';
89 }, 135 },
90 136
91 /** 137 /**
92 * @return {string} 138 * @return {string}
93 * @private 139 * @private
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 let networkState = this.networkState; 192 let networkState = this.networkState;
147 if (!this.networkState) 193 if (!this.networkState)
148 return false; 194 return false;
149 if (networkState.Type == CrOnc.Type.WI_FI && networkState.WiFi) { 195 if (networkState.Type == CrOnc.Type.WI_FI && networkState.WiFi) {
150 let security = networkState.WiFi.Security; 196 let security = networkState.WiFi.Security;
151 return !!security && security != 'None'; 197 return !!security && security != 'None';
152 } 198 }
153 return false; 199 return false;
154 }, 200 },
155 }); 201 });
OLDNEW
« no previous file with comments | « ui/webui/resources/cr_elements/network/cr_network_icon.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698