blob: a5af9cc22ef7d3a408b5473130341a652294ab79 [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.net.impl;
import android.os.Build;
import java.util.Locale;
/** Constructs a User-Agent string. */
public final class UserAgent {
private UserAgent() {}
/**
* Returns a default User-Agent string including system build version, model and Id,
* and Cronet version.
*/
public static String getDefault() {
return UserAgentsHolder.DEFAULT_USER_AGENT;
}
/**
* Returns default QUIC User Agent Id string including the Cronet version.
*/
static String getDefaultQuicUserAgentId() {
return UserAgentsHolder.DEFAULT_QUIC_USER_AGENT;
}
private static class UserAgentsHolder {
static final String DEFAULT_USER_AGENT = createDefaultUserAgent();
static final String DEFAULT_QUIC_USER_AGENT = createDefaultQuicUserAgent();
private static String createDefaultQuicUserAgent() {
StringBuilder builder = new StringBuilder();
// Application name and cronet version.
builder.append("AndroidHttpClient");
appendCronetVersion(builder);
return builder.toString();
}
private static String createDefaultUserAgent() {
StringBuilder builder = new StringBuilder();
// Our package name and version.
builder.append("AndroidHttpClient");
// The platform version.
builder.append(" (Linux; U; Android ");
builder.append(Build.VERSION.RELEASE);
builder.append("; ");
builder.append(Locale.getDefault().toString());
String model = Build.MODEL;
if (model.length() > 0) {
builder.append("; ");
builder.append(model);
}
String id = Build.ID;
if (id.length() > 0) {
builder.append("; Build/");
builder.append(id);
}
builder.append(";");
appendCronetVersion(builder);
builder.append(')');
return builder.toString();
}
private static void appendCronetVersion(StringBuilder builder) {
builder.append(" Cronet/");
builder.append(ImplVersion.getCronetVersion());
}
}
}