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

Unified Diff: chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc

Issue 4311002: Fixed activation process.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/mobile_setup.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc
===================================================================
--- chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc (revision 64507)
+++ chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc (working copy)
@@ -27,15 +27,17 @@
#include "chrome/browser/chromeos/cros/network_library.h"
#include "chrome/browser/chromeos/cros/system_library.h"
#include "chrome/browser/dom_ui/chrome_url_data_manager.h"
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/common/jstemplate_builder.h"
+#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "googleurl/src/gurl.h"
#include "grit/browser_resources.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
#include "grit/locale_settings.h"
-#include "net/base/ssl_config_service.h"
namespace {
@@ -47,16 +49,6 @@
const wchar_t kJsDeviceStatusChangedHandler[] =
L"mobile.MobileSetup.deviceStateChanged";
-// Collular device states that are reported to DOM UI layer.
-const char kStateUnknown[] = "unknown";
-const char kStateConnecting[] = "connecting";
-const char kStateError[] = "error";
-const char kStateNeedsPayment[] = "payment";
-const char kStateActivating[] = "activating";
-const char kStateDisconnected[] = "disconnected";
-const char kStateConnected[] = "connected";
-const char kFailedPayment[] = "failed_payment";
-
// Error codes matching codes defined in the cellular config file.
const char kErrorDefault[] = "default";
const char kErrorBadConnectionPartial[] = "bad_connection_partial";
@@ -159,7 +151,7 @@
PLAN_ACTIVATION_PAGE_LOADING = -1,
PLAN_ACTIVATION_START = 0,
PLAN_ACTIVATION_INITIATING_ACTIVATION = 1,
- PLAN_ACTIVATION_ACTIVATING = 2,
+ PLAN_ACTIVATION_RECONNECTING = 2,
PLAN_ACTIVATION_SHOWING_PAYMENT = 3,
PLAN_ACTIVATION_DONE = 4,
PLAN_ACTIVATION_ERROR = 5,
@@ -174,18 +166,21 @@
void SendDeviceInfo();
// Verify the state of cellular network and modify internal state.
- void EvaluateCellularNetwork(const chromeos::CellularNetwork* network);
+ void EvaluateCellularNetwork(chromeos::CellularNetwork* network);
// Check the current cellular network for error conditions.
bool GotActivationError(const chromeos::CellularNetwork* network,
std::string* error);
- void ChangeState(const chromeos::CellularNetwork* network,
+ void ChangeState(chromeos::CellularNetwork* network,
PlanActivationState new_state,
const std::string& error_description);
-
+ // Prepares network devices for cellular activation process.
+ void SetupActivationProcess(chromeos::CellularNetwork* network);
+ // Resets network devices after cellular activation process.
+ // |network| should be NULL if the activation process failed.
+ void CompleteActivation(chromeos::CellularNetwork* network);
// Control routines for handling other types of connections during
// cellular activation.
void ReEnableOtherConnections();
- void DisableOtherConnections();
// Converts the currently active CellularNetwork device into a JS object.
static void GetDeviceInfo(const chromeos::CellularNetwork* network,
@@ -215,6 +210,7 @@
// after the activation of cellular network.
bool reenable_wifi_;
bool reenable_ethernet_;
+ bool reenable_cert_check_;
DISALLOW_COPY_AND_ASSIGN(MobileSetupHandler);
};
@@ -325,7 +321,8 @@
state_(PLAN_ACTIVATION_PAGE_LOADING),
service_path_(service_path),
reenable_wifi_(false),
- reenable_ethernet_(false) {
+ reenable_ethernet_(false),
+ reenable_cert_check_(false) {
}
MobileSetupHandler::~MobileSetupHandler() {
@@ -333,7 +330,6 @@
chromeos::CrosLibrary::Get()->GetNetworkLibrary();
lib->RemoveObserver(this);
lib->RemoveProperyObserver(this);
- // net::SSLConfigService::AllowRevChecking();
ReEnableOtherConnections();
}
@@ -344,6 +340,7 @@
void MobileSetupHandler::Init(TabContents* contents) {
tab_contents_ = contents;
LoadCellularConfig();
+ SetupActivationProcess(GetCellularNetwork(service_path_));
}
void MobileSetupHandler::RegisterMessages() {
@@ -408,7 +405,7 @@
lib->AddObserver(this);
lib->AddProperyObserver(network->service_path().c_str(),
this);
- state_ = PLAN_ACTIVATION_START;
+ ChangeState(network, PLAN_ACTIVATION_START, std::string());
EvaluateCellularNetwork(network);
}
@@ -424,18 +421,15 @@
// The payment is received, try to reconnect and check the status all over
// again.
- if (LowerCaseEqualsASCII(status, "OK")) {
- chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()->
- GetNetworkLibrary();
- ChangeState(
- lib->cellular_network(),
- PLAN_ACTIVATION_START, std::string());
+ if (LowerCaseEqualsASCII(status, "ok")) {
+ ChangeState(GetCellularNetwork(), PLAN_ACTIVATION_START, std::string());
+ EvaluateCellularNetwork(GetCellularNetwork());
}
}
void MobileSetupHandler::EvaluateCellularNetwork(
- const chromeos::CellularNetwork* network) {
+ chromeos::CellularNetwork* network) {
if (!dom_ui_)
return;
@@ -454,17 +448,20 @@
case PLAN_ACTIVATION_START:
if (network) {
switch (network->activation_state()) {
- case chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED:
case chromeos::ACTIVATION_STATE_ACTIVATED:
if (network->failed_or_disconnected()) {
- new_state = PLAN_ACTIVATION_ACTIVATING;
+ new_state = PLAN_ACTIVATION_RECONNECTING;
} else if (network->connection_state() == chromeos::STATE_READY) {
- new_state = network->restricted_pool() ?
- PLAN_ACTIVATION_SHOWING_PAYMENT : PLAN_ACTIVATION_DONE;
+ if (network->restricted_pool()) {
+ new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
+ } else {
+ new_state = PLAN_ACTIVATION_DONE;
+ }
}
break;
case chromeos::ACTIVATION_STATE_UNKNOWN:
case chromeos::ACTIVATION_STATE_NOT_ACTIVATED:
+ case chromeos::ACTIVATION_STATE_PARTIALLY_ACTIVATED:
if (network->failed_or_disconnected()) {
new_state = PLAN_ACTIVATION_INITIATING_ACTIVATION;
} else if (network->connected()) {
@@ -485,7 +482,7 @@
switch (network->activation_state()) {
case chromeos::ACTIVATION_STATE_ACTIVATED:
if (network->failed_or_disconnected()) {
- new_state = PLAN_ACTIVATION_ACTIVATING;
+ new_state = PLAN_ACTIVATION_RECONNECTING;
} else if (network->connection_state() == chromeos::STATE_READY) {
if (network->restricted_pool()) {
new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
@@ -498,7 +495,7 @@
if (network->connected())
new_state = PLAN_ACTIVATION_SHOWING_PAYMENT;
else
- new_state = PLAN_ACTIVATION_ACTIVATING;
+ new_state = PLAN_ACTIVATION_RECONNECTING;
break;
case chromeos::ACTIVATION_STATE_NOT_ACTIVATED:
// Wait in this state until activation state changes.
@@ -510,7 +507,7 @@
}
}
break;
- case PLAN_ACTIVATION_ACTIVATING:
+ case PLAN_ACTIVATION_RECONNECTING:
// Wait until the service shows up and gets activated.
if (network) {
switch (network->activation_state()) {
@@ -561,8 +558,8 @@
return "ACTIVATION_START";
case PLAN_ACTIVATION_INITIATING_ACTIVATION:
return "INITIATING_ACTIVATION";
- case PLAN_ACTIVATION_ACTIVATING :
- return "ACTIVATING";
+ case PLAN_ACTIVATION_RECONNECTING:
+ return "RECONNECTING";
case PLAN_ACTIVATION_SHOWING_PAYMENT:
return "SHOWING_PAYMENT";
case PLAN_ACTIVATION_DONE:
@@ -573,7 +570,26 @@
return "UNKNOWN";
}
-void MobileSetupHandler::ChangeState(const chromeos::CellularNetwork* network,
+
+void MobileSetupHandler::CompleteActivation(
+ chromeos::CellularNetwork* network) {
+ // Remove observers, we are done with this page.
+ chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()->
+ GetNetworkLibrary();
+ // If we have successfully activated the connection, set autoconnect flag.
+ if (network) {
+ network->set_auto_connect(true);
+ lib->SaveCellularNetwork(network);
+ }
+ lib->RemoveObserver(this);
+ lib->RemoveProperyObserver(this);
+ // Reactivate other types of connections if we have
+ // shut them down previously.
+ ReEnableOtherConnections();
+}
+
+
+void MobileSetupHandler::ChangeState(chromeos::CellularNetwork* network,
PlanActivationState new_state,
const std::string& error_description) {
static bool first_time = true;
@@ -586,7 +602,6 @@
state_ = new_state;
switch (new_state) {
case PLAN_ACTIVATION_START:
- DisableOtherConnections();
break;
case PLAN_ACTIVATION_INITIATING_ACTIVATION:
DCHECK(network);
@@ -594,7 +609,7 @@
if (!network->StartActivation())
new_state = PLAN_ACTIVATION_ERROR;
break;
- case PLAN_ACTIVATION_ACTIVATING: {
+ case PLAN_ACTIVATION_RECONNECTING: {
DCHECK(network);
if (network) {
chromeos::CrosLibrary::Get()->GetNetworkLibrary()->
@@ -607,19 +622,13 @@
case PLAN_ACTIVATION_SHOWING_PAYMENT:
// Fix for fix SSL for the walled gardens where cert chain verification
// might not work.
- // net::SSLConfigService::DisallowRevChecking();
break;
case PLAN_ACTIVATION_DONE:
+ DCHECK(network);
+ CompleteActivation(network);
+ break;
case PLAN_ACTIVATION_ERROR: {
- // net::SSLConfigService::AllowRevChecking();
- // Remove observers, we are done with this page.
- chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()->
- GetNetworkLibrary();
- lib->RemoveObserver(this);
- lib->RemoveProperyObserver(this);
- // Reactivate other types of connections if we have
- // shut them down previously.
- ReEnableOtherConnections();
+ CompleteActivation(NULL);
break;
}
default:
@@ -646,11 +655,38 @@
reenable_wifi_ = false;
lib->EnableCellularNetworkDevice(true);
}
+
+ PrefService* prefs = dom_ui_->GetProfile()->GetPrefs();
+ if (reenable_cert_check_) {
+ reenable_cert_check_ = false;
+ prefs->SetBoolean(prefs::kCertRevocationCheckingEnabled,
+ reenable_cert_check_);
+ }
}
-void MobileSetupHandler::DisableOtherConnections() {
+
+void MobileSetupHandler::SetupActivationProcess(
+ chromeos::CellularNetwork* network) {
+ if (!network)
+ return;
+
+ // Disable SSL cert checks since we will be doing this in
+ // restricted pool.
+ PrefService* prefs = dom_ui_->GetProfile()->GetPrefs();
+ if (!reenable_cert_check_ &&
+ prefs->GetBoolean(
+ prefs::kCertRevocationCheckingEnabled)) {
+ reenable_cert_check_ = true;
+ prefs->SetBoolean(prefs::kCertRevocationCheckingEnabled, false);
+ }
+
chromeos::NetworkLibrary* lib = chromeos::CrosLibrary::Get()->
GetNetworkLibrary();
+ // Disable autoconnect to cellular network.
+ network->set_auto_connect(false);
+ lib->SaveCellularNetwork(network);
+
+ // Disable ethernet and wifi.
if (!reenable_ethernet_ && lib->ethernet_enabled()) {
reenable_ethernet_ = true;
lib->EnableEthernetNetworkDevice(false);
@@ -661,6 +697,7 @@
}
}
+
bool MobileSetupHandler::GotActivationError(
const chromeos::CellularNetwork* network, std::string* error) {
if (!network)
« no previous file with comments | « no previous file | chrome/browser/resources/mobile_setup.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698