diff options
Diffstat (limited to 'webkit/user_agent/user_agent_unittest.cc')
-rw-r--r-- | webkit/user_agent/user_agent_unittest.cc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/webkit/user_agent/user_agent_unittest.cc b/webkit/user_agent/user_agent_unittest.cc new file mode 100644 index 0000000..9a6058d --- /dev/null +++ b/webkit/user_agent/user_agent_unittest.cc @@ -0,0 +1,60 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "webkit/user_agent/user_agent.h" + +#include <string> + +#include "googleurl/src/gurl.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "webkit/tools/test_shell/test_shell_test.h" + +namespace { + +class WebkitGlueUserAgentTest : public TestShellTest { +}; + +bool IsSpoofedUserAgent(const std::string& user_agent) { + return user_agent.find("TestShell") == std::string::npos; +} + +TEST_F(WebkitGlueUserAgentTest, UserAgentSpoofingHack) { + enum Platform { + NONE = 0, + MACOSX = 1, + WIN = 2, + OTHER = 4, + }; + + struct Expected { + const char* url; + int os_mask; + }; + + Expected expected[] = { + { "http://wwww.google.com", NONE }, + { "http://www.microsoft.com/getsilverlight", MACOSX }, + { "http://headlines.yahoo.co.jp/videonews/", MACOSX | WIN }, + { "http://downloads.yahoo.co.jp/docs/silverlight/", MACOSX }, + { "http://gyao.yahoo.co.jp/", MACOSX }, + { "http://weather.yahoo.co.jp/weather/zoomradar/", WIN }, + { "http://promotion.shopping.yahoo.co.jp/", WIN }, + { "http://pokemon.kids.yahoo.co.jp", WIN }, + }; +#if defined(OS_MACOSX) + int os_bit = MACOSX; +#elif defined(OS_WIN) + int os_bit = WIN; +#else + int os_bit = OTHER; +#endif + + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(expected); ++i) { + EXPECT_EQ((expected[i].os_mask & os_bit) != 0, + IsSpoofedUserAgent( + webkit_glue::GetUserAgent(GURL(expected[i].url)))); + } +} + +} // namespace |