summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--webkit/glue/webkit_glue.cc66
1 files changed, 53 insertions, 13 deletions
diff --git a/webkit/glue/webkit_glue.cc b/webkit/glue/webkit_glue.cc
index 5e47fe4..ef2702a 100644
--- a/webkit/glue/webkit_glue.cc
+++ b/webkit/glue/webkit_glue.cc
@@ -350,8 +350,8 @@ class UserAgentState {
private:
mutable std::string user_agent_;
- // The UA string when we're pretending to be Mac Safari.
- mutable std::string mimic_mac_safari_user_agent_;
+ // The UA string when we're pretending to be Mac Safari or Win Firefox.
+ mutable std::string user_agent_for_spoofing_hack_;
mutable bool user_agent_requested_;
bool user_agent_is_overridden_;
@@ -384,6 +384,44 @@ void UserAgentState::Set(const std::string& user_agent, bool overriding) {
user_agent_ = user_agent;
}
+bool IsMicrosoftSiteThatNeedsSpoofingForSilverlight(const GURL& url) {
+#if defined(OS_MACOSX)
+ // The landing page for updating Silverlight gives a confusing experience
+ // in browsers that Silverlight doesn't officially support; spoof as
+ // Safari to reduce the chance that users won't complete updates.
+ // Should be removed if the sniffing is removed: http://crbug.com/88211
+ if (url.host() == "www.microsoft.com" &&
+ StartsWithASCII(url.path(), "/getsilverlight", false)) {
+ return true;
+ }
+#endif
+ return false;
+}
+
+bool IsYahooSiteThatNeedsSpoofingForSilverlight(const GURL& url) {
+ // The following Yahoo! JAPAN pages erroneously judge that Silverlight does
+ // not support Chromium. Until the pages are fixed, spoof the UA.
+ // http://crbug.com/104426
+ if (url.host() == "headlines.yahoo.co.jp" &&
+ StartsWithASCII(url.path(), "/videonews/", true)) {
+ return true;
+ }
+#if defined(OS_MACOSX)
+ if ((url.host() == "downloads.yahoo.co.jp" &&
+ StartsWithASCII(url.path(), "/docs/silverlight/", true)) ||
+ url.host() == "gyao.yahoo.co.jp") {
+ return true;
+ }
+#elif defined(OS_WIN)
+ if ((url.host() == "weather.yahoo.co.jp" &&
+ StartsWithASCII(url.path(), "/weather/zoomradar/", true)) ||
+ url.host() == "promotion.shopping.yahoo.co.jp") {
+ return true;
+ }
+#endif
+ return false;
+}
+
const std::string& UserAgentState::Get(const GURL& url) const {
base::AutoLock auto_lock(lock_);
user_agent_requested_ = true;
@@ -392,20 +430,22 @@ const std::string& UserAgentState::Get(const GURL& url) const {
// Workarounds for sites that use misguided UA sniffing.
if (!user_agent_is_overridden_) {
+ if (IsMicrosoftSiteThatNeedsSpoofingForSilverlight(url) ||
+ IsYahooSiteThatNeedsSpoofingForSilverlight(url)) {
+ if (user_agent_for_spoofing_hack_.empty()) {
#if defined(OS_MACOSX)
- if (url.host() == "www.microsoft.com" &&
- StartsWithASCII(url.path(), "/getsilverlight", false)) {
- // The landing page for updating Silverlight gives a confusing experience
- // in browsers that Silverlight doesn't officially support; spoof as
- // Safari to reduce the chance that users won't complete updates.
- // Should be removed if the sniffing is removed: http://crbug.com/88211
- if (mimic_mac_safari_user_agent_.empty()) {
- mimic_mac_safari_user_agent_ =
- BuildUserAgentFromProduct("Version/5.0.4 Safari/533.20.27");
+ user_agent_for_spoofing_hack_ =
+ BuildUserAgentFromProduct("Version/5.1.1 Safari/534.51.22");
+#elif defined(OS_WIN)
+ // Pretend to be Firefox. Silverlight doesn't support Win Safari.
+ base::StringAppendF(
+ &user_agent_for_spoofing_hack_,
+ "Mozilla/5.0 (%s) Gecko/20100101 Firefox/8.0",
+ webkit_glue::BuildOSCpuInfo().c_str());
+#endif
}
- return mimic_mac_safari_user_agent_;
+ return user_agent_for_spoofing_hack_;
}
-#endif
}
return user_agent_;