Cellular Activation (and Chrome/CrOS network management API)

ActivateCellular (network_menu.cc)
-> ash::Shell::GetInstance()->delegate()->OpenMobileSetup(cellular->service_path())
   -> MobileSetupDialog::Show(service_path)                  [if kEnableMobileSetupDialog]
      -> MobileSetupDialogDelegate::GetInstance()->ShowDialog(service_path)
         -> MobileSetupDialogDelegate::GetDialogContentURL   [presumably]
            // returns chrome::kChromeUIMobileSetupURL + service_path_
   -> browser->OpenURL(chrome::kChromeUIMobileSetupURL)      [otherwise; resolves to chrome://mobilesetup]

MobileActivator::SetTransactionStatus (mobile_activator.cc)
-> StartOTASP
   -> EvaluateCellularNetwork

MobileActivator::OnNetworkManagerChanged (mobile_activator.cc)
-> EvaluateCellularNetwork

MobileActivator::OnNetworkChanged (mobile_activator.cc)
-> EvaluateCellularNetwork

MobileActivator::StartActivation
-> EvaluateCelluarNetwork

Who calls OnNetworkManagerChanged?
- NetworkLibraryImplBase::NotifyNetworkManagerChanged
  -> NetworkLibraryImplBase::SignalNetworkManagerObservers
- NetworkMessageObserver::NetworkMessageObserver
- AshSystemTrayDelegate
- NetworkMenuButton
- NetworkScreen

MobileActivator::ChangeState (mobile_activator.cc)
-> FOR_EACH_OBSERVER(Observer, observers_, OnActivationStateChanged(network, state_, error_description));
   -> MobileSetupHandler::OnActivationStateChanged (mobile_seutp_ui.cc) [presumably]
      -> web_ui()->CallJavascriptFunction(kJsDeviceStatusChangedCallback, device_dict)
         -> mobile.MobileSetup.deviceStateChanged (mobile_setup.js)
            -> updateDeviceStatus_
               -> changeState_
                  -> stopSpinner_ [if PLAN_ACTIVATION_DONE]

---
MobileSetupDialogDelegate::OnActivationStateChanged (mobile_setup_dialog.cc)
// does nothing

chromeos.connectionManager.setTransactionStatus (connection_manager.js)
-> reportTransactionStatus_
   -> postMessage(msg, 'chrome://mobilesetup')
      // seems to be billing related. see onMessageReceived_ in mobile_setup.js

NetworkLoginObserver
// The network login observer reshows a login dialog if there was an error.

NetworkMessageObserver
// The network message observer displays a system notification for network
// messages.

NetworkLibrary interface declarations
- NetworkManagerObserver::OnNetworkManagerChanged
- NetworkObserver::OnNetworkChanged
- NetworkDeviceObserver::OnNetworkDeviceChanged
- NetworkDeviceObserver::OnNetworkDeviceFoundNetworks
- NetworkDeviceObserver::OnNetworkDeviceSimLockChanged
- CellularDataPlanObserver::OnCellularDataPlanChanged
- PinOperationObserver::OnPinOperationCompleted
- UserActionObserver::OnConnectionInitiated

NetworkLibraryImplCros::NetworkManagerStatusChangedHandler
NetworkLibraryImplCros::NetworkManagerUpdate
-> NetworkManagerStatusChanged
   -> NotifyNetworkManagerChanged [ONLY for PROPERTY_INDEX_OFFLINE_MODE]

CrosMonitorNetworkManagerProperties
-> new NetworkManagerPropertiesWatcher
   -> DBusThreadManager::Get()->GetFlimflamManagerClient()->SetPropertyChangedHandler

NetworkLibraryImplCros::UpdateNetworkStatus
-> NotifyNetworkManagerChanged

NetworkLibraryImplCros::UpdateTechnologies
-> NotifyNetworkManagerChanged

NetworkLibraryImplCros::ParseNetwork
-> NotifyNetworkManagerChanged

NetworkLibraryImplCros::ParseNetworkDevice
-> NotifyNetworkManagerChanged

AshSystemTrayDelegate: updates status icons
---
Network::SetState (network_library.cc)
// processes state change events from connection manager
Comments