| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/compiler_specific.h" | 5 #include "base/compiler_specific.h" |
| 6 #include "build/build_config.h" | 6 #include "build/build_config.h" |
| 7 | 7 |
| 8 #if defined(OS_WIN) | 8 #if defined(OS_WIN) |
| 9 #include <objidl.h> | 9 #include <objidl.h> |
| 10 #include <mlang.h> | 10 #include <mlang.h> |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "RenderTreeAsText.h" | 28 #include "RenderTreeAsText.h" |
| 29 #include "RenderView.h" | 29 #include "RenderView.h" |
| 30 #include "ScriptController.h" | 30 #include "ScriptController.h" |
| 31 #include "SharedBuffer.h" | 31 #include "SharedBuffer.h" |
| 32 MSVC_POP_WARNING(); | 32 MSVC_POP_WARNING(); |
| 33 | 33 |
| 34 #undef LOG | 34 #undef LOG |
| 35 #include "webkit/glue/webkit_glue.h" | 35 #include "webkit/glue/webkit_glue.h" |
| 36 | 36 |
| 37 #include "base/file_version_info.h" | 37 #include "base/file_version_info.h" |
| 38 #include "base/singleton.h" |
| 38 #include "base/string_util.h" | 39 #include "base/string_util.h" |
| 39 #include "skia/include/SkBitmap.h" | 40 #include "skia/include/SkBitmap.h" |
| 40 #include "webkit/glue/event_conversion.h" | 41 #include "webkit/glue/event_conversion.h" |
| 41 #include "webkit/glue/glue_util.h" | 42 #include "webkit/glue/glue_util.h" |
| 42 #include "webkit/glue/weburlrequest_impl.h" | 43 #include "webkit/glue/weburlrequest_impl.h" |
| 43 #include "webkit/glue/webframe_impl.h" | 44 #include "webkit/glue/webframe_impl.h" |
| 44 #include "webkit/glue/webview_impl.h" | 45 #include "webkit/glue/webview_impl.h" |
| 45 | 46 |
| 46 //------------------------------------------------------------------------------ | 47 //------------------------------------------------------------------------------ |
| 47 // webkit_glue impl: | 48 // webkit_glue impl: |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 return; | 310 return; |
| 310 delegate->OnNavStateChanged(webview); | 311 delegate->OnNavStateChanged(webview); |
| 311 } | 312 } |
| 312 | 313 |
| 313 std::string GetWebKitVersion() { | 314 std::string GetWebKitVersion() { |
| 314 return StringPrintf("%d.%d", WEBKIT_VERSION_MAJOR, WEBKIT_VERSION_MINOR); | 315 return StringPrintf("%d.%d", WEBKIT_VERSION_MAJOR, WEBKIT_VERSION_MINOR); |
| 315 } | 316 } |
| 316 | 317 |
| 317 namespace { | 318 namespace { |
| 318 | 319 |
| 319 const std::string* user_agent = NULL; | 320 struct UserAgentState { |
| 320 bool user_agent_requested = false; | 321 UserAgentState() |
| 321 bool user_agent_is_overridden = false; | 322 : user_agent_requested(false), |
| 323 user_agent_is_overridden(false) { |
| 324 } |
| 325 |
| 326 std::string user_agent; |
| 327 std::string mimic_safari_user_agent; |
| 328 bool user_agent_requested; |
| 329 bool user_agent_is_overridden; |
| 330 }; |
| 331 |
| 332 Singleton<UserAgentState> g_user_agent; |
| 322 | 333 |
| 323 void BuildUserAgent(bool mimic_safari, std::string* result) { | 334 void BuildUserAgent(bool mimic_safari, std::string* result) { |
| 324 #if defined(OS_WIN) || defined(OS_MACOSX) | 335 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 325 int32 os_major_version = 0; | 336 int32 os_major_version = 0; |
| 326 int32 os_minor_version = 0; | 337 int32 os_minor_version = 0; |
| 327 int32 os_bugfix_version = 0; | 338 int32 os_bugfix_version = 0; |
| 328 #if defined(OS_WIN) | 339 #if defined(OS_WIN) |
| 329 OSVERSIONINFO info = {0}; | 340 OSVERSIONINFO info = {0}; |
| 330 info.dwOSVersionInfoSize = sizeof(info); | 341 info.dwOSVersionInfoSize = sizeof(info); |
| 331 GetVersionEx(&info); | 342 GetVersionEx(&info); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 result, | 396 result, |
| 386 "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/525.13 " | 397 "Mozilla/5.0 (Linux; U; en-US) AppleWebKit/525.13 " |
| 387 "(KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13"); | 398 "(KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13"); |
| 388 #else | 399 #else |
| 389 // TODO(port): we need something like FileVersionInfo for our UA string. | 400 // TODO(port): we need something like FileVersionInfo for our UA string. |
| 390 NOTIMPLEMENTED(); | 401 NOTIMPLEMENTED(); |
| 391 #endif | 402 #endif |
| 392 } | 403 } |
| 393 | 404 |
| 394 void SetUserAgentToDefault() { | 405 void SetUserAgentToDefault() { |
| 395 static std::string default_user_agent; | 406 BuildUserAgent(false, &g_user_agent->user_agent); |
| 396 BuildUserAgent(false, &default_user_agent); | |
| 397 user_agent = &default_user_agent; | |
| 398 } | 407 } |
| 399 | 408 |
| 400 } // namespace | 409 } // namespace |
| 401 | 410 |
| 402 void SetUserAgent(const std::string& new_user_agent) { | 411 void SetUserAgent(const std::string& new_user_agent) { |
| 403 DCHECK(!user_agent_requested) << "Setting the user agent after someone has " | 412 // If you combine this with the previous line, the function only works the |
| 413 // first time. |
| 414 DCHECK(!g_user_agent->user_agent_requested) << |
| 415 "Setting the user agent after someone has " |
| 404 "already requested it can result in unexpected behavior."; | 416 "already requested it can result in unexpected behavior."; |
| 405 static std::string overridden_user_agent; | 417 g_user_agent->user_agent_is_overridden = true; |
| 406 overridden_user_agent = new_user_agent; // If you combine this with the | 418 g_user_agent->user_agent = new_user_agent; |
| 407 // previous line, the function only | |
| 408 // works the first time. | |
| 409 user_agent_is_overridden = true; | |
| 410 user_agent = &overridden_user_agent; | |
| 411 } | 419 } |
| 412 | 420 |
| 413 const std::string& GetUserAgent(const GURL& url) { | 421 const std::string& GetUserAgent(const GURL& url) { |
| 414 if (!user_agent) | 422 if (g_user_agent->user_agent.empty()) |
| 415 SetUserAgentToDefault(); | 423 SetUserAgentToDefault(); |
| 416 user_agent_requested = true; | 424 g_user_agent->user_agent_requested = true; |
| 417 if (!user_agent_is_overridden) { | 425 if (!g_user_agent->user_agent_is_overridden) { |
| 418 static std::string mimic_safari_user_agent; | |
| 419 // For hotmail, we need to spoof as Safari (bug 4111). | 426 // For hotmail, we need to spoof as Safari (bug 4111). |
| 420 if (MatchPattern(url.host(), "*.mail.live.com")) { | 427 if (MatchPattern(url.host(), "*.mail.live.com")) { |
| 421 if (mimic_safari_user_agent.empty()) | 428 if (g_user_agent->mimic_safari_user_agent.empty()) |
| 422 BuildUserAgent(true, &mimic_safari_user_agent); | 429 BuildUserAgent(true, &g_user_agent->mimic_safari_user_agent); |
| 423 return mimic_safari_user_agent; | 430 return g_user_agent->mimic_safari_user_agent; |
| 424 } | 431 } |
| 425 } | 432 } |
| 426 return *user_agent; | 433 return g_user_agent->user_agent; |
| 427 } | 434 } |
| 428 | 435 |
| 429 void NotifyJSOutOfMemory(WebCore::Frame* frame) { | 436 void NotifyJSOutOfMemory(WebCore::Frame* frame) { |
| 430 if (!frame) | 437 if (!frame) |
| 431 return; | 438 return; |
| 432 | 439 |
| 433 // Dispatch to the delegate of the view that owns the frame. | 440 // Dispatch to the delegate of the view that owns the frame. |
| 434 WebFrame* webframe = WebFrameImpl::FromFrame(frame); | 441 WebFrame* webframe = WebFrameImpl::FromFrame(frame); |
| 435 WebView* webview = webframe->GetView(); | 442 WebView* webview = webframe->GetView(); |
| 436 if (!webview) | 443 if (!webview) |
| (...skipping 11 matching lines...) Expand all Loading... |
| 448 } | 455 } |
| 449 | 456 |
| 450 g_forcefully_terminate_plugin_process = value; | 457 g_forcefully_terminate_plugin_process = value; |
| 451 } | 458 } |
| 452 | 459 |
| 453 bool ShouldForcefullyTerminatePluginProcess() { | 460 bool ShouldForcefullyTerminatePluginProcess() { |
| 454 return g_forcefully_terminate_plugin_process; | 461 return g_forcefully_terminate_plugin_process; |
| 455 } | 462 } |
| 456 | 463 |
| 457 } // namespace webkit_glue | 464 } // namespace webkit_glue |
| OLD | NEW |