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

Side by Side Diff: chrome/browser/resources/mobile_setup.js

Issue 8341037: Added logic that will retry to reload+reconnect the mobile payment portal page 5 times before it ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_PAGE_LOADING = -1; 13 MobileSetup.PLAN_ACTIVATION_PAGE_LOADING = -1;
14 MobileSetup.PLAN_ACTIVATION_START = 0; 14 MobileSetup.PLAN_ACTIVATION_START = 0;
15 MobileSetup.PLAN_ACTIVATION_TRYING_OTASP = 1; 15 MobileSetup.PLAN_ACTIVATION_TRYING_OTASP = 1;
16 MobileSetup.PLAN_ACTIVATION_RECONNECTING_OTASP_TRY = 2; 16 MobileSetup.PLAN_ACTIVATION_RECONNECTING_OTASP_TRY = 2;
17 MobileSetup.PLAN_ACTIVATION_INITIATING_ACTIVATION = 3; 17 MobileSetup.PLAN_ACTIVATION_INITIATING_ACTIVATION = 3;
18 MobileSetup.PLAN_ACTIVATION_RECONNECTING = 4; 18 MobileSetup.PLAN_ACTIVATION_RECONNECTING = 4;
19 MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT = 5; 19 MobileSetup.PLAN_ACTIVATION_PAYMENT_PORTAL_LOADING = 5;
20 MobileSetup.PLAN_ACTIVATION_DELAY_OTASP = 6; 20 MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT = 6;
21 MobileSetup.PLAN_ACTIVATION_START_OTASP = 7; 21 MobileSetup.PLAN_ACTIVATION_RECONNECTING_PAYMENT = 7;
22 MobileSetup.PLAN_ACTIVATION_OTASP = 8; 22 MobileSetup.PLAN_ACTIVATION_DELAY_OTASP = 8;
23 MobileSetup.PLAN_ACTIVATION_RECONNECTING_OTASP = 9; 23 MobileSetup.PLAN_ACTIVATION_START_OTASP = 9;
24 MobileSetup.PLAN_ACTIVATION_DONE = 10; 24 MobileSetup.PLAN_ACTIVATION_OTASP = 10;
25 MobileSetup.PLAN_ACTIVATION_RECONNECTING_OTASP = 11;
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';
31 MobileSetup.REDIRECT_POST_PAGE_URL = MobileSetup.EXTENSION_PAGE_URL + 33 MobileSetup.REDIRECT_POST_PAGE_URL = MobileSetup.EXTENSION_PAGE_URL +
32 '/redirect.html'; 34 '/redirect.html';
33 35
34 MobileSetup.localStrings_ = new LocalStrings(); 36 MobileSetup.localStrings_ = new LocalStrings();
35 37
36 MobileSetup.prototype = { 38 MobileSetup.prototype = {
37 // Mobile device information. 39 // Mobile device information.
38 deviceInfo_: null, 40 deviceInfo_: null,
39 frameName_ : '', 41 frameName_ : '',
40 initialized_ : false, 42 initialized_ : false,
41 faked_transaction_ : false, 43 faked_transaction_ : false,
42 payment_shown_ : false, 44 payment_shown_ : false,
45 frame_load_error_ : 0,
46 frame_load_ignored_ : true,
43 // UI states. 47 // UI states.
44 state_ : -1, 48 state_ : -1,
45 STATE_UNKNOWN_: "unknown", 49 STATE_UNKNOWN_: "unknown",
46 STATE_CONNECTING_: "connecting", 50 STATE_CONNECTING_: "connecting",
47 STATE_ERROR_: "error", 51 STATE_ERROR_: "error",
48 STATE_PAYMENT_: "payment", 52 STATE_PAYMENT_: "payment",
49 STATE_ACTIVATING_: "activating", 53 STATE_ACTIVATING_: "activating",
50 STATE_CONNECTED_: "connected", 54 STATE_CONNECTED_: "connected",
51 55
52 initialize: function(frame_name, carrierPage) { 56 initialize: function(frame_name, carrierPage) {
(...skipping 30 matching lines...) Expand all
83 window.close(); 87 window.close();
84 }); 88 });
85 }); 89 });
86 90
87 this.changeState_({state: MobileSetup.PLAN_ACTIVATION_PAGE_LOADING}); 91 this.changeState_({state: MobileSetup.PLAN_ACTIVATION_PAGE_LOADING});
88 setInterval(mobile.MobileSetup.drawProgress, 100); 92 setInterval(mobile.MobileSetup.drawProgress, 100);
89 // Kick off activation process. 93 // Kick off activation process.
90 chrome.send('startActivation', []); 94 chrome.send('startActivation', []);
91 }, 95 },
92 96
93 setupPaymentFrameListener_: function() { 97 onFrameLoaded_: function(success) {
94 $(this.frameName_).addEventListener('load', function(e) { 98 chrome.send('paymentPortalLoad', [success ? 'ok' : 'failed']);
95 // Flip the visibility of the payment page only after the frame is
96 // fully loaded.
97 if (self.state_ == MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT) {
98 $('statusHeader').textContent = '';
99 $('auxHeader').textContent = '';
100 $('finalStatus').classList.add('hidden');
101 $('systemStatus').classList.add('hidden');
102 $('canvas').classList.add('hidden');
103 $('carrierPage').classList.add('hidden');
104 $('paymentForm').classList.remove('hidden');
105 }
106 });
107 }, 99 },
108 100
109 loadPaymentFrame_: function(deviceInfo) { 101 loadPaymentFrame_: function(deviceInfo) {
110 if (deviceInfo) { 102 if (deviceInfo) {
103 this.frame_load_error_ = 0;
111 this.deviceInfo_ = deviceInfo; 104 this.deviceInfo_ = deviceInfo;
112 if (deviceInfo.post_data && deviceInfo.post_data.length) { 105 if (deviceInfo.post_data && deviceInfo.post_data.length) {
106 this.frame_load_ignored_ = true;
113 $(this.frameName_).contentWindow.location.href = 107 $(this.frameName_).contentWindow.location.href =
xiyuan 2011/10/26 23:17:03 nit: $(this.frameName_).src = ...
114 MobileSetup.REDIRECT_POST_PAGE_URL + 108 MobileSetup.REDIRECT_POST_PAGE_URL +
115 '?post_data=' + escape(deviceInfo.post_data) + 109 '?post_data=' + escape(deviceInfo.post_data) +
116 '&formUrl=' + escape(deviceInfo.payment_url); 110 '&formUrl=' + escape(deviceInfo.payment_url);
117 } else { 111 } else {
118 this.setupPaymentFrameListener_(); 112 this.frame_load_ignored_ = false;
119 $(this.frameName_).contentWindow.location.href = 113 $(this.frameName_).contentWindow.location.href =
120 deviceInfo.payment_url; 114 deviceInfo.payment_url;
121 } 115 }
122 } 116 }
123 }, 117 },
124 118
125 onMessageReceived_: function(e) { 119 onMessageReceived_: function(e) {
126 if (e.origin != 120 if (e.origin !=
127 this.deviceInfo_.payment_url.substring(0, e.origin.length) && 121 this.deviceInfo_.payment_url.substring(0, e.origin.length) &&
128 e.origin != MobileSetup.EXTENSION_PAGE_URL) 122 e.origin != MobileSetup.EXTENSION_PAGE_URL)
129 return; 123 return;
130 124
131 if (e.data.type == 'requestDeviceInfoMsg') { 125 if (e.data.type == 'requestDeviceInfoMsg') {
132 this.sendDeviceInfo_(); 126 this.sendDeviceInfo_();
133 } else if (e.data.type == 'framePostReady') { 127 } else if (e.data.type == 'framePostReady') {
134 this.setupPaymentFrameListener_(); 128 this.frame_load_ignored_ = false;
135 this.sendPostFrame_(e.origin); 129 this.sendPostFrame_(e.origin);
136 } else if (e.data.type == 'reportTransactionStatusMsg') { 130 } else if (e.data.type == 'reportTransactionStatusMsg') {
137 console.log('calling setTransactionStatus from onMessageReceived_'); 131 console.log('calling setTransactionStatus from onMessageReceived_');
138 $('paymentForm').classList.add('hidden'); 132 $('paymentForm').classList.add('hidden');
139 chrome.send('setTransactionStatus', [e.data.status]); 133 chrome.send('setTransactionStatus', [e.data.status]);
140 } 134 }
141 }, 135 },
142 136
143 changeState_: function(deviceInfo) { 137 changeState_: function(deviceInfo) {
144 var new_state = deviceInfo.state; 138 var new_state = deviceInfo.state;
145 if (this.state_ == new_state) 139 if (this.state_ == new_state)
146 return; 140 return;
147 var main = $('mainbody'); 141 var main = $('mainbody');
148 // Map handler state to UX. 142 // Map handler state to UX.
149 switch(new_state) { 143 switch(new_state) {
150 case MobileSetup.PLAN_ACTIVATION_PAGE_LOADING: 144 case MobileSetup.PLAN_ACTIVATION_PAGE_LOADING:
151 case MobileSetup.PLAN_ACTIVATION_START: 145 case MobileSetup.PLAN_ACTIVATION_START:
152 case MobileSetup.PLAN_ACTIVATION_DELAY_OTASP: 146 case MobileSetup.PLAN_ACTIVATION_DELAY_OTASP:
153 case MobileSetup.PLAN_ACTIVATION_START_OTASP: 147 case MobileSetup.PLAN_ACTIVATION_START_OTASP:
154 case MobileSetup.PLAN_ACTIVATION_RECONNECTING: 148 case MobileSetup.PLAN_ACTIVATION_RECONNECTING:
149 case MobileSetup.PLAN_ACTIVATION_RECONNECTING_PAYMENT:
155 case MobileSetup.PLAN_ACTIVATION_RECONNECTING_OTASP_TRY: 150 case MobileSetup.PLAN_ACTIVATION_RECONNECTING_OTASP_TRY:
156 case MobileSetup.PLAN_ACTIVATION_RECONNECTING_OTASP: 151 case MobileSetup.PLAN_ACTIVATION_RECONNECTING_OTASP:
157 $('statusHeader').textContent = 152 $('statusHeader').textContent =
158 MobileSetup.localStrings_.getString('connecting_header'); 153 MobileSetup.localStrings_.getString('connecting_header');
159 $('auxHeader').textContent = 154 $('auxHeader').textContent =
160 MobileSetup.localStrings_.getString('please_wait'); 155 MobileSetup.localStrings_.getString('please_wait');
161 $('paymentForm').classList.add('hidden'); 156 $('paymentForm').classList.add('hidden');
162 $('finalStatus').classList.add('hidden'); 157 $('finalStatus').classList.add('hidden');
163 $('systemStatus').classList.remove('hidden'); 158 $('systemStatus').classList.remove('hidden');
164 $('canvas').classList.remove('hidden'); 159 $('canvas').classList.remove('hidden');
165 $('carrierPage').classList.remove('hidden'); 160 $('carrierPage').classList.remove('hidden');
166 break; 161 break;
167 case MobileSetup.PLAN_ACTIVATION_TRYING_OTASP: 162 case MobileSetup.PLAN_ACTIVATION_TRYING_OTASP:
168 case MobileSetup.PLAN_ACTIVATION_INITIATING_ACTIVATION: 163 case MobileSetup.PLAN_ACTIVATION_INITIATING_ACTIVATION:
169 case MobileSetup.PLAN_ACTIVATION_OTASP: 164 case MobileSetup.PLAN_ACTIVATION_OTASP:
170 $('statusHeader').textContent = 165 $('statusHeader').textContent =
171 MobileSetup.localStrings_.getString('activating_header'); 166 MobileSetup.localStrings_.getString('activating_header');
172 $('auxHeader').textContent = 167 $('auxHeader').textContent =
173 MobileSetup.localStrings_.getString('please_wait'); 168 MobileSetup.localStrings_.getString('please_wait');
174 $('paymentForm').classList.add('hidden'); 169 $('paymentForm').classList.add('hidden');
175 $('finalStatus').classList.add('hidden'); 170 $('finalStatus').classList.add('hidden');
176 $('systemStatus').classList.remove('hidden'); 171 $('systemStatus').classList.remove('hidden');
177 $('canvas').classList.remove('hidden'); 172 $('canvas').classList.remove('hidden');
178 $('carrierPage').classList.remove('hidden'); 173 $('carrierPage').classList.remove('hidden');
179 break; 174 break;
180 case MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT: 175 case MobileSetup.PLAN_ACTIVATION_PAYMENT_PORTAL_LOADING:
181 $('statusHeader').textContent = 176 $('statusHeader').textContent =
182 MobileSetup.localStrings_.getString('connecting_header'); 177 MobileSetup.localStrings_.getString('connecting_header');
183 $('auxHeader').textContent = ''; 178 $('auxHeader').textContent = '';
184 $('paymentForm').classList.add('hidden'); 179 $('paymentForm').classList.add('hidden');
185 $('finalStatus').classList.add('hidden'); 180 $('finalStatus').classList.add('hidden');
186 $('systemStatus').classList.remove('hidden'); 181 $('systemStatus').classList.remove('hidden');
187 $('canvas').classList.remove('hidden'); 182 $('canvas').classList.remove('hidden');
188 this.loadPaymentFrame_(deviceInfo); 183 this.loadPaymentFrame_(deviceInfo);
184 break;
185 case MobileSetup.PLAN_ACTIVATION_SHOWING_PAYMENT:
186 $('statusHeader').textContent = '';
187 $('auxHeader').textContent = '';
188 $('finalStatus').classList.add('hidden');
189 $('systemStatus').classList.add('hidden');
190 $('canvas').classList.add('hidden');
191 $('carrierPage').classList.add('hidden');
192 $('paymentForm').classList.remove('hidden');
189 this.payment_shown_ = true; 193 this.payment_shown_ = true;
190 break; 194 break;
191 case MobileSetup.PLAN_ACTIVATION_DONE: 195 case MobileSetup.PLAN_ACTIVATION_DONE:
192 $('statusHeader').textContent = ''; 196 $('statusHeader').textContent = '';
193 $('auxHeader').textContent = ''; 197 $('auxHeader').textContent = '';
194 $('finalHeader').textContent = 198 $('finalHeader').textContent =
195 MobileSetup.localStrings_.getString('completed_header'); 199 MobileSetup.localStrings_.getString('completed_header');
196 $('finalMessage').textContent = 200 $('finalMessage').textContent =
197 MobileSetup.localStrings_.getString('completed_text'); 201 MobileSetup.localStrings_.getString('completed_text');
198 $('systemStatus').classList.add('hidden'); 202 $('systemStatus').classList.add('hidden');
(...skipping 30 matching lines...) Expand all
229 $('finalStatus').classList.remove('hidden'); 233 $('finalStatus').classList.remove('hidden');
230 break; 234 break;
231 } 235 }
232 this.state_ = new_state; 236 this.state_ = new_state;
233 }, 237 },
234 238
235 updateDeviceStatus_: function(deviceInfo) { 239 updateDeviceStatus_: function(deviceInfo) {
236 this.changeState_(deviceInfo); 240 this.changeState_(deviceInfo);
237 }, 241 },
238 242
243 portalFrameLoadError_: function(errorCode) {
244 if (this.frame_load_ignored_)
245 return;
246 console.log("Portal frame load error detected: " + errorCode);
247 this.frame_load_error_ = errorCode;
248 },
249
250 portalFrameLoadCompleted_: function() {
251 if (this.frame_load_ignored_)
252 return;
253 console.log("Portal frame load completed!");
254 this.onFrameLoaded_(this.frame_load_error_ == 0);
255 },
256
239 sendPostFrame_ : function(frameUrl) { 257 sendPostFrame_ : function(frameUrl) {
240 var msg = { type: 'postFrame' }; 258 var msg = { type: 'postFrame' };
241 $(this.frameName_).contentWindow.postMessage(msg, frameUrl); 259 $(this.frameName_).contentWindow.postMessage(msg, frameUrl);
242 }, 260 },
243 261
244 sendDeviceInfo_ : function() { 262 sendDeviceInfo_ : function() {
245 var msg = { 263 var msg = {
246 type: 'deviceInfoMsg', 264 type: 'deviceInfoMsg',
247 domain: document.location, 265 domain: document.location,
248 payload: { 266 payload: {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 ctx.closePath(); 311 ctx.closePath();
294 ctx.fillStyle = "rgba(240, 30, 29, " + opacity + ")"; 312 ctx.fillStyle = "rgba(240, 30, 29, " + opacity + ")";
295 ctx.fill(); 313 ctx.fill();
296 } 314 }
297 }; 315 };
298 316
299 MobileSetup.deviceStateChanged = function(deviceInfo) { 317 MobileSetup.deviceStateChanged = function(deviceInfo) {
300 MobileSetup.getInstance().updateDeviceStatus_(deviceInfo); 318 MobileSetup.getInstance().updateDeviceStatus_(deviceInfo);
301 }; 319 };
302 320
321 MobileSetup.portalFrameLoadError = function(errorCode) {
322 MobileSetup.getInstance().portalFrameLoadError_(errorCode);
323 };
324
325 MobileSetup.portalFrameLoadCompleted = function() {
326 MobileSetup.getInstance().portalFrameLoadCompleted_();
327 };
328
303 MobileSetup.loadPage = function() { 329 MobileSetup.loadPage = function() {
304 mobile.MobileSetup.getInstance().initialize('paymentForm', 330 mobile.MobileSetup.getInstance().initialize('paymentForm',
305 mobile.MobileSetup.ACTIVATION_PAGE_URL); 331 mobile.MobileSetup.ACTIVATION_PAGE_URL);
306 }; 332 };
307 333
308 // Export 334 // Export
309 return { 335 return {
310 MobileSetup: MobileSetup 336 MobileSetup: MobileSetup
311 }; 337 };
312 338
313 }); 339 });
314 340
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698