internal void TransitionDownTo(ActiveXHelper.ActiveXState state)
{
if (!this.GetAxHostState(ActiveXHelper.inTransition))
{
this.SetAxHostState(ActiveXHelper.inTransition, true);
try
{
ActiveXHelper.ActiveXState oldState;
while (state < this.ActiveXState)
{
oldState = this.ActiveXState;
switch (this.ActiveXState)
{
case ActiveXHelper.ActiveXState.Open:
Debug.Fail("how did we ever get into the open state?");
this.ActiveXState = ActiveXHelper.ActiveXState.UIActive;
break;
case ActiveXHelper.ActiveXState.UIActive:
TransitionFromUIActiveToInPlaceActive();
Debug.Assert(this.ActiveXState == ActiveXHelper.ActiveXState.InPlaceActive, "Failed transition");
this.ActiveXState = ActiveXHelper.ActiveXState.InPlaceActive;
break;
case ActiveXHelper.ActiveXState.InPlaceActive:
TransitionFromInPlaceActiveToRunning();
Debug.Assert(this.ActiveXState == ActiveXHelper.ActiveXState.Running, "Failed transition");
this.ActiveXState = ActiveXHelper.ActiveXState.Running;
break;
case ActiveXHelper.ActiveXState.Running:
TransitionFromRunningToLoaded();
Debug.Assert(this.ActiveXState == ActiveXHelper.ActiveXState.Loaded, "Failed transition");
this.ActiveXState = ActiveXHelper.ActiveXState.Loaded;
break;
case ActiveXHelper.ActiveXState.Loaded:
TransitionFromLoadedToPassive();
Debug.Assert(this.ActiveXState == ActiveXHelper.ActiveXState.Passive, "Failed transition");
this.ActiveXState = ActiveXHelper.ActiveXState.Passive;
break;
default:
Debug.Fail("bad state");
this.ActiveXState = this.ActiveXState - 1; // To exit the loop
break;
}
OnActiveXStateChange((int)oldState, (int)this.ActiveXState);
}
}
finally
{
this.SetAxHostState(ActiveXHelper.inTransition, false);
}
}
}