#include "config.h"
#include "UserAgentQt.h"
#include <QGuiApplication>
#include <wtf/text/CString.h>
#include <wtf/text/WTFString.h>
#if OS(WINDOWS)
#include <SystemInfo.h>
#endif // OS(WINDOWS)
namespace WebCore {
String UserAgentQt::standardUserAgent(const String &applicationNameForUserAgent, unsigned int webkitMajorVersion, unsigned int webkitMinorVersion)
{
static QString ua;
if (ua.isNull()) {
ua = QLatin1String("Mozilla/5.0 (%1%2%3) AppleWebKit/%4 (KHTML, like Gecko) %99 Safari/%5");
ua = ua.arg(QLatin1String(
#if OS(MAC_OS_X)
"Macintosh; "
#elif OS(WINDOWS)
""
#else
(QGuiApplication::platformName() == QLatin1String("xcb")) ? "X11; " : "Unknown; "
#endif
));
QString securityStrength;
#if defined(QT_NO_OPENSSL)
securityStrength = QLatin1String("N; ");
#endif
ua = ua.arg(securityStrength);
ua = ua.arg(QLatin1String(
#if OS(AIX)
"AIX"
#elif OS(WINDOWS)
windowsVersionForUAString().latin1().data()
#elif OS(MAC_OS_X)
#if CPU(X86) || CPU(X86_64)
"Intel Mac OS X"
#else
"PPC Mac OS X"
#endif
#elif OS(FREEBSD)
"FreeBSD"
#elif OS(HURD)
"GNU Hurd"
#elif OS(LINUX)
#if CPU(X86_64)
"Linux x86_64"
#elif CPU(X86)
"Linux i686"
#else
"Linux"
#endif
#elif OS(NETBSD)
"NetBSD"
#elif OS(OPENBSD)
"OpenBSD"
#elif OS(QNX)
"QNX"
#elif OS(SOLARIS)
"Sun Solaris"
#elif OS(UNIX) // FIXME Looks like all unix variants above are the only cases where OS_UNIX is set.
"UNIX BSD/SYSV system"
#else
"Unknown"
#endif
));
QString version = QString::number(webkitMajorVersion) + QLatin1Char('.') + QString::number(webkitMinorVersion);
ua = ua.arg(version, version);
}
QString appName;
if (applicationNameForUserAgent.isEmpty())
appName = QCoreApplication::applicationName();
else
appName = applicationNameForUserAgent;
if (!appName.isEmpty()) {
QString appVer = QCoreApplication::applicationVersion();
if (!appVer.isEmpty())
appName.append(QLatin1Char('/') + appVer);
} else {
appName = QLatin1String("Qt/") + QLatin1String(qVersion());
}
return ua.arg(appName);
}
}