Index: webkit/glue/webkit_glue.cc |
diff --git a/webkit/glue/webkit_glue.cc b/webkit/glue/webkit_glue.cc |
index 350ba29fababcfc2596f0977f4b6d69cfbd2e40d..45944fc58b10844cf203fcbca8474948c1dbb743 100644 |
--- a/webkit/glue/webkit_glue.cc |
+++ b/webkit/glue/webkit_glue.cc |
@@ -11,9 +11,9 @@ |
#include <sys/utsname.h> |
#endif |
+#include "base/lazy_instance.h" |
#include "base/logging.h" |
#include "base/scoped_ptr.h" |
-#include "base/singleton.h" |
#include "base/string_piece.h" |
#include "base/string_util.h" |
#include "base/stringprintf.h" |
@@ -356,10 +356,11 @@ struct UserAgentState { |
bool user_agent_is_overridden; |
}; |
-Singleton<UserAgentState> g_user_agent; |
+static base::LazyInstance<UserAgentState> g_user_agent( |
+ base::LINKER_INITIALIZED); |
void SetUserAgentToDefault() { |
- BuildUserAgent(false, &g_user_agent->user_agent); |
+ BuildUserAgent(false, &g_user_agent.Get().user_agent); |
} |
} // namespace |
@@ -367,31 +368,31 @@ void SetUserAgentToDefault() { |
void SetUserAgent(const std::string& new_user_agent) { |
// If you combine this with the previous line, the function only works the |
// first time. |
- DCHECK(!g_user_agent->user_agent_requested) << |
+ DCHECK(!g_user_agent.Get().user_agent_requested) << |
"Setting the user agent after someone has " |
"already requested it can result in unexpected behavior."; |
- g_user_agent->user_agent_is_overridden = true; |
- g_user_agent->user_agent = new_user_agent; |
+ g_user_agent.Get().user_agent_is_overridden = true; |
+ g_user_agent.Get().user_agent = new_user_agent; |
} |
const std::string& GetUserAgent(const GURL& url) { |
- if (g_user_agent->user_agent.empty()) |
+ if (g_user_agent.Get().user_agent.empty()) |
SetUserAgentToDefault(); |
- g_user_agent->user_agent_requested = true; |
- if (!g_user_agent->user_agent_is_overridden) { |
+ g_user_agent.Get().user_agent_requested = true; |
+ if (!g_user_agent.Get().user_agent_is_overridden) { |
// Workarounds for sites that use misguided UA sniffing. |
#if defined(OS_POSIX) && !defined(OS_MACOSX) |
if (MatchPattern(url.host(), "*.mail.yahoo.com")) { |
// mail.yahoo.com is ok with Windows Chrome but not Linux Chrome. |
// http://bugs.chromium.org/11136 |
// TODO(evanm): remove this if Yahoo fixes their sniffing. |
- if (g_user_agent->mimic_windows_user_agent.empty()) |
- BuildUserAgent(true, &g_user_agent->mimic_windows_user_agent); |
- return g_user_agent->mimic_windows_user_agent; |
+ if (g_user_agent.Get().mimic_windows_user_agent.empty()) |
+ BuildUserAgent(true, &g_user_agent.Get().mimic_windows_user_agent); |
+ return g_user_agent.Get().mimic_windows_user_agent; |
} |
#endif |
} |
- return g_user_agent->user_agent; |
+ return g_user_agent.Get().user_agent; |
} |
void SetForcefullyTerminatePluginProcess(bool value) { |