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

Side by Side Diff: chrome/browser/chromeos/mobile/mobile_activator.h

Issue 22611005: Switch over MobileActivator to use Network*Handler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase + remove NetworkManagerChanged Created 7 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 | Annotate | Revision Log
OLDNEW
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 #ifndef CHROME_BROWSER_CHROMEOS_MOBILE_MOBILE_ACTIVATOR_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_MOBILE_MOBILE_ACTIVATOR_H_
6 #define CHROME_BROWSER_CHROMEOS_MOBILE_MOBILE_ACTIVATOR_H_ 6 #define CHROME_BROWSER_CHROMEOS_MOBILE_MOBILE_ACTIVATOR_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
11 #include "base/files/file_path.h" 11 #include "base/files/file_path.h"
12 #include "base/gtest_prod_util.h"
12 #include "base/memory/singleton.h" 13 #include "base/memory/singleton.h"
13 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
14 #include "base/observer_list.h" 15 #include "base/observer_list.h"
15 #include "chrome/browser/chromeos/cros/network_library.h" 16 #include "base/timer/timer.h"
17 #include "chromeos/network/network_state_handler_observer.h"
16 #include "content/public/browser/browser_thread.h" 18 #include "content/public/browser/browser_thread.h"
17 19
20 namespace base {
21 class DictionaryValue;
22 }
23
18 namespace chromeos { 24 namespace chromeos {
19 25
26 class NetworkState;
20 class TestMobileActivator; 27 class TestMobileActivator;
21 28
22 // Cellular plan config document. 29 // Cellular plan config document.
23 class CellularConfigDocument 30 class CellularConfigDocument
24 : public base::RefCountedThreadSafe<CellularConfigDocument> { 31 : public base::RefCountedThreadSafe<CellularConfigDocument> {
25 public: 32 public:
26 CellularConfigDocument(); 33 CellularConfigDocument();
27 34
28 // Return error message for a given code. 35 // Return error message for a given code.
29 std::string GetErrorMessage(const std::string& code); 36 std::string GetErrorMessage(const std::string& code);
(...skipping 11 matching lines...) Expand all
41 48
42 std::string version_; 49 std::string version_;
43 ErrorMap error_map_; 50 ErrorMap error_map_;
44 base::Lock config_lock_; 51 base::Lock config_lock_;
45 52
46 DISALLOW_COPY_AND_ASSIGN(CellularConfigDocument); 53 DISALLOW_COPY_AND_ASSIGN(CellularConfigDocument);
47 }; 54 };
48 55
49 // This class performs mobile plan activation process. 56 // This class performs mobile plan activation process.
50 class MobileActivator 57 class MobileActivator
51 : public NetworkLibrary::NetworkManagerObserver, 58 : public base::SupportsWeakPtr<MobileActivator>,
52 public NetworkLibrary::NetworkObserver, 59 public NetworkStateHandlerObserver {
53 public base::SupportsWeakPtr<MobileActivator> {
54 public: 60 public:
55 // Activation state. 61 // Activation state.
56 enum PlanActivationState { 62 enum PlanActivationState {
57 // Activation WebUI page is loading, activation not started. 63 // Activation WebUI page is loading, activation not started.
58 PLAN_ACTIVATION_PAGE_LOADING = -1, 64 PLAN_ACTIVATION_PAGE_LOADING = -1,
59 // Activation process started. 65 // Activation process started.
60 PLAN_ACTIVATION_START = 0, 66 PLAN_ACTIVATION_START = 0,
61 // Initial over the air activation attempt. 67 // Initial over the air activation attempt.
62 PLAN_ACTIVATION_TRYING_OTASP = 1, 68 PLAN_ACTIVATION_TRYING_OTASP = 1,
63 // Performing pre-activation process. 69 // Performing pre-activation process.
(...skipping 20 matching lines...) Expand all
84 PLAN_ACTIVATION_DONE = 12, 90 PLAN_ACTIVATION_DONE = 12,
85 // Error occured during activation process. 91 // Error occured during activation process.
86 PLAN_ACTIVATION_ERROR = 0xFF, 92 PLAN_ACTIVATION_ERROR = 0xFF,
87 }; 93 };
88 94
89 // Activation process observer. 95 // Activation process observer.
90 class Observer { 96 class Observer {
91 public: 97 public:
92 // Signals activation |state| change for given |network|. 98 // Signals activation |state| change for given |network|.
93 virtual void OnActivationStateChanged( 99 virtual void OnActivationStateChanged(
94 CellularNetwork* network, 100 const NetworkState* network,
95 PlanActivationState state, 101 PlanActivationState state,
96 const std::string& error_description) = 0; 102 const std::string& error_description) = 0;
97 103
98 protected: 104 protected:
99 Observer() {} 105 Observer() {}
100 virtual ~Observer() {} 106 virtual ~Observer() {}
101 }; 107 };
102 108
103 static MobileActivator* GetInstance(); 109 static MobileActivator* GetInstance();
104 110
(...skipping 21 matching lines...) Expand all
126 FRIEND_TEST_ALL_PREFIXES(MobileActivatorTest, OTASPScheduling); 132 FRIEND_TEST_ALL_PREFIXES(MobileActivatorTest, OTASPScheduling);
127 FRIEND_TEST_ALL_PREFIXES(MobileActivatorTest, 133 FRIEND_TEST_ALL_PREFIXES(MobileActivatorTest,
128 ReconnectOnDisconnectFromPaymentPortal); 134 ReconnectOnDisconnectFromPaymentPortal);
129 FRIEND_TEST_ALL_PREFIXES(MobileActivatorTest, StartAtStart); 135 FRIEND_TEST_ALL_PREFIXES(MobileActivatorTest, StartAtStart);
130 // We reach directly into the activator for testing purposes. 136 // We reach directly into the activator for testing purposes.
131 friend class MobileActivatorTest; 137 friend class MobileActivatorTest;
132 138
133 MobileActivator(); 139 MobileActivator();
134 virtual ~MobileActivator(); 140 virtual ~MobileActivator();
135 141
136 // NetworkLibrary::NetworkManagerObserver overrides. 142 // NetworkStateHandlerObserver overrides.
137 virtual void OnNetworkManagerChanged(NetworkLibrary* obj) OVERRIDE; 143 virtual void DefaultNetworkChanged(const NetworkState* network) OVERRIDE;
138 // NetworkLibrary::NetworkObserver overrides. 144 virtual void NetworkPropertiesUpdated(const NetworkState* network) OVERRIDE;
139 virtual void OnNetworkChanged(NetworkLibrary* obj,
140 const Network* network) OVERRIDE;
141 145
142 // Continue activation after inital setup (config load). 146 // Continue activation after inital setup (config load).
143 void ContinueActivation(); 147 void ContinueActivation();
144 // Handles the signal that the payment portal has finished loading. 148 // Handles the signal that the payment portal has finished loading.
145 void HandlePortalLoaded(bool success); 149 void HandlePortalLoaded(bool success);
146 // Handles the signal that the user has finished with the portal. 150 // Handles the signal that the user has finished with the portal.
147 void HandleSetTransactionStatus(bool success); 151 void HandleSetTransactionStatus(bool success);
148 // Starts activation. 152 // Starts activation.
149 void StartActivation(); 153 void StartActivation();
150 // Called after we delay our OTASP (after payment). 154 // Called after we delay our OTASP (after payment).
151 void RetryOTASP(); 155 void RetryOTASP();
152 // Continues activation process. This method is called after we disconnect 156 // Continues activation process. This method is called after we disconnect
153 // due to detected connectivity issue to kick off reconnection. 157 // due to detected connectivity issue to kick off reconnection.
154 void ContinueConnecting(); 158 void ContinueConnecting();
155 159
156 // Sends message to host registration page with system/user info data. 160 // Sends message to host registration page with system/user info data.
157 void SendDeviceInfo(); 161 void SendDeviceInfo();
158 162
159 // Starts OTASP process. 163 // Starts OTASP process.
160 void StartOTASP(); 164 void StartOTASP();
161 // Called when an OTASP attempt times out. 165 // Called when an OTASP attempt times out.
162 void HandleOTASPTimeout(); 166 void HandleOTASPTimeout();
163 // Forces disconnect / reconnect when we detect portal connectivity issues. 167 // Forces disconnect / reconnect when we detect portal connectivity issues.
164 void ForceReconnect(CellularNetwork* network, PlanActivationState next_state); 168 void ForceReconnect(const NetworkState* network,
169 PlanActivationState next_state);
165 // Called when ForceReconnect takes too long to reconnect. 170 // Called when ForceReconnect takes too long to reconnect.
166 void ReconnectTimedOut(); 171 void ReconnectTimedOut();
172
173 // Called on default network changes to update cellular network activation
174 // state.
175 void RefreshCellularNetworks();
167 // Verify the state of cellular network and modify internal state. 176 // Verify the state of cellular network and modify internal state.
168 virtual void EvaluateCellularNetwork(CellularNetwork* network); 177 virtual void EvaluateCellularNetwork(const NetworkState* network);
169 // PickNextState selects the desired state based on the current state of the 178 // PickNextState selects the desired state based on the current state of the
170 // modem and the activator. It does not transition to this state however. 179 // modem and the activator. It does not transition to this state however.
171 PlanActivationState PickNextState(CellularNetwork* network, 180 PlanActivationState PickNextState(const NetworkState* network,
172 std::string* error_description) const; 181 std::string* error_description) const;
173 // One of PickNext*State are called in PickNextState based on whether the 182 // One of PickNext*State are called in PickNextState based on whether the
174 // modem is online or not. 183 // modem is online or not.
175 PlanActivationState PickNextOnlineState(CellularNetwork* network) const; 184 PlanActivationState PickNextOnlineState(const NetworkState* network) const;
176 PlanActivationState PickNextOfflineState(CellularNetwork* network) const; 185 PlanActivationState PickNextOfflineState(const NetworkState* network) const;
177 // Check the current cellular network for error conditions. 186 // Check the current cellular network for error conditions.
178 bool GotActivationError(CellularNetwork* network, 187 bool GotActivationError(const NetworkState* network,
179 std::string* error) const; 188 std::string* error) const;
180 // Sends status updates to WebUI page. 189 // Sends status updates to WebUI page.
181 void UpdatePage(CellularNetwork* network, 190 void UpdatePage(const NetworkState* network,
182 const std::string& error_description); 191 const std::string& error_description);
192
193 // Callback used to handle an activation error.
194 void HandleActivationFailure(
195 const std::string& service_path,
196 PlanActivationState new_state,
197 const std::string& error_name,
198 scoped_ptr<base::DictionaryValue> error_data);
199
183 // Changes internal state. 200 // Changes internal state.
184 virtual void ChangeState(CellularNetwork* network, 201 virtual void ChangeState(const NetworkState* network,
185 PlanActivationState new_state, 202 PlanActivationState new_state,
186 const std::string& error_description); 203 const std::string& error_description);
187 // Resets network devices after cellular activation process. 204 // Resets network devices after cellular activation process.
188 // |network| should be NULL if the activation process failed. 205 // |network| should be NULL if the activation process failed.
189 void CompleteActivation(CellularNetwork* network); 206 void CompleteActivation(const NetworkState* network);
190 // Disables SSL certificate revocation checking mechanism. In the case 207 // Disables SSL certificate revocation checking mechanism. In the case
191 // where captive portal connection is the only one present, such revocation 208 // where captive portal connection is the only one present, such revocation
192 // checks could prevent payment portal page from loading. 209 // checks could prevent payment portal page from loading.
193 void DisableCertRevocationChecking(); 210 void DisableCertRevocationChecking();
194 // Reenables SSL certificate revocation checking mechanism. 211 // Reenables SSL certificate revocation checking mechanism.
195 void ReEnableCertRevocationChecking(); 212 void ReEnableCertRevocationChecking();
196 // Return error message for a given code. 213 // Return error message for a given code.
197 std::string GetErrorMessage(const std::string& code) const; 214 std::string GetErrorMessage(const std::string& code) const;
198 215
199 // Converts the currently active CellularNetwork device into a JS object. 216 // Converts the currently active CellularNetwork device into a JS object.
200 static void GetDeviceInfo(CellularNetwork* network, 217 static void GetDeviceInfo(const NetworkState* network,
201 DictionaryValue* value); 218 base::DictionaryValue* value);
202 static bool ShouldReportDeviceState(std::string* state, std::string* error); 219 static bool ShouldReportDeviceState(std::string* state, std::string* error);
203 220
204 // Performs activation state cellular device evaluation. 221 // Performs activation state cellular device evaluation.
205 // Returns false if device activation failed. In this case |error| 222 // Returns false if device activation failed. In this case |error|
206 // will contain error message to be reported to Web UI. 223 // will contain error message to be reported to Web UI.
207 static bool EvaluateCellularDeviceState(bool* report_status, 224 static bool EvaluateCellularDeviceState(bool* report_status,
208 std::string* state, 225 std::string* state,
209 std::string* error); 226 std::string* error);
210 // Finds cellular network that matches |meid_| or |iccid_|, reattach network
211 // change observer if |reattach_observer| flag is set.
212 virtual CellularNetwork* FindMatchingCellularNetwork(bool reattach_observer);
213 // Starts the OTASP timeout timer. If the timer fires, we'll force a 227 // Starts the OTASP timeout timer. If the timer fires, we'll force a
214 // disconnect/reconnect cycle on this network. 228 // disconnect/reconnect cycle on this network.
215 virtual void StartOTASPTimer(); 229 virtual void StartOTASPTimer();
216 230
231 // Records information that cellular plan payment has happened.
232 virtual void SignalCellularPlanPayment();
233
234 // Returns true if cellular plan payment has been recorded recently.
235 virtual bool HasRecentCellularPlanPayment() const;
236
217 static const char* GetStateDescription(PlanActivationState state); 237 static const char* GetStateDescription(PlanActivationState state);
218 238
219 virtual NetworkLibrary* GetNetworkLibrary() const;
220
221 scoped_refptr<CellularConfigDocument> cellular_config_; 239 scoped_refptr<CellularConfigDocument> cellular_config_;
222 // Internal handler state. 240 // Internal handler state.
223 PlanActivationState state_; 241 PlanActivationState state_;
224 // MEID of cellular device to activate. 242 // MEID of cellular device to activate.
225 std::string meid_; 243 std::string meid_;
226 // ICCID of the SIM card on cellular device to activate. 244 // ICCID of the SIM card on cellular device to activate.
227 std::string iccid_; 245 std::string iccid_;
228 // Service path of network being activated. Note that the path can change 246 // Service path of network being activated. Note that the path can change
229 // during the activation process while still representing the same service. 247 // during the activation process while still representing the same service.
230 std::string service_path_; 248 std::string service_path_;
(...skipping 12 matching lines...) Expand all
243 int payment_reconnect_count_; 261 int payment_reconnect_count_;
244 // Timer that monitors how long we spend in error-prone states. 262 // Timer that monitors how long we spend in error-prone states.
245 base::RepeatingTimer<MobileActivator> state_duration_timer_; 263 base::RepeatingTimer<MobileActivator> state_duration_timer_;
246 264
247 // State we will return to if we are disconnected. 265 // State we will return to if we are disconnected.
248 PlanActivationState post_reconnect_state_; 266 PlanActivationState post_reconnect_state_;
249 // Called to continue the reconnect attempt. 267 // Called to continue the reconnect attempt.
250 base::RepeatingTimer<MobileActivator> continue_reconnect_timer_; 268 base::RepeatingTimer<MobileActivator> continue_reconnect_timer_;
251 // Called when the reconnect attempt times out. 269 // Called when the reconnect attempt times out.
252 base::OneShotTimer<MobileActivator> reconnect_timeout_timer_; 270 base::OneShotTimer<MobileActivator> reconnect_timeout_timer_;
253 271 // Cellular plan payment time.
272 base::Time cellular_plan_payment_time_;
254 273
255 ObserverList<Observer> observers_; 274 ObserverList<Observer> observers_;
256 275
257 DISALLOW_COPY_AND_ASSIGN(MobileActivator); 276 DISALLOW_COPY_AND_ASSIGN(MobileActivator);
258 }; 277 };
259 278
260 } // namespace chromeos 279 } // namespace chromeos
261 280
262 #endif // CHROME_BROWSER_CHROMEOS_MOBILE_MOBILE_ACTIVATOR_H_ 281 #endif // CHROME_BROWSER_CHROMEOS_MOBILE_MOBILE_ACTIVATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698