• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 package org.chromium.net.impl;
6 
7 import android.os.Build;
8 
9 import java.util.Locale;
10 
11 /** Constructs a User-Agent string. */
12 public final class UserAgent {
13 
UserAgent()14     private UserAgent() {}
15 
16     /**
17      * Returns a default User-Agent string including  system build version, model and Id,
18      * and Cronet version.
19      */
getDefault()20     public static String getDefault() {
21         return UserAgentsHolder.DEFAULT_USER_AGENT;
22     }
23 
24     /**
25      * Returns default QUIC User Agent Id string including the Cronet version.
26      */
getDefaultQuicUserAgentId()27     static String getDefaultQuicUserAgentId() {
28         return UserAgentsHolder.DEFAULT_QUIC_USER_AGENT;
29     }
30 
31     private static class UserAgentsHolder {
32         static final String DEFAULT_USER_AGENT = createDefaultUserAgent();
33         static final String DEFAULT_QUIC_USER_AGENT = createDefaultQuicUserAgent();
34 
createDefaultQuicUserAgent()35         private static String createDefaultQuicUserAgent() {
36             StringBuilder builder = new StringBuilder();
37 
38             // Application name and cronet version.
39             builder.append("AndroidHttpClient");
40             appendCronetVersion(builder);
41 
42             return builder.toString();
43         }
44 
createDefaultUserAgent()45         private static String createDefaultUserAgent() {
46             StringBuilder builder = new StringBuilder();
47 
48             // Our package name and version.
49             builder.append("AndroidHttpClient");
50 
51             // The platform version.
52             builder.append(" (Linux; U; Android ");
53             builder.append(Build.VERSION.RELEASE);
54             builder.append("; ");
55             builder.append(Locale.getDefault().toString());
56 
57             String model = Build.MODEL;
58             if (model.length() > 0) {
59                 builder.append("; ");
60                 builder.append(model);
61             }
62 
63             String id = Build.ID;
64             if (id.length() > 0) {
65                 builder.append("; Build/");
66                 builder.append(id);
67             }
68 
69             builder.append(";");
70             appendCronetVersion(builder);
71 
72             builder.append(')');
73 
74             return builder.toString();
75         }
76 
appendCronetVersion(StringBuilder builder)77         private static void appendCronetVersion(StringBuilder builder) {
78             builder.append(" Cronet/");
79             builder.append(ImplVersion.getCronetVersion());
80         }
81     }
82 }
83