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

Unified Diff: chrome_frame/test/util_unittests.cc

Issue 126143005: Remove Chrome Frame code and resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync to r244038 Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome_frame/test/urlmon_moniker_unittest.cc ('k') | chrome_frame/test/win_event_receiver.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/test/util_unittests.cc
diff --git a/chrome_frame/test/util_unittests.cc b/chrome_frame/test/util_unittests.cc
deleted file mode 100644
index 22ceed36f15622dbb616b6614c82689df36c8158..0000000000000000000000000000000000000000
--- a/chrome_frame/test/util_unittests.cc
+++ /dev/null
@@ -1,551 +0,0 @@
-// 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 "base/file_version_info.h"
-#include "base/file_version_info_win.h"
-#include "base/files/file_path.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/win/registry.h"
-#include "chrome_frame/navigation_constraints.h"
-#include "chrome_frame/registry_list_preferences_holder.h"
-#include "chrome_frame/test/chrome_frame_test_utils.h"
-#include "chrome_frame/utils.h"
-
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using base::win::RegKey;
-
-const wchar_t kChannelName[] = L"-dev";
-const wchar_t kSuffix[] = L"-fix";
-
-// Registry override in the UtilsTest will cause shell APIs to fail
-// So separate this test from the rest
-TEST(SimpleUtilTests, GetTempInternetFiles) {
- base::FilePath path = GetIETemporaryFilesFolder();
- EXPECT_FALSE(path.empty());
-}
-
-class UtilTests : public testing::Test {
- protected:
- void SetUp() {
- DeleteAllSingletons();
- }
-
- // This is used to manage life cycle of PolicySettings singleton.
- // base::ShadowingAtExitManager at_exit_manager_;
- chrome_frame_test::ScopedVirtualizeHklmAndHkcu registry_virtualization_;
-};
-
-TEST_F(UtilTests, GetModuleVersionTest) {
- HMODULE mod = GetModuleHandle(L"kernel32.dll");
- EXPECT_NE(mod, static_cast<HMODULE>(NULL));
- wchar_t path[MAX_PATH] = {0};
- GetModuleFileName(mod, path, arraysize(path));
-
- // Use the method that goes to disk
- scoped_ptr<FileVersionInfo> base_info(
- FileVersionInfo::CreateFileVersionInfo(base::FilePath(path)));
- EXPECT_TRUE(base_info.get() != NULL);
-
- // Use the method that doesn't go to disk
- uint32 low = 0, high = 0;
- EXPECT_TRUE(GetModuleVersion(mod, &high, &low));
- EXPECT_NE(high, 0u);
- EXPECT_NE(low, 0u);
-
- // Make sure they give the same results.
- FileVersionInfoWin* base_info_win =
- static_cast<FileVersionInfoWin*>(base_info.get());
- VS_FIXEDFILEINFO* fixed_info = base_info_win->fixed_file_info();
- EXPECT_TRUE(fixed_info != NULL);
-
- EXPECT_EQ(fixed_info->dwFileVersionMS, static_cast<DWORD>(high));
- EXPECT_EQ(fixed_info->dwFileVersionLS, static_cast<DWORD>(low));
-}
-
-TEST_F(UtilTests, HaveSameOrigin) {
- struct OriginCompare {
- const char* a;
- const char* b;
- bool same_origin;
- } test_cases[] = {
- { "", "", true },
- { "*", "*", true },
- { "*", "+", false },
- { "http://www.google.com/", "http://www.google.com/", true },
- { "http://www.google.com", "http://www.google.com/", true },
- { "http://www.google.com:80/", "http://www.google.com/", true },
- { "http://www.google.com:8080/", "http://www.google.com/", false },
- { "https://www.google.com/", "http://www.google.com/", false },
- { "http://docs.google.com/", "http://www.google.com/", false },
- { "https://www.google.com/", "https://www.google.com:443/", true },
- { "https://www.google.com/", "https://www.google.com:443", true },
- };
-
- for (int i = 0; i < arraysize(test_cases); ++i) {
- const OriginCompare& test = test_cases[i];
- EXPECT_EQ(test.same_origin, HaveSameOrigin(test.a, test.b));
- }
-}
-
-TEST_F(UtilTests, IsValidUrlScheme) {
- struct Cases {
- const wchar_t* url;
- bool is_privileged;
- bool expected;
- } test_cases[] = {
- // non-privileged test cases
- { L"http://www.google.ca", false, true },
- { L"https://www.google.ca", false, true },
- { L"about:config", false, true },
- { L"view-source:http://www.google.ca", false, true },
- { L"chrome-extension://aaaaaaaaaaaaaaaaaaa/monkey.html", false, false },
- { L"ftp://www.google.ca", false, false },
- { L"file://www.google.ca", false, false },
- { L"file://C:\boot.ini", false, false },
-
- // privileged test cases
- { L"http://www.google.ca", true, true },
- { L"https://www.google.ca", true, true },
- { L"about:config", true, true },
- { L"view-source:http://www.google.ca", true, true },
- { L"chrome-extension://aaaaaaaaaaaaaaaaaaa/monkey.html", true, true },
- { L"ftp://www.google.ca", true, false },
- { L"file://www.google.ca", true, false },
- { L"file://C:\boot.ini", true, false },
- };
-
- for (int i = 0; i < arraysize(test_cases); ++i) {
- const Cases& test = test_cases[i];
- EXPECT_EQ(test.expected, IsValidUrlScheme(GURL(test.url),
- test.is_privileged));
- }
-}
-
-TEST_F(UtilTests, GuidToString) {
- // {3C5E2125-35BA-48df-A841-5F669B9D69FC}
- const GUID test_guid = { 0x3c5e2125, 0x35ba, 0x48df,
- { 0xa8, 0x41, 0x5f, 0x66, 0x9b, 0x9d, 0x69, 0xfc } };
-
- wchar_t compare[64] = {0};
- ::StringFromGUID2(test_guid, compare, arraysize(compare));
-
- std::wstring str_guid(GuidToString(test_guid));
- EXPECT_EQ(0, str_guid.compare(compare));
- EXPECT_EQ(static_cast<size_t>(lstrlenW(compare)), str_guid.length());
-}
-
-TEST_F(UtilTests, ParseAttachTabUrlTest) {
- ChromeFrameUrl cf_url;
-
- static const std::string kProfileName("iexplore");
-
- EXPECT_TRUE(cf_url.Parse(
- L"http://f/?attach_external_tab&10&1&2&3&123&321&iexplore"));
-
- EXPECT_TRUE(cf_url.attach_to_external_tab());
- EXPECT_FALSE(cf_url.is_chrome_protocol());
- EXPECT_EQ(10, cf_url.cookie());
- EXPECT_EQ(1, cf_url.disposition());
- EXPECT_EQ(gfx::Rect(2, 3, 123, 321), cf_url.dimensions());
- EXPECT_EQ(kProfileName, cf_url.profile_name());
-
- EXPECT_TRUE(cf_url.Parse(
- L"http://www.foobar.com?&10&1&2&3&123&321&iexplore"));
- EXPECT_FALSE(cf_url.attach_to_external_tab());
- EXPECT_FALSE(cf_url.is_chrome_protocol());
- EXPECT_EQ(0, cf_url.cookie());
- EXPECT_EQ(0, cf_url.disposition());
- EXPECT_EQ(gfx::Rect(0, 0, 0, 0), cf_url.dimensions());
- EXPECT_TRUE(cf_url.profile_name().empty());
-
- EXPECT_FALSE(cf_url.Parse(L"attach_external_tab&10&1"));
- EXPECT_FALSE(cf_url.attach_to_external_tab());
- EXPECT_FALSE(cf_url.is_chrome_protocol());
- EXPECT_EQ(0, cf_url.cookie());
- EXPECT_EQ(0, cf_url.disposition());
- EXPECT_EQ(gfx::Rect(0, 0, 0, 0), cf_url.dimensions());
- EXPECT_TRUE(cf_url.profile_name().empty());
-
- EXPECT_TRUE(cf_url.Parse(
- L"gcf:http://f/?attach_tab&10&1&2&3&123&321&iexplore"));
- EXPECT_FALSE(cf_url.attach_to_external_tab());
- EXPECT_TRUE(cf_url.is_chrome_protocol());
- EXPECT_EQ(0, cf_url.cookie());
- EXPECT_EQ(0, cf_url.disposition());
- EXPECT_EQ(gfx::Rect(0, 0, 0, 0), cf_url.dimensions());
- EXPECT_TRUE(cf_url.profile_name().empty());
-
- EXPECT_TRUE(cf_url.Parse(L"gcf:http://google.com"));
- EXPECT_FALSE(cf_url.attach_to_external_tab());
- EXPECT_TRUE(cf_url.is_chrome_protocol());
- EXPECT_EQ(0, cf_url.cookie());
- EXPECT_EQ(0, cf_url.disposition());
- EXPECT_EQ(gfx::Rect(0, 0, 0, 0), cf_url.dimensions());
- EXPECT_EQ(cf_url.gurl(), GURL("http://google.com"));
- EXPECT_TRUE(cf_url.profile_name().empty());
-}
-
-// Mock for the IInternetSecurityManager interface
-class MockIInternetSecurityManager : public IInternetSecurityManager {
- public:
- MOCK_METHOD2_WITH_CALLTYPE(__stdcall, QueryInterface,
- HRESULT(REFIID iid, void** object));
-
- MOCK_METHOD0_WITH_CALLTYPE(__stdcall, AddRef, ULONG());
- MOCK_METHOD0_WITH_CALLTYPE(__stdcall, Release, ULONG());
-
- MOCK_METHOD1_WITH_CALLTYPE(__stdcall, SetSecuritySite,
- HRESULT(IInternetSecurityMgrSite* site));
- MOCK_METHOD1_WITH_CALLTYPE(__stdcall, GetSecuritySite,
- HRESULT(IInternetSecurityMgrSite** site));
- MOCK_METHOD3_WITH_CALLTYPE(__stdcall, MapUrlToZone,
- HRESULT(LPCWSTR url, DWORD* zone, DWORD flags));
- MOCK_METHOD4_WITH_CALLTYPE(__stdcall, GetSecurityId,
- HRESULT(LPCWSTR url, BYTE* security_id, DWORD* security_size,
- DWORD_PTR reserved));
- MOCK_METHOD8_WITH_CALLTYPE(__stdcall, ProcessUrlAction,
- HRESULT(LPCWSTR url, DWORD action, BYTE* policy, DWORD cb_policy,
- BYTE* context, DWORD context_size, DWORD flags,
- DWORD reserved));
- MOCK_METHOD7_WITH_CALLTYPE(__stdcall, QueryCustomPolicy,
- HRESULT(LPCWSTR url, REFGUID guid, BYTE** policy, DWORD* cb_policy,
- BYTE* context, DWORD cb_context, DWORD reserved));
- MOCK_METHOD3_WITH_CALLTYPE(__stdcall, SetZoneMapping,
- HRESULT(DWORD zone, LPCWSTR pattern, DWORD flags));
- MOCK_METHOD3_WITH_CALLTYPE(__stdcall, GetZoneMappings,
- HRESULT(DWORD zone, IEnumString** enum_string, DWORD flags));
-};
-
-// This class provides a partial mock for the NavigationConstraints
-// interface by providing specialized zone overrides.
-class MockNavigationConstraintsZoneOverride
- : public NavigationConstraintsImpl {
- public:
- MOCK_METHOD1(IsZoneAllowed, bool(const GURL&url));
-};
-
-// Mock NavigationConstraints
-class MockNavigationConstraints : public NavigationConstraints {
- public:
- MOCK_METHOD0(AllowUnsafeUrls, bool());
- MOCK_METHOD1(IsSchemeAllowed, bool(const GURL& url));
- MOCK_METHOD1(IsZoneAllowed, bool(const GURL& url));
-};
-
-// Matcher which returns true if the URL passed in starts with the prefix
-// specified.
-MATCHER_P(UrlPathStartsWith, url_prefix, "url starts with prefix") {
- return StartsWith(base::UTF8ToWide(arg.spec()), url_prefix, false);
-}
-
-ACTION_P3(HandleZone, mock, url_prefix, zone) {
- if (StartsWith(base::UTF8ToWide(arg0.spec()), url_prefix, false))
- return zone != URLZONE_UNTRUSTED;
- return false;
-}
-
-TEST_F(UtilTests, CanNavigateTest) {
- MockNavigationConstraintsZoneOverride mock;
-
- struct Zones {
- const wchar_t* url_prefix;
- URLZONE zone;
- } test_zones[] = {
- { L"http://blah", URLZONE_INTERNET },
- { L"http://untrusted", URLZONE_UNTRUSTED },
- { L"about:", URLZONE_TRUSTED },
- { L"view-source:", URLZONE_TRUSTED },
- { L"chrome-extension:", URLZONE_TRUSTED },
- { L"data:", URLZONE_INTERNET },
- { L"ftp:", URLZONE_UNTRUSTED },
- { L"file:", URLZONE_LOCAL_MACHINE },
- { L"sip:", URLZONE_UNTRUSTED },
- };
-
- for (int i = 0; i < arraysize(test_zones); ++i) {
- const Zones& zone = test_zones[i];
- EXPECT_CALL(mock, IsZoneAllowed(UrlPathStartsWith(zone.url_prefix)))
- .WillRepeatedly(testing::Return(zone.zone != URLZONE_UNTRUSTED));
- }
-
- struct Cases {
- const char* url;
- bool default_expected;
- bool unsafe_expected;
- bool is_privileged;
- } test_cases[] = {
- // Invalid URL
- { " ", false, false, false },
- { "foo bar", false, false, false },
-
- // non-privileged test cases
- { "http://blah/?attach_external_tab&10&1&0&0&100&100&iexplore", true,
- true, false },
- { "http://untrusted/bar.html", false, true, false },
- { "http://blah/?attach_external_tab&10&1&0&0&100&100&iexplore", true,
- true, false },
- { "view-source:http://www.google.ca", true, true, false },
- { "view-source:javascript:alert('foo');", false, true, false },
- { "about:blank", true, true, false },
- { "About:Version", true, true, false },
- { "about:config", false, true, false },
- { "chrome-extension://aaaaaaaaaaaaaaaaaaa/monkey.html", false, true,
- false },
- { "ftp://www.google.ca", false, true, false },
- { "file://www.google.ca", false, true, false },
- { "file://C:\boot.ini", false, true, false },
- { "SIP:someone@10.1.2.3", false, true, false },
-
- // privileged test cases
- { "chrome-extension://aaaaaaaaaaaaaaaaaaa/monkey.html", true, true,
- true },
- { "data://aaaaaaaaaaaaaaaaaaa/monkey.html", true, true, true },
- };
-
- for (int i = 0; i < arraysize(test_cases); ++i) {
- const Cases& test = test_cases[i];
- mock.set_is_privileged(test.is_privileged);
- bool actual = CanNavigate(GURL(test.url), &mock);
- EXPECT_EQ(test.default_expected, actual) << "Failure url: " << test.url;
- }
-}
-
-TEST_F(UtilTests, CanNavigateTestDenyAll) {
- MockNavigationConstraints mock;
-
- EXPECT_CALL(mock, IsZoneAllowed(testing::_))
- .Times(testing::AnyNumber())
- .WillRepeatedly(testing::Return(false));
-
- EXPECT_CALL(mock, IsSchemeAllowed(testing::_))
- .Times(testing::AnyNumber())
- .WillRepeatedly(testing::Return(false));
-
- EXPECT_CALL(mock, AllowUnsafeUrls())
- .Times(testing::AnyNumber())
- .WillRepeatedly(testing::Return(false));
-
- char *urls[] = {
- { " "},
- { "foo bar"},
- // non-privileged test cases
- { "http://blah/?attach_external_tab&10&1&0&0&100&100&iexplore"},
- { "http://untrusted/bar.html"},
- { "http://blah/?attach_external_tab&10&1&0&0&100&100&iexplore"},
- { "view-source:http://www.google.ca"},
- { "view-source:javascript:alert('foo');"},
- { "about:blank"},
- { "About:Version"},
- { "about:config"},
- { "chrome-extension://aaaaaaaaaaaaaaaaaaa/monkey.html"},
- { "ftp://www.google.ca"},
- { "file://www.google.ca"},
- { "file://C:\boot.ini"},
- { "SIP:someone@10.1.2.3"},
- };
-
- for (int i = 0; i < arraysize(urls); ++i) {
- EXPECT_FALSE(CanNavigate(GURL(urls[i]), &mock));
- }
-}
-
-TEST_F(UtilTests, CanNavigateTestAllowAll) {
- MockNavigationConstraints mock;
-
- EXPECT_CALL(mock, AllowUnsafeUrls())
- .Times(testing::AnyNumber())
- .WillRepeatedly(testing::Return(false));
-
- EXPECT_CALL(mock, IsSchemeAllowed(testing::_))
- .Times(testing::AnyNumber())
- .WillRepeatedly(testing::Return(true));
-
- EXPECT_CALL(mock, IsZoneAllowed(testing::_))
- .Times(testing::AnyNumber())
- .WillRepeatedly(testing::Return(true));
-
- char *urls[] = {
- // non-privileged test cases
- { "http://blah/?attach_external_tab&10&1&0&0&100&100&iexplore"},
- { "http://untrusted/bar.html"},
- { "http://blah/?attach_external_tab&10&1&0&0&100&100&iexplore"},
- { "view-source:http://www.google.ca"},
- { "view-source:javascript:alert('foo');"},
- { "about:blank"},
- { "About:Version"},
- { "about:config"},
- { "chrome-extension://aaaaaaaaaaaaaaaaaaa/monkey.html"},
- { "ftp://www.google.ca"},
- { "file://www.google.ca"},
- { "file://C:\boot.ini"},
- { "SIP:someone@10.1.2.3"},
- { "gcf:about:cache"},
- { "gcf:about:plugins"},
- };
-
- for (int i = 0; i < arraysize(urls); ++i) {
- EXPECT_TRUE(CanNavigate(GURL(urls[i]), &mock));
- }
-}
-
-TEST_F(UtilTests, CanNavigateTestAllowAllUnsafeUrls) {
- MockNavigationConstraints mock;
-
- EXPECT_CALL(mock, AllowUnsafeUrls())
- .Times(testing::AnyNumber())
- .WillRepeatedly(testing::Return(true));
-
- char *urls[] = {
- {"gcf:about:cache"},
- {"gcf:http://www.google.com"},
- {"view-source:javascript:alert('foo');"},
- {"http://www.google.com"},
- };
-
- for (int i = 0; i < arraysize(urls); ++i) {
- EXPECT_TRUE(CanNavigate(GURL(urls[i]), &mock));
- }
-}
-
-TEST_F(UtilTests, IsDefaultRendererTest) {
- RegKey config_key(HKEY_CURRENT_USER, kChromeFrameConfigKey, KEY_ALL_ACCESS);
- EXPECT_TRUE(config_key.Valid());
-
- DWORD saved_default_renderer = 0; // NOLINT
- config_key.ReadValueDW(kEnableGCFRendererByDefault, &saved_default_renderer);
-
- config_key.DeleteValue(kEnableGCFRendererByDefault);
- EXPECT_FALSE(IsGcfDefaultRenderer());
-
- config_key.WriteValue(kEnableGCFRendererByDefault, static_cast<DWORD>(0));
- EXPECT_FALSE(IsGcfDefaultRenderer());
-
- config_key.WriteValue(kEnableGCFRendererByDefault, static_cast<DWORD>(1));
- EXPECT_TRUE(IsGcfDefaultRenderer());
-
- config_key.WriteValue(kEnableGCFRendererByDefault, saved_default_renderer);
-}
-
-TEST_F(UtilTests, RendererTypeForUrlTest) {
- // Open all the keys we need.
- RegKey config_key(HKEY_CURRENT_USER, kChromeFrameConfigKey, KEY_ALL_ACCESS);
- EXPECT_TRUE(config_key.Valid());
- RegKey opt_for_gcf(config_key.Handle(), kRenderInGCFUrlList, KEY_ALL_ACCESS);
- EXPECT_TRUE(opt_for_gcf.Valid());
- RegKey opt_for_host(config_key.Handle(), kRenderInHostUrlList,
- KEY_ALL_ACCESS);
- EXPECT_TRUE(opt_for_host.Valid());
- if (!config_key.Valid() || !opt_for_gcf.Valid() || !opt_for_host.Valid())
- return;
-
- const wchar_t kTestFilter[] = L"*.testing.chromium.org";
- const wchar_t kTestUrl[] = L"www.testing.chromium.org";
-
- // Save the current state of the registry.
- DWORD saved_default_renderer = 0;
- config_key.ReadValueDW(kEnableGCFRendererByDefault, &saved_default_renderer);
-
- // We need to manually reset the holder between checks.
- // TODO(robertshield): Remove this when the RegistryWatcher is wired up.
- RegistryListPreferencesHolder& renderer_type_preferences_holder =
- GetRendererTypePreferencesHolderForTesting();
-
- // Make sure the host is the default renderer.
- config_key.WriteValue(kEnableGCFRendererByDefault, static_cast<DWORD>(0));
- EXPECT_FALSE(IsGcfDefaultRenderer());
-
- opt_for_gcf.DeleteValue(kTestFilter); // Just in case this exists
- EXPECT_EQ(RENDERER_TYPE_UNDETERMINED, RendererTypeForUrl(kTestUrl));
- opt_for_gcf.WriteValue(kTestFilter, L"");
- renderer_type_preferences_holder.ResetForTesting();
- EXPECT_EQ(RENDERER_TYPE_CHROME_OPT_IN_URL, RendererTypeForUrl(kTestUrl));
-
- // Now set GCF as the default renderer.
- config_key.WriteValue(kEnableGCFRendererByDefault, static_cast<DWORD>(1));
- EXPECT_TRUE(IsGcfDefaultRenderer());
-
- opt_for_host.DeleteValue(kTestFilter); // Just in case this exists
- renderer_type_preferences_holder.ResetForTesting();
- EXPECT_EQ(RENDERER_TYPE_CHROME_DEFAULT_RENDERER,
- RendererTypeForUrl(kTestUrl));
- opt_for_host.WriteValue(kTestFilter, L"");
- renderer_type_preferences_holder.ResetForTesting();
- EXPECT_EQ(RENDERER_TYPE_UNDETERMINED, RendererTypeForUrl(kTestUrl));
-
- // Cleanup.
- opt_for_gcf.DeleteValue(kTestFilter);
- opt_for_host.DeleteValue(kTestFilter);
- config_key.WriteValue(kEnableGCFRendererByDefault, saved_default_renderer);
- renderer_type_preferences_holder.ResetForTesting();
- RendererTypeForUrl(L"");
-}
-
-TEST_F(UtilTests, XUaCompatibleDirectiveTest) {
- int all_versions[] = {0, 1, 2, 5, 6, 7, 8, 9, 10, 11, 99, 100, 101, 1000};
-
- struct Cases {
- const char* header_value;
- int max_version;
- } test_cases[] = {
- // Negative cases
- { "", -1 },
- { "chrome=", -1 },
- { "chrome", -1 },
- { "chrome=X", -1 },
- { "chrome=IE", -1 },
- { "chrome=IE-7", -1 },
- { "chrome=IE+7", -1 },
- { "chrome=IE 7", -1 },
- { "chrome=IE7.0", -1 },
- { "chrome=FF7", -1 },
- { "chrome=IE7+", -1 },
- { "chrome=IE99999999999999999999", -1 },
- { "chrome=IE0", -1 },
- // Always on
- { "chrome=1", INT_MAX },
- // Basic positive cases
- { "chrome=IE1", 1 },
- { "CHROME=IE6", 6 },
- { "Chrome=IE10", 10 },
- { "ChRoMe=IE100", 100 },
- // Positive formatting variations
- { " chrome=IE6 ", 6 },
- { " chrome=IE6; ", 6 },
- { " chrome=IE6; IE=8 ", 6 },
- { " IE=8;chrome=IE6;", 6 },
- { " IE=8;chrome=IE6;", 6 },
- { " IE=8 ; chrome = IE6 ;", 6 },
- // Ignore unrecognized values
- { " IE=8 ; chrome = IE7.1; chrome = IE6;", 6 },
- // First valid wins
- { " IE=8 ; chrome = IE6; chrome = IE8;", 6 },
- // Comma delimiter
- { " IE=8,chrome=IE6;", -1 },
- { " IE=8,chrome=IE6", 6 },
- { " IE=8,chrome=IE6, Something=Else;Why;Not", 6 },
- { " IE=8,chrome=1,Something=Else", INT_MAX },
- { " IE=8(a;b;c),chrome=IE7,Something=Else", 7 }
- };
-
- for (int case_index = 0; case_index < arraysize(test_cases); ++case_index) {
- const Cases& test = test_cases[case_index];
-
- // Check that all versions <= max_version are matched
- for (size_t version_index = 0;
- version_index < arraysize(all_versions);
- ++version_index) {
- bool expect_match = (all_versions[version_index] <= test.max_version);
-
- ASSERT_EQ(expect_match,
- CheckXUaCompatibleDirective(test.header_value,
- all_versions[version_index]))
- << "Expect '" << test.header_value << "' to "
- << (expect_match ? "match" : "not match") << " IE major version "
- << all_versions[version_index];
- }
- }
-}
« no previous file with comments | « chrome_frame/test/urlmon_moniker_unittest.cc ('k') | chrome_frame/test/win_event_receiver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698