summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authortommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-27 17:13:06 +0000
committertommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-27 17:13:06 +0000
commit7c7b8150179a97ff76425a8c05ecfeaa4a42136a (patch)
treec55cb2613086110b6e1e0c0fdd03293d3e5aac73 /webkit
parent08ba16f7dade0fc671cf014d1754cfef07a1f530 (diff)
downloadchromium_src-7c7b8150179a97ff76425a8c05ecfeaa4a42136a.zip
chromium_src-7c7b8150179a97ff76425a8c05ecfeaa4a42136a.tar.gz
chromium_src-7c7b8150179a97ff76425a8c05ecfeaa4a42136a.tar.bz2
Factoring BuildUserAgent out to a separate lib for GCF can use it.
TEST=There should be no functional change. If anything breaks it should be the build. BUG=50788 Review URL: http://codereview.chromium.org/3214005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57692 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/glue/user_agent.cc115
-rw-r--r--webkit/glue/user_agent.h25
-rw-r--r--webkit/glue/webkit_glue.cc96
-rw-r--r--webkit/glue/webkit_glue.gypi43
4 files changed, 173 insertions, 106 deletions
diff --git a/webkit/glue/user_agent.cc b/webkit/glue/user_agent.cc
new file mode 100644
index 0000000..e77b84d
--- /dev/null
+++ b/webkit/glue/user_agent.cc
@@ -0,0 +1,115 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "webkit/glue/user_agent.h"
+
+#if defined(OS_POSIX) && !defined(OS_MACOSX)
+#include <sys/utsname.h>
+#endif
+
+#include "base/string_util.h"
+#include "base/sys_info.h"
+
+// Generated
+#include "webkit_version.h" // NOLINT
+
+namespace webkit_glue {
+
+// Forward declare GetProductVersionInfo. This is implemented in
+// renderer_glue.cc as part of the renderer lib.
+std::string GetProductVersion();
+
+std::string BuildOSCpuInfo() {
+ std::string os_cpu;
+
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
+ int32 os_major_version = 0;
+ int32 os_minor_version = 0;
+ int32 os_bugfix_version = 0;
+ base::SysInfo::OperatingSystemVersionNumbers(&os_major_version,
+ &os_minor_version,
+ &os_bugfix_version);
+#endif
+#if defined(OS_POSIX) && !defined(OS_MACOSX)
+ // Should work on any Posix system.
+ struct utsname unixinfo;
+ uname(&unixinfo);
+
+ std::string cputype;
+ // special case for biarch systems
+ if (strcmp(unixinfo.machine, "x86_64") == 0 &&
+ sizeof(void*) == sizeof(int32)) { // NOLINT
+ cputype.assign("i686 (x86_64)");
+ } else {
+ cputype.assign(unixinfo.machine);
+ }
+#endif
+
+ StringAppendF(
+ &os_cpu,
+#if defined(OS_WIN)
+ "Windows NT %d.%d",
+ os_major_version,
+ os_minor_version
+#elif defined(OS_MACOSX)
+ "Intel Mac OS X %d_%d_%d",
+ os_major_version,
+ os_minor_version,
+ os_bugfix_version
+#elif defined(OS_CHROMEOS)
+ "CrOS %s %d.%d.%d",
+ cputype.c_str(), // e.g. i686
+ os_major_version,
+ os_minor_version,
+ os_bugfix_version
+#else
+ "%s %s",
+ unixinfo.sysname, // e.g. Linux
+ cputype.c_str() // e.g. i686
+#endif
+ ); // NOLINT
+
+ return os_cpu;
+}
+
+void BuildUserAgent(bool mimic_windows, std::string* result) {
+ const char kUserAgentPlatform[] =
+#if defined(OS_WIN)
+ "Windows";
+#elif defined(OS_MACOSX)
+ "Macintosh";
+#elif defined(USE_X11)
+ "X11"; // strange, but that's what Firefox uses
+#else
+ "?";
+#endif
+
+ const char kUserAgentSecurity = 'U'; // "US" strength encryption
+
+ // TODO(port): figure out correct locale
+ const char kUserAgentLocale[] = "en-US";
+
+ // Get the product name and version, and replace Safari's Version/X string
+ // with it. This is done to expose our product name in a manner that is
+ // maximally compatible with Safari, we hope!!
+ std::string product = GetProductVersion();
+
+ // Derived from Safari's UA string.
+ StringAppendF(
+ result,
+ "Mozilla/5.0 (%s; %c; %s; %s) AppleWebKit/%d.%d"
+ " (KHTML, like Gecko) %s Safari/%d.%d",
+ mimic_windows ? "Windows" : kUserAgentPlatform,
+ kUserAgentSecurity,
+ ((mimic_windows ? "Windows " : "") + BuildOSCpuInfo()).c_str(),
+ kUserAgentLocale,
+ WEBKIT_VERSION_MAJOR,
+ WEBKIT_VERSION_MINOR,
+ product.c_str(),
+ WEBKIT_VERSION_MAJOR,
+ WEBKIT_VERSION_MINOR);
+}
+
+} // namespace webkit_glue
+
diff --git a/webkit/glue/user_agent.h b/webkit/glue/user_agent.h
new file mode 100644
index 0000000..914c5e68
--- /dev/null
+++ b/webkit/glue/user_agent.h
@@ -0,0 +1,25 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WEBKIT_GLUE_USER_AGENT_H_
+#define WEBKIT_GLUE_USER_AGENT_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+
+namespace webkit_glue {
+
+// Construct the User-Agent header, filling in |result|.
+// The other parameters are workarounds for broken websites:
+// - If mimic_windows is true, produce a fake Windows Chrome string.
+void BuildUserAgent(bool mimic_windows, std::string* result);
+
+// Builds a User-agent compatible string that describes the OS and CPU type.
+std::string BuildOSCpuInfo();
+
+} // namespace webkit_glue
+
+#endif // WEBKIT_GLUE_USER_AGENT_H_
+
diff --git a/webkit/glue/webkit_glue.cc b/webkit/glue/webkit_glue.cc
index f6fadfe..cc7c118 100644
--- a/webkit/glue/webkit_glue.cc
+++ b/webkit/glue/webkit_glue.cc
@@ -41,6 +41,7 @@
#include "third_party/WebKit/WebKit/chromium/public/win/WebInputEventFactory.h"
#endif
#include "webkit/glue/glue_serialize.h"
+#include "webkit/glue/user_agent.h"
#include "v8/include/v8.h"
#include "webkit_version.h" // Generated
@@ -336,101 +337,6 @@ struct UserAgentState {
Singleton<UserAgentState> g_user_agent;
-std::string BuildOSCpuInfo() {
- std::string os_cpu;
-
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
- int32 os_major_version = 0;
- int32 os_minor_version = 0;
- int32 os_bugfix_version = 0;
- base::SysInfo::OperatingSystemVersionNumbers(&os_major_version,
- &os_minor_version,
- &os_bugfix_version);
-#endif
-#if defined(OS_POSIX) && !defined(OS_MACOSX)
- // Should work on any Posix system.
- struct utsname unixinfo;
- uname(&unixinfo);
-
- std::string cputype;
- // special case for biarch systems
- if (strcmp(unixinfo.machine, "x86_64") == 0 &&
- sizeof(void*) == sizeof(int32)) {
- cputype.assign("i686 (x86_64)");
- } else {
- cputype.assign(unixinfo.machine);
- }
-#endif
-
- StringAppendF(
- &os_cpu,
-#if defined(OS_WIN)
- "Windows NT %d.%d",
- os_major_version,
- os_minor_version
-#elif defined(OS_MACOSX)
- "Intel Mac OS X %d_%d_%d",
- os_major_version,
- os_minor_version,
- os_bugfix_version
-#elif defined(OS_CHROMEOS)
- "CrOS %s %d.%d.%d",
- cputype.c_str(), // e.g. i686
- os_major_version,
- os_minor_version,
- os_bugfix_version
-#else
- "%s %s",
- unixinfo.sysname, // e.g. Linux
- cputype.c_str() // e.g. i686
-#endif
- );
-
- return os_cpu;
-}
-
-// Construct the User-Agent header, filling in |result|.
-// The other parameters are workarounds for broken websites:
-// - If mimic_windows is true, produce a fake Windows Chrome string.
-void BuildUserAgent(bool mimic_windows, std::string* result) {
- const char kUserAgentPlatform[] =
-#if defined(OS_WIN)
- "Windows";
-#elif defined(OS_MACOSX)
- "Macintosh";
-#elif defined(USE_X11)
- "X11"; // strange, but that's what Firefox uses
-#else
- "?";
-#endif
-
- const char kUserAgentSecurity = 'U'; // "US" strength encryption
-
- // TODO(port): figure out correct locale
- const char kUserAgentLocale[] = "en-US";
-
- // Get the product name and version, and replace Safari's Version/X string
- // with it. This is done to expose our product name in a manner that is
- // maximally compatible with Safari, we hope!!
- std::string product = GetProductVersion();
-
- // Derived from Safari's UA string.
- StringAppendF(
- result,
- "Mozilla/5.0 (%s; %c; %s; %s) AppleWebKit/%d.%d"
- " (KHTML, like Gecko) %s Safari/%d.%d",
- mimic_windows ? "Windows" : kUserAgentPlatform,
- kUserAgentSecurity,
- ((mimic_windows ? "Windows " : "") + BuildOSCpuInfo()).c_str(),
- kUserAgentLocale,
- WEBKIT_VERSION_MAJOR,
- WEBKIT_VERSION_MINOR,
- product.c_str(),
- WEBKIT_VERSION_MAJOR,
- WEBKIT_VERSION_MINOR
- );
-}
-
void SetUserAgentToDefault() {
BuildUserAgent(false, &g_user_agent->user_agent);
}
diff --git a/webkit/glue/webkit_glue.gypi b/webkit/glue/webkit_glue.gypi
index 450a870..a23ed53 100644
--- a/webkit/glue/webkit_glue.gypi
+++ b/webkit/glue/webkit_glue.gypi
@@ -105,6 +105,37 @@
],
},
{
+ 'target_name': 'webkit_user_agent',
+ 'type': '<(library)',
+ 'msvs_guid': 'DB162DE1-7D56-4C4A-8A9F-80D396CD7AA8',
+ 'dependencies': [
+ '<(DEPTH)/app/app.gyp:app_base',
+ '<(DEPTH)/base/base.gyp:base_i18n',
+ ],
+ 'actions': [
+ {
+ 'action_name': 'webkit_version',
+ 'inputs': [
+ '../build/webkit_version.py',
+ '<(webkit_src_dir)/WebCore/Configurations/Version.xcconfig',
+ ],
+ 'outputs': [
+ '<(INTERMEDIATE_DIR)/webkit_version.h',
+ ],
+ 'action': ['python', '<@(_inputs)', '<(INTERMEDIATE_DIR)'],
+ },
+ ],
+ 'include_dirs': [
+ '<(INTERMEDIATE_DIR)',
+ ],
+ 'sources': [
+ 'user_agent.cc',
+ 'user_agent.h',
+ ],
+ 'conditions': [
+ ],
+ },
+ {
'target_name': 'glue',
'type': '<(library)',
'msvs_guid': 'C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09',
@@ -121,19 +152,9 @@
'<(DEPTH)/third_party/ppapi/ppapi.gyp:ppapi_c',
'webkit_resources',
'webkit_strings',
+ 'webkit_user_agent',
],
'actions': [
- {
- 'action_name': 'webkit_version',
- 'inputs': [
- '../build/webkit_version.py',
- '<(webkit_src_dir)/WebCore/Configurations/Version.xcconfig',
- ],
- 'outputs': [
- '<(INTERMEDIATE_DIR)/webkit_version.h',
- ],
- 'action': ['python', '<@(_inputs)', '<(INTERMEDIATE_DIR)'],
- },
],
'include_dirs': [
'<(INTERMEDIATE_DIR)',