Issue to be addressed:
In radioRestart() method in CdmaDataConnectionTracker, if the radio is
restarted right after cleaning up connection, it is possible that the
connection setup request triggered by radio-on may happen before the
connection cleanup has been completed so that the connection may not
be set up correctly after the radio is restarted. The end result could
be that the phone lost the data capability.
The patch includes the following changes:
1) Add EVENT_RESTART_RADIO in DataConnectionTracker.
2) In CdmaDataConnectionTracker, method restartRadio(), send a message
delayed by 20s, the purpose of which is to wait for connection cleanup
to be completed, then to restart radio.
3) In CdmaDataConnectionTracker, method trySetupData(), don't try to setup
data if there is pending message to restart radio.
Addtional notes:
A system property is not used to config the delayed timer because we
think this fix is to address the unusual error case and waiting for
long time should not impact user experience much. 12s is the longest
time to complete the data cleanup as we have seen so far, so we are
using a 20s timer.