Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Side by Side Diff: webkit/glue/webkit_glue.cc

Issue 193074: Remove the hotmail UA spoofing hack.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 "config.h" 5 #include "config.h"
6 #include "webkit/glue/webkit_glue.h" 6 #include "webkit/glue/webkit_glue.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 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 287
288 namespace { 288 namespace {
289 289
290 struct UserAgentState { 290 struct UserAgentState {
291 UserAgentState() 291 UserAgentState()
292 : user_agent_requested(false), 292 : user_agent_requested(false),
293 user_agent_is_overridden(false) { 293 user_agent_is_overridden(false) {
294 } 294 }
295 295
296 std::string user_agent; 296 std::string user_agent;
297 std::string mimic_safari_user_agent;
298 bool user_agent_requested; 297 bool user_agent_requested;
299 bool user_agent_is_overridden; 298 bool user_agent_is_overridden;
300 }; 299 };
301 300
302 Singleton<UserAgentState> g_user_agent; 301 Singleton<UserAgentState> g_user_agent;
303 302
304 std::string BuildOSCpuInfo() { 303 std::string BuildOSCpuInfo() {
305 std::string os_cpu; 304 std::string os_cpu;
306 305
307 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) 306 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 #else 346 #else
348 "%s %s", 347 "%s %s",
349 unixinfo.sysname, // e.g. Linux 348 unixinfo.sysname, // e.g. Linux
350 cputype.c_str() // e.g. i686 349 cputype.c_str() // e.g. i686
351 #endif 350 #endif
352 ); 351 );
353 352
354 return os_cpu; 353 return os_cpu;
355 } 354 }
356 355
357 void BuildUserAgent(bool mimic_safari, std::string* result) { 356 void BuildUserAgent(std::string* result) {
358 const char kUserAgentPlatform[] = 357 const char kUserAgentPlatform[] =
359 #if defined(OS_WIN) 358 #if defined(OS_WIN)
360 "Windows"; 359 "Windows";
361 #elif defined(OS_MACOSX) 360 #elif defined(OS_MACOSX)
362 "Macintosh"; 361 "Macintosh";
363 #elif defined(OS_LINUX) 362 #elif defined(OS_LINUX)
364 "X11"; // strange, but that's what Firefox uses 363 "X11"; // strange, but that's what Firefox uses
365 #else 364 #else
366 "?"; 365 "?";
367 #endif 366 #endif
368 367
369 const char kUserAgentSecurity = 'U'; // "US" strength encryption 368 const char kUserAgentSecurity = 'U'; // "US" strength encryption
370 369
371 // TODO(port): figure out correct locale 370 // TODO(port): figure out correct locale
372 const char kUserAgentLocale[] = "en-US"; 371 const char kUserAgentLocale[] = "en-US";
373 372
374 // Get the product name and version, and replace Safari's Version/X string 373 // Get the product name and version, and replace Safari's Version/X string
375 // with it. This is done to expose our product name in a manner that is 374 // with it. This is done to expose our product name in a manner that is
376 // maximally compatible with Safari, we hope!! 375 // maximally compatible with Safari, we hope!!
377 std::string product; 376 std::string product;
378 377
379 if (!mimic_safari) { 378 scoped_ptr<FileVersionInfo> version_info(
380 scoped_ptr<FileVersionInfo> version_info( 379 FileVersionInfo::CreateFileVersionInfoForCurrentModule());
381 FileVersionInfo::CreateFileVersionInfoForCurrentModule()); 380 if (version_info.get()) {
382 if (version_info.get()) 381 product = "Chrome/" + WideToASCII(version_info->product_version());
383 product = "Chrome/" + WideToASCII(version_info->product_version()); 382 } else {
383 DLOG(WARNING) << "Unknown product version";
384 product = "Chrome/0.0.0.0";
384 } 385 }
385 386
386 if (product.empty())
387 product = "Version/3.2.1";
388
389 // Derived from Safari's UA string. 387 // Derived from Safari's UA string.
390 StringAppendF( 388 StringAppendF(
391 result, 389 result,
392 "Mozilla/5.0 (%s; %c; %s; %s) AppleWebKit/%d.%d" 390 "Mozilla/5.0 (%s; %c; %s; %s) AppleWebKit/%d.%d"
393 " (KHTML, like Gecko) %s Safari/%d.%d", 391 " (KHTML, like Gecko) %s Safari/%d.%d",
394 kUserAgentPlatform, 392 kUserAgentPlatform,
395 kUserAgentSecurity, 393 kUserAgentSecurity,
396 BuildOSCpuInfo().c_str(), 394 BuildOSCpuInfo().c_str(),
397 kUserAgentLocale, 395 kUserAgentLocale,
398 WEBKIT_VERSION_MAJOR, 396 WEBKIT_VERSION_MAJOR,
(...skipping 17 matching lines...) Expand all
416 "Setting the user agent after someone has " 414 "Setting the user agent after someone has "
417 "already requested it can result in unexpected behavior."; 415 "already requested it can result in unexpected behavior.";
418 g_user_agent->user_agent_is_overridden = true; 416 g_user_agent->user_agent_is_overridden = true;
419 g_user_agent->user_agent = new_user_agent; 417 g_user_agent->user_agent = new_user_agent;
420 } 418 }
421 419
422 const std::string& GetUserAgent(const GURL& url) { 420 const std::string& GetUserAgent(const GURL& url) {
423 if (g_user_agent->user_agent.empty()) 421 if (g_user_agent->user_agent.empty())
424 SetUserAgentToDefault(); 422 SetUserAgentToDefault();
425 g_user_agent->user_agent_requested = true; 423 g_user_agent->user_agent_requested = true;
426 if (!g_user_agent->user_agent_is_overridden) {
427 // For hotmail, we need to spoof as Safari (bug 4111).
428 if (MatchPattern(url.host(), "*.mail.live.com")) {
429 if (g_user_agent->mimic_safari_user_agent.empty())
430 BuildUserAgent(true, &g_user_agent->mimic_safari_user_agent);
431 return g_user_agent->mimic_safari_user_agent;
432 }
433 }
434 return g_user_agent->user_agent; 424 return g_user_agent->user_agent;
435 } 425 }
436 426
437 void SetForcefullyTerminatePluginProcess(bool value) { 427 void SetForcefullyTerminatePluginProcess(bool value) {
438 if (IsPluginRunningInRendererProcess()) { 428 if (IsPluginRunningInRendererProcess()) {
439 // Ignore this quirk when the plugins are not running in their own process. 429 // Ignore this quirk when the plugins are not running in their own process.
440 return; 430 return;
441 } 431 }
442 432
443 g_forcefully_terminate_plugin_process = value; 433 g_forcefully_terminate_plugin_process = value;
444 } 434 }
445 435
446 bool ShouldForcefullyTerminatePluginProcess() { 436 bool ShouldForcefullyTerminatePluginProcess() {
447 return g_forcefully_terminate_plugin_process; 437 return g_forcefully_terminate_plugin_process;
448 } 438 }
449 439
450 WebCanvas* ToWebCanvas(skia::PlatformCanvas* canvas) { 440 WebCanvas* ToWebCanvas(skia::PlatformCanvas* canvas) {
451 #if WEBKIT_USING_SKIA 441 #if WEBKIT_USING_SKIA
452 return canvas; 442 return canvas;
453 #elif WEBKIT_USING_CG 443 #elif WEBKIT_USING_CG
454 return canvas->getTopPlatformDevice().GetBitmapContext(); 444 return canvas->getTopPlatformDevice().GetBitmapContext();
455 #else 445 #else
456 NOTIMPLEMENTED(); 446 NOTIMPLEMENTED();
457 return NULL; 447 return NULL;
458 #endif 448 #endif
459 } 449 }
460 450
461 } // namespace webkit_glue 451 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698