use of com.intellij.lang.javascript.flex.debug.FlexDebugRunner in project intellij-plugins by JetBrains.
the class FlexBaseRunner method doExecute.
@Override
@Nullable
protected RunContentDescriptor doExecute(@NotNull final RunProfileState state, @NotNull final ExecutionEnvironment env) throws ExecutionException {
FileDocumentManager.getInstance().saveAllDocuments();
final RunProfile runProfile = env.getRunProfile();
final boolean isDebug = this instanceof FlexDebugRunner;
try {
if (runProfile instanceof RunProfileWithCompileBeforeLaunchOption) {
checkMakeBeforeRunEnabled(env.getProject(), runProfile);
}
if (runProfile instanceof RemoteFlashRunConfiguration) {
final RemoteFlashRunnerParameters params = ((RemoteFlashRunConfiguration) runProfile).getRunnerParameters();
final Pair<Module, FlexBuildConfiguration> moduleAndBC = params.checkAndGetModuleAndBC(env.getProject());
if (params.getDebugTransport() == FlashRunnerParameters.AirMobileDebugTransport.USB) {
final Sdk sdk = moduleAndBC.second.getSdk();
assert sdk != null;
if (params.getRemoteDebugTarget() == RemoteDebugTarget.AndroidDevice) {
if (!AirPackageUtil.startAdbServer(env.getProject(), sdk) || !AirPackageUtil.scanAndroidDevices(env.getProject(), sdk, params) || !AirPackageUtil.androidForwardTcpPort(env.getProject(), sdk, params.getDeviceInfo(), params.getUsbDebugPort())) {
return null;
}
} else if (params.getRemoteDebugTarget() == RemoteDebugTarget.iOSDevice) {
final String adtVersion = AirPackageUtil.getAdtVersion(env.getProject(), sdk);
if (!AirPackageUtil.checkAdtVersionForPackaging(env.getProject(), adtVersion, "3.4", sdk.getName(), FlexBundle.message("air.ios.debug.via.usb.requires.3.4"))) {
return null;
}
if (!AirPackageUtil.scanIosDevices(env.getProject(), sdk, params)) {
return null;
}
final DeviceInfo device = params.getDeviceInfo();
final int deviceHandle = device == null ? -1 : device.IOS_HANDLE;
if (deviceHandle < 0) {
return null;
}
if (!AirPackageUtil.iosForwardTcpPort(env.getProject(), sdk, params.getUsbDebugPort(), deviceHandle)) {
return null;
}
}
}
return launchDebugProcess(moduleAndBC.first, moduleAndBC.second, params, env);
}
if (runProfile instanceof FlexUnitRunConfiguration) {
final FlexUnitRunnerParameters params = ((FlexUnitRunConfiguration) runProfile).getRunnerParameters();
final Pair<Module, FlexBuildConfiguration> moduleAndConfig = params.checkAndGetModuleAndBC(env.getProject());
final Module module = moduleAndConfig.first;
final FlexBuildConfiguration bc = moduleAndConfig.second;
if (bc.getTargetPlatform() == TargetPlatform.Web) {
FlashPlayerTrustUtil.updateTrustedStatus(module, bc, isDebug, params.isTrusted());
return launchWebFlexUnit(env.getProject(), env.getContentToReuse(), env, params, bc.getActualOutputFilePath());
} else {
return launchAirFlexUnit(env.getProject(), state, env.getContentToReuse(), env, params);
}
}
if (runProfile instanceof FlashRunConfiguration) {
final FlashRunnerParameters params = ((FlashRunConfiguration) runProfile).getRunnerParameters();
params.setDeviceInfo(null);
final Pair<Module, FlexBuildConfiguration> moduleAndConfig = params.checkAndGetModuleAndBC(env.getProject());
final Module module = moduleAndConfig.first;
final FlexBuildConfiguration bc = moduleAndConfig.second;
if (bc.isSkipCompile()) {
showBCCompilationSkippedWarning(module, bc);
}
if (isDebug && SystemInfo.isMac && bc.getTargetPlatform() == TargetPlatform.Web) {
checkDebuggerFromSdk4(env.getProject(), runProfile, params, bc);
}
if (bc.getTargetPlatform() == TargetPlatform.Web && !params.isLaunchUrl()) {
FlashPlayerTrustUtil.updateTrustedStatus(module, bc, isDebug, params.isRunTrusted());
}
return launchFlexConfig(module, bc, params, state, env.getContentToReuse(), env);
}
} catch (RuntimeConfigurationError e) {
throw new ExecutionException(e.getMessage());
}
return null;
}
Aggregations