OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 cr.define('mobile', function() { | 6 cr.define('mobile', function() { |
7 | 7 |
8 function MobileSetup() { | 8 function MobileSetup() { |
9 } | 9 } |
10 | 10 |
11 cr.addSingletonGetter(MobileSetup); | 11 cr.addSingletonGetter(MobileSetup); |
12 | 12 |
| 13 MobileSetup.PLAN_ACTIVATION_UNKNOWN = -2; |
13 MobileSetup.PLAN_ACTIVATION_PAGE_LOADING = -1; | 14 MobileSetup.PLAN_ACTIVATION_PAGE_LOADING = -1; |
14 MobileSetup.PLAN_ACTIVATION_START = 0; | 15 MobileSetup.PLAN_ACTIVATION_START = 0; |
15 MobileSetup.PLAN_ACTIVATION_TRYING_OTASP = 1; | 16 MobileSetup.PLAN_ACTIVATION_TRYING_OTASP = 1; |
16 MobileSetup.PLAN_ACTIVATION_INITIATING_ACTIVATION = 3; | 17 MobileSetup.PLAN_ACTIVATION_INITIATING_ACTIVATION = 3; |
17 MobileSetup.PLAN_ACTIVATION_RECONNECTING = 4; | 18 MobileSetup.PLAN_ACTIVATION_RECONNECTING = 4; |
18 MobileSetup.PLAN_ACTIVATION_PAYMENT_PORTAL_LOADING = 5; | 19 MobileSetup.PLAN_ACTIVATION_WAITING_FOR_CONNECTION = 5; |
19 MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT = 6; | 20 MobileSetup.PLAN_ACTIVATION_PAYMENT_PORTAL_LOADING = 6; |
20 MobileSetup.PLAN_ACTIVATION_RECONNECTING_PAYMENT = 7; | 21 MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT = 7; |
21 MobileSetup.PLAN_ACTIVATION_DELAY_OTASP = 8; | 22 MobileSetup.PLAN_ACTIVATION_RECONNECTING_PAYMENT = 8; |
22 MobileSetup.PLAN_ACTIVATION_START_OTASP = 9; | 23 MobileSetup.PLAN_ACTIVATION_DELAY_OTASP = 9; |
23 MobileSetup.PLAN_ACTIVATION_OTASP = 10; | 24 MobileSetup.PLAN_ACTIVATION_START_OTASP = 10; |
| 25 MobileSetup.PLAN_ACTIVATION_OTASP = 11; |
24 MobileSetup.PLAN_ACTIVATION_DONE = 12; | 26 MobileSetup.PLAN_ACTIVATION_DONE = 12; |
25 MobileSetup.PLAN_ACTIVATION_ERROR = 0xFF; | 27 MobileSetup.PLAN_ACTIVATION_ERROR = 0xFF; |
26 | 28 |
27 MobileSetup.EXTENSION_PAGE_URL = | 29 MobileSetup.EXTENSION_PAGE_URL = |
28 'chrome-extension://iadeocfgjdjdmpenejdbfeaocpbikmab'; | 30 'chrome-extension://iadeocfgjdjdmpenejdbfeaocpbikmab'; |
29 MobileSetup.ACTIVATION_PAGE_URL = MobileSetup.EXTENSION_PAGE_URL + | 31 MobileSetup.ACTIVATION_PAGE_URL = MobileSetup.EXTENSION_PAGE_URL + |
30 '/activation.html'; | 32 '/activation.html'; |
| 33 MobileSetup.PORTAL_OFFLINE_PAGE_URL = MobileSetup.EXTENSION_PAGE_URL + |
| 34 '/portal_offline.html'; |
31 MobileSetup.REDIRECT_POST_PAGE_URL = MobileSetup.EXTENSION_PAGE_URL + | 35 MobileSetup.REDIRECT_POST_PAGE_URL = MobileSetup.EXTENSION_PAGE_URL + |
32 '/redirect.html'; | 36 '/redirect.html'; |
33 | 37 |
34 MobileSetup.localStrings_ = new LocalStrings(); | 38 MobileSetup.localStrings_ = new LocalStrings(); |
35 | 39 |
36 MobileSetup.prototype = { | 40 MobileSetup.prototype = { |
37 // Mobile device information. | 41 // Mobile device information. |
38 deviceInfo_: null, | 42 deviceInfo_: null, |
39 frameName_: '', | 43 frameName_: '', |
40 initialized_: false, | 44 initialized_: false, |
41 fakedTransaction_: false, | 45 fakedTransaction_: false, |
42 paymentShown_: false, | 46 paymentShown_: false, |
43 frameLoadError_: 0, | 47 frameLoadError_: 0, |
44 frameLoadIgnored_: true, | 48 frameLoadIgnored_: true, |
| 49 carrierPageUrl_: null, |
45 spinnerInt_: -1, | 50 spinnerInt_: -1, |
46 // UI states. | 51 // UI states. |
47 state_: -1, | 52 state_: MobileSetup.PLAN_ACTIVATION_UNKNOWN, |
48 STATE_UNKNOWN_: 'unknown', | 53 STATE_UNKNOWN_: 'unknown', |
49 STATE_CONNECTING_: 'connecting', | 54 STATE_CONNECTING_: 'connecting', |
50 STATE_ERROR_: 'error', | 55 STATE_ERROR_: 'error', |
51 STATE_PAYMENT_: 'payment', | 56 STATE_PAYMENT_: 'payment', |
52 STATE_ACTIVATING_: 'activating', | 57 STATE_ACTIVATING_: 'activating', |
53 STATE_CONNECTED_: 'connected', | 58 STATE_CONNECTED_: 'connected', |
54 | 59 |
55 initialize: function(frame_name, carrierPage) { | 60 initialize: function(frame_name, carrierPage) { |
56 if (this.initialized_) { | 61 if (this.initialized_) { |
57 console.log('calling initialize() again?'); | 62 console.log('calling initialize() again?'); |
(...skipping 10 matching lines...) Expand all Loading... |
68 this.confirm_ = new cr.ui.dialogs.ConfirmDialog(document.body); | 73 this.confirm_ = new cr.ui.dialogs.ConfirmDialog(document.body); |
69 | 74 |
70 window.addEventListener('message', function(e) { | 75 window.addEventListener('message', function(e) { |
71 self.onMessageReceived_(e); | 76 self.onMessageReceived_(e); |
72 }); | 77 }); |
73 | 78 |
74 $('closeButton').addEventListener('click', function(e) { | 79 $('closeButton').addEventListener('click', function(e) { |
75 $('finalStatus').classList.add('hidden'); | 80 $('finalStatus').classList.add('hidden'); |
76 }); | 81 }); |
77 | 82 |
78 this.changeState_({state: MobileSetup.PLAN_ACTIVATION_PAGE_LOADING}); | |
79 // Kick off activation process. | 83 // Kick off activation process. |
80 chrome.send('startActivation'); | 84 chrome.send('startActivation'); |
81 }, | 85 }, |
82 | 86 |
83 startSpinner_: function() { | 87 startSpinner_: function() { |
84 this.stopSpinner_(); | 88 this.stopSpinner_(); |
85 this.spinnerInt_ = setInterval(mobile.MobileSetup.drawProgress, 100); | 89 this.spinnerInt_ = setInterval(mobile.MobileSetup.drawProgress, 100); |
86 }, | 90 }, |
87 | 91 |
88 stopSpinner_: function() { | 92 stopSpinner_: function() { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 } else if (e.data.type == 'reportTransactionStatusMsg') { | 132 } else if (e.data.type == 'reportTransactionStatusMsg') { |
129 console.log('calling setTransactionStatus from onMessageReceived_'); | 133 console.log('calling setTransactionStatus from onMessageReceived_'); |
130 chrome.send('setTransactionStatus', [e.data.status]); | 134 chrome.send('setTransactionStatus', [e.data.status]); |
131 } | 135 } |
132 }, | 136 }, |
133 | 137 |
134 changeState_: function(deviceInfo) { | 138 changeState_: function(deviceInfo) { |
135 var newState = deviceInfo.state; | 139 var newState = deviceInfo.state; |
136 if (this.state_ == newState) | 140 if (this.state_ == newState) |
137 return; | 141 return; |
138 var main = $('mainbody'); | 142 |
| 143 // The mobile setup is already in its final state. |
| 144 if (this.state_ == MobileSetup.PLAN_ACTIVATION_DONE || |
| 145 this.state_ == MobileSetup.PLAN_ACTIVATION_ERROR) { |
| 146 return; |
| 147 } |
| 148 |
139 // Map handler state to UX. | 149 // Map handler state to UX. |
140 switch (newState) { | 150 switch (newState) { |
141 case MobileSetup.PLAN_ACTIVATION_PAGE_LOADING: | 151 case MobileSetup.PLAN_ACTIVATION_PAGE_LOADING: |
142 case MobileSetup.PLAN_ACTIVATION_START: | 152 case MobileSetup.PLAN_ACTIVATION_START: |
143 case MobileSetup.PLAN_ACTIVATION_DELAY_OTASP: | 153 case MobileSetup.PLAN_ACTIVATION_DELAY_OTASP: |
144 case MobileSetup.PLAN_ACTIVATION_START_OTASP: | 154 case MobileSetup.PLAN_ACTIVATION_START_OTASP: |
145 case MobileSetup.PLAN_ACTIVATION_RECONNECTING: | 155 case MobileSetup.PLAN_ACTIVATION_RECONNECTING: |
146 case MobileSetup.PLAN_ACTIVATION_RECONNECTING_PAYMENT: | 156 case MobileSetup.PLAN_ACTIVATION_RECONNECTING_PAYMENT: |
| 157 // Activation page should not be shown for devices that are activated |
| 158 // over non cellular network. |
| 159 if (deviceInfo.activate_over_non_cellular_network) |
| 160 break; |
| 161 |
147 $('statusHeader').textContent = | 162 $('statusHeader').textContent = |
148 MobileSetup.localStrings_.getString('connecting_header'); | 163 MobileSetup.localStrings_.getString('connecting_header'); |
149 $('auxHeader').textContent = | 164 $('auxHeader').textContent = |
150 MobileSetup.localStrings_.getString('please_wait'); | 165 MobileSetup.localStrings_.getString('please_wait'); |
151 $('paymentForm').classList.add('hidden'); | 166 $('paymentForm').classList.add('hidden'); |
152 $('finalStatus').classList.add('hidden'); | 167 $('finalStatus').classList.add('hidden'); |
| 168 this.setCarrierPage_(MobileSetup.ACTIVATION_PAGE_URL); |
153 $('systemStatus').classList.remove('hidden'); | 169 $('systemStatus').classList.remove('hidden'); |
154 $('carrierPage').classList.remove('hidden'); | |
155 $('canvas').classList.remove('hidden'); | 170 $('canvas').classList.remove('hidden'); |
156 this.startSpinner_(); | 171 this.startSpinner_(); |
157 break; | 172 break; |
158 case MobileSetup.PLAN_ACTIVATION_TRYING_OTASP: | 173 case MobileSetup.PLAN_ACTIVATION_TRYING_OTASP: |
159 case MobileSetup.PLAN_ACTIVATION_INITIATING_ACTIVATION: | 174 case MobileSetup.PLAN_ACTIVATION_INITIATING_ACTIVATION: |
160 case MobileSetup.PLAN_ACTIVATION_OTASP: | 175 case MobileSetup.PLAN_ACTIVATION_OTASP: |
| 176 // Activation page should not be shown for devices that are activated |
| 177 // over non cellular network. |
| 178 if (deviceInfo.activate_over_non_cellular_network) |
| 179 break; |
| 180 |
161 $('statusHeader').textContent = | 181 $('statusHeader').textContent = |
162 MobileSetup.localStrings_.getString('activating_header'); | 182 MobileSetup.localStrings_.getString('activating_header'); |
163 $('auxHeader').textContent = | 183 $('auxHeader').textContent = |
164 MobileSetup.localStrings_.getString('please_wait'); | 184 MobileSetup.localStrings_.getString('please_wait'); |
165 $('paymentForm').classList.add('hidden'); | 185 $('paymentForm').classList.add('hidden'); |
166 $('finalStatus').classList.add('hidden'); | 186 $('finalStatus').classList.add('hidden'); |
| 187 this.setCarrierPage_(MobileSetup.ACTIVATION_PAGE_URL); |
167 $('systemStatus').classList.remove('hidden'); | 188 $('systemStatus').classList.remove('hidden'); |
168 $('carrierPage').classList.remove('hidden'); | |
169 $('canvas').classList.remove('hidden'); | 189 $('canvas').classList.remove('hidden'); |
170 this.startSpinner_(); | 190 this.startSpinner_(); |
171 break; | 191 break; |
172 case MobileSetup.PLAN_ACTIVATION_PAYMENT_PORTAL_LOADING: | 192 case MobileSetup.PLAN_ACTIVATION_PAYMENT_PORTAL_LOADING: |
| 193 // Activation page should not be shown for devices that are activated |
| 194 // over non cellular network. |
| 195 if (!deviceInfo.activate_over_non_cellular_network) { |
| 196 $('statusHeader').textContent = |
| 197 MobileSetup.localStrings_.getString('connecting_header'); |
| 198 $('auxHeader').textContent = ''; |
| 199 $('paymentForm').classList.add('hidden'); |
| 200 $('finalStatus').classList.add('hidden'); |
| 201 this.setCarrierPage_(MobileSetup.ACTIVATION_PAGE_URL); |
| 202 $('systemStatus').classList.remove('hidden'); |
| 203 $('canvas').classList.remove('hidden'); |
| 204 } |
| 205 this.loadPaymentFrame_(deviceInfo); |
| 206 break; |
| 207 case MobileSetup.PLAN_ACTIVATION_WAITING_FOR_CONNECTION: |
173 $('statusHeader').textContent = | 208 $('statusHeader').textContent = |
174 MobileSetup.localStrings_.getString('connecting_header'); | 209 MobileSetup.localStrings_.getString('portal_unreachable_header'); |
175 $('auxHeader').textContent = ''; | 210 $('auxHeader').textContent = ''; |
| 211 $('auxHeader').classList.add('hidden'); |
176 $('paymentForm').classList.add('hidden'); | 212 $('paymentForm').classList.add('hidden'); |
177 $('finalStatus').classList.add('hidden'); | 213 $('finalStatus').classList.add('hidden'); |
178 $('systemStatus').classList.remove('hidden'); | 214 $('systemStatus').classList.remove('hidden'); |
| 215 this.setCarrierPage_(MobileSetup.PORTAL_OFFLINE_PAGE_URL); |
179 $('canvas').classList.remove('hidden'); | 216 $('canvas').classList.remove('hidden'); |
180 this.loadPaymentFrame_(deviceInfo); | 217 this.startSpinner_(); |
181 break; | 218 break; |
182 case MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT: | 219 case MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT: |
183 $('statusHeader').textContent = ''; | 220 $('statusHeader').textContent = ''; |
184 $('auxHeader').textContent = ''; | 221 $('auxHeader').textContent = ''; |
185 $('finalStatus').classList.add('hidden'); | 222 $('finalStatus').classList.add('hidden'); |
186 $('systemStatus').classList.add('hidden'); | 223 $('systemStatus').classList.add('hidden'); |
187 $('carrierPage').classList.add('hidden'); | |
188 $('paymentForm').classList.remove('hidden'); | 224 $('paymentForm').classList.remove('hidden'); |
189 $('canvas').classList.add('hidden'); | 225 $('canvas').classList.add('hidden'); |
190 this.stopSpinner_(); | 226 this.stopSpinner_(); |
191 this.paymentShown_ = true; | 227 this.paymentShown_ = true; |
192 break; | 228 break; |
193 case MobileSetup.PLAN_ACTIVATION_DONE: | 229 case MobileSetup.PLAN_ACTIVATION_DONE: |
194 $('statusHeader').textContent = ''; | 230 $('statusHeader').textContent = ''; |
195 $('auxHeader').textContent = ''; | 231 $('auxHeader').textContent = ''; |
196 $('finalHeader').textContent = | 232 $('finalHeader').textContent = |
197 MobileSetup.localStrings_.getString('completed_header'); | 233 MobileSetup.localStrings_.getString('completed_header'); |
198 $('finalMessage').textContent = | 234 $('finalMessage').textContent = |
199 MobileSetup.localStrings_.getString('completed_text'); | 235 MobileSetup.localStrings_.getString('completed_text'); |
200 $('systemStatus').classList.add('hidden'); | 236 $('systemStatus').classList.add('hidden'); |
201 $('carrierPage').classList.add('hidden'); | |
202 $('paymentForm').classList.remove('hidden'); | |
203 $('closeButton').classList.remove('hidden'); | 237 $('closeButton').classList.remove('hidden'); |
204 $('finalStatus').classList.remove('hidden'); | 238 $('finalStatus').classList.remove('hidden'); |
205 $('canvas').classList.add('hidden'); | 239 $('canvas').classList.add('hidden'); |
| 240 $('closeButton').classList.toggle('hidden', !this.paymentShown_); |
| 241 $('paymentForm').classList.toggle('hidden', !this.paymentShown_); |
206 this.stopSpinner_(); | 242 this.stopSpinner_(); |
207 if (this.paymentShown_) { | |
208 $('closeButton').classList.remove('hidden'); | |
209 } else { | |
210 $('closeButton').classList.add('hidden'); | |
211 } | |
212 break; | 243 break; |
213 case MobileSetup.PLAN_ACTIVATION_ERROR: | 244 case MobileSetup.PLAN_ACTIVATION_ERROR: |
214 $('statusHeader').textContent = ''; | 245 $('statusHeader').textContent = ''; |
215 $('auxHeader').textContent = ''; | 246 $('auxHeader').textContent = ''; |
216 $('finalHeader').textContent = | 247 $('finalHeader').textContent = |
217 MobileSetup.localStrings_.getString('error_header'); | 248 MobileSetup.localStrings_.getString('error_header'); |
218 $('finalMessage').textContent = deviceInfo.error; | 249 $('finalMessage').textContent = deviceInfo.error; |
219 $('systemStatus').classList.add('hidden'); | 250 $('systemStatus').classList.add('hidden'); |
220 $('carrierPage').classList.add('hidden'); | |
221 $('paymentForm').classList.remove('hidden'); | |
222 $('canvas').classList.add('hidden'); | 251 $('canvas').classList.add('hidden'); |
| 252 $('closeButton').classList.toggle('hidden', !this.paymentShown_); |
| 253 $('paymentForm').classList.toggle('hidden', !this.paymentShown_); |
| 254 $('finalStatus').classList.remove('hidden'); |
223 this.stopSpinner_(); | 255 this.stopSpinner_(); |
224 if (this.paymentShown_) { | |
225 $('closeButton').classList.remove('hidden'); | |
226 } else { | |
227 $('closeButton').classList.add('hidden'); | |
228 } | |
229 $('finalStatus').classList.remove('hidden'); | |
230 break; | 256 break; |
231 } | 257 } |
232 this.state_ = newState; | 258 this.state_ = newState; |
233 }, | 259 }, |
234 | 260 |
| 261 setCarrierPage_: function(url) { |
| 262 if (this.carrierPageUrl_ == url) |
| 263 return; |
| 264 this.carrierPageUrl_ = url; |
| 265 $('carrierPage').contentWindow.location.href = url; |
| 266 }, |
| 267 |
235 updateDeviceStatus_: function(deviceInfo) { | 268 updateDeviceStatus_: function(deviceInfo) { |
236 this.changeState_(deviceInfo); | 269 this.changeState_(deviceInfo); |
237 }, | 270 }, |
238 | 271 |
239 portalFrameLoadError_: function(errorCode) { | 272 portalFrameLoadError_: function(errorCode) { |
240 if (this.frameLoadIgnored_) | 273 if (this.frameLoadIgnored_) |
241 return; | 274 return; |
242 console.log('Portal frame load error detected: ', errorCode); | 275 console.log('Portal frame load error detected: ', errorCode); |
243 this.frameLoadError_ = errorCode; | 276 this.frameLoadError_ = errorCode; |
244 }, | 277 }, |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 | 357 |
325 MobileSetup.loadPage = function() { | 358 MobileSetup.loadPage = function() { |
326 mobile.MobileSetup.getInstance().initialize('paymentForm', | 359 mobile.MobileSetup.getInstance().initialize('paymentForm', |
327 mobile.MobileSetup.ACTIVATION_PAGE_URL); | 360 mobile.MobileSetup.ACTIVATION_PAGE_URL); |
328 }; | 361 }; |
329 | 362 |
330 // Export | 363 // Export |
331 return { | 364 return { |
332 MobileSetup: MobileSetup | 365 MobileSetup: MobileSetup |
333 }; | 366 }; |
334 | |
335 }); | 367 }); |
336 | 368 |
| 369 document.addEventListener('DOMContentLoaded', mobile.MobileSetup.loadPage); |
OLD | NEW |