| Index: webkit/glue/webkit_glue.cc
|
| diff --git a/webkit/glue/webkit_glue.cc b/webkit/glue/webkit_glue.cc
|
| index 1d8930577160eccdc754a36141b5232720b21494..25c991322dbc3ccc3cadc6464fda55cd30c1a342 100644
|
| --- a/webkit/glue/webkit_glue.cc
|
| +++ b/webkit/glue/webkit_glue.cc
|
| @@ -344,6 +344,7 @@ class UserAgentState {
|
| ~UserAgentState();
|
|
|
| void Set(const std::string& user_agent, bool overriding);
|
| + void Reset(const std::string& user_agent, bool overriding);
|
| const std::string& Get(const GURL& url) const;
|
|
|
| private:
|
| @@ -375,9 +376,16 @@ void UserAgentState::Set(const std::string& user_agent, bool overriding) {
|
| // given g_user_agent is a global.
|
| return;
|
| }
|
| - DCHECK(!user_agent.empty());
|
| DCHECK(!user_agent_requested_) << "Setting the user agent after someone has "
|
| "already requested it can result in unexpected behavior.";
|
| + lock_.Release();
|
| + UserAgentState::Reset(user_agent, overriding);
|
| + lock_.Acquire();
|
| +}
|
| +
|
| +void UserAgentState::Reset(const std::string& user_agent, bool overriding) {
|
| + base::AutoLock auto_lock(lock_);
|
| + DCHECK(!user_agent.empty());
|
| user_agent_is_overridden_ = overriding;
|
| user_agent_ = user_agent;
|
| }
|
| @@ -417,6 +425,10 @@ void SetUserAgent(const std::string& user_agent, bool overriding) {
|
| g_user_agent.Get().Set(user_agent, overriding);
|
| }
|
|
|
| +void ResetUserAgent(const std::string& user_agent, bool overriding) {
|
| + g_user_agent.Get().Reset(user_agent, overriding);
|
| +}
|
| +
|
| const std::string& GetUserAgent(const GURL& url) {
|
| return g_user_agent.Get().Get(url);
|
| }
|
|
|