The EKF's do not fall back through steps 0 to 2 as described above. They will use GPs and flow data simultaneously if both are available and the combination of GPS data used is always 3D velocity and 2D position unless the EK2/3_GPS_TYPE or EK2/3_ALT_SOURCE parameters have been modified.
The EKF2 and EKF3 needs a minimum reported GPS quality before it starts using GPS, but once it starts using GPS, it will continue to use it as long as there is a 3D lock but does adjust weighting according to the receivers reported accuracy.
Because there have been some changes in code over the past few months that could have modified behaviour, I have just run the following test on current master a pixhawk+px4flow+ lidarlite+UBlox8 combo:
1) Enabled EKF2 and 3, set the EK*_ IMU_MASK parameters to 1 and AHRS_EKF_TYPE to 3.
2) Set the GPS_DELAY to 100
3) Set GPS_TYPE to 0 to disable GPS
4) Rebooted and waited for both EKF's to report they were in relative position mode and using optical flow.
5) Set the home position to current location so that an absolute position estimate could be monitored over MAVLINK
6) Walked the test setup a few metres and back to the start point
7) Set GPS_TYPE = 2 and waited for both EKF's to report they were using GPS
8) Repeated 6)
9) Set GPS_TYPE = 0 and repeated 6)
10 Set GPS_TYPE = 2
This test showed that each time GPS was gained the EKF's local position reset to match the GPS, but when GPs was lost it continued to dead-reckon using optical flow. It also showed that optical flow fusion was used at all times and that the behaviour of EKF2 and 3 was identical. Here are the EKF2 and 3 optical flow and GPS position innovations from the test:
Here is the local position:
Both EKF's also reported the same solution status: