internal void TransitionUpTo(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.Passive:
TransitionFromPassiveToLoaded();
Debug.Assert(this.ActiveXState == ActiveXHelper.ActiveXState.Loaded, "Failed transition");
this.ActiveXState = ActiveXHelper.ActiveXState.Loaded;
break;
case ActiveXHelper.ActiveXState.Loaded:
TransitionFromLoadedToRunning();
Debug.Assert(this.ActiveXState == ActiveXHelper.ActiveXState.Running, "Failed transition");
this.ActiveXState = ActiveXHelper.ActiveXState.Running;
break;
case ActiveXHelper.ActiveXState.Running:
TransitionFromRunningToInPlaceActive();
Debug.Assert(this.ActiveXState == ActiveXHelper.ActiveXState.InPlaceActive, "Failed transition");
this.ActiveXState = ActiveXHelper.ActiveXState.InPlaceActive;
break;
case ActiveXHelper.ActiveXState.InPlaceActive:
TransitionFromInPlaceActiveToUIActive();
Debug.Assert(this.ActiveXState == ActiveXHelper.ActiveXState.UIActive, "Failed transition");
this.ActiveXState = ActiveXHelper.ActiveXState.UIActive;
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);
}
}
}