package org.ovirt.engine.ui.common.utils;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.queries.ConfigurationValues;
import org.ovirt.engine.core.compat.StringHelper;
import org.ovirt.engine.ui.common.uicommon.ClientAgentType;
import org.ovirt.engine.ui.uicommonweb.Configurator;
import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
import org.ovirt.engine.ui.uicommonweb.models.ConsoleProtocol;
import com.google.inject.Inject;
public class ConsoleUtilsImpl implements ConsoleUtils {
private final ClientAgentType clientAgentType;
private final Configurator configurator;
@Inject
public ConsoleUtilsImpl(Configurator configurator, ClientAgentType clientAgentType) {
this.configurator = configurator;
this.clientAgentType = clientAgentType;
}
@Override
public boolean isSpiceProxyDefined(VM vm) {
return !StringHelper.isNullOrEmpty((String) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.SpiceProxyDefault)) ||
!StringHelper.isNullOrEmpty(vm.getClusterSpiceProxy()) ||
!StringHelper.isNullOrEmpty(vm.getVmPoolSpiceProxy());
}
/**
* HTML5-based console clients are only supported when websocket proxy is configured in the engine and run on
* browsers that support postMessage correctly.
* @return true if HTML5 console clients can be used with current engine configuration and client browser.
*/
@Override
public boolean webBasedClientsSupported() {
return configurator.isWebSocketProxyDefined() && !configurator.isClientWindowsExplorer();
}
@Override
public boolean isBrowserPluginSupported(ConsoleProtocol protocol) {
switch (protocol) {
case RDP:
if ((clientAgentType.os.equalsIgnoreCase("Windows")//$NON-NLS-1$
&& clientAgentType.isIE()
&& (clientAgentType.version >= 7.0))
|| clientAgentType.isIE11()) {
return true;
}
return false;
default:
return false;
}
}
public boolean isIE11() {
return clientAgentType.isIE11();
}
}