| Index: chrome_frame/test/util_unittests.cc
|
| ===================================================================
|
| --- chrome_frame/test/util_unittests.cc (revision 53833)
|
| +++ chrome_frame/test/util_unittests.cc (working copy)
|
| @@ -5,7 +5,9 @@
|
| #include "base/file_version_info.h"
|
| #include "base/file_version_info_win.h"
|
| #include "chrome_frame/utils.h"
|
| +
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
|
|
| const wchar_t kChannelName[] = L"-dev";
|
| const wchar_t kSuffix[] = L"-fix";
|
| @@ -114,29 +116,132 @@
|
| }
|
|
|
| TEST(UtilTests, ParseAttachTabUrlTest) {
|
| - std::wstring url = L"attach_external_tab&10&1&0&0&100&100";
|
| + ChromeFrameUrl cf_url;
|
|
|
| - uint64 cookie = 0;
|
| - gfx::Rect dimensions;
|
| - int disposition = 0;
|
| + EXPECT_TRUE(cf_url.Parse(L"http://f/?attach_external_tab&10&1&0&0&100&100"));
|
|
|
| - EXPECT_TRUE(ParseAttachExternalTabUrl(url, &cookie, &dimensions,
|
| - &disposition));
|
| - EXPECT_EQ(10, cookie);
|
| - EXPECT_EQ(1, disposition);
|
| - EXPECT_EQ(0, dimensions.x());
|
| - EXPECT_EQ(0, dimensions.y());
|
| - EXPECT_EQ(100, dimensions.width());
|
| - EXPECT_EQ(100, dimensions.height());
|
| + EXPECT_TRUE(cf_url.attach_to_external_tab());
|
| + EXPECT_FALSE(cf_url.is_chrome_protocol());
|
|
|
| - url = L"http://www.foobar.com?&10&1&0&0&100&100";
|
| - EXPECT_FALSE(ParseAttachExternalTabUrl(url, &cookie, &dimensions,
|
| - &disposition));
|
| - url = L"attach_external_tab&10&1";
|
| - EXPECT_FALSE(ParseAttachExternalTabUrl(url, &cookie, &dimensions,
|
| - &disposition));
|
| + EXPECT_EQ(10, cf_url.cookie());
|
| + EXPECT_EQ(1, cf_url.disposition());
|
| + EXPECT_EQ(0, cf_url.dimensions().x());
|
| + EXPECT_EQ(0, cf_url.dimensions().y());
|
| + EXPECT_EQ(100, cf_url.dimensions().width());
|
| + EXPECT_EQ(100, cf_url.dimensions().height());
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"http://www.foobar.com?&10&1&0&0&100&100"));
|
| + EXPECT_FALSE(cf_url.attach_to_external_tab());
|
| +
|
| + EXPECT_FALSE(cf_url.Parse(L"attach_external_tab&10&1"));
|
| + EXPECT_TRUE(cf_url.attach_to_external_tab());
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"gcf:http://f/?attach_tab&10&1&0&0&100&100"));
|
| + EXPECT_FALSE(cf_url.attach_to_external_tab());
|
| + EXPECT_TRUE(cf_url.is_chrome_protocol());
|
| }
|
|
|
| +// 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));
|
| +};
|
| +
|
| +TEST(UtilTests, CanNavigateFullTabModeTest) {
|
| + ChromeFrameUrl cf_url;
|
| +
|
| + MockIInternetSecurityManager mock;
|
| + EXPECT_CALL(mock, MapUrlToZone(testing::StartsWith(L"http://blah"),
|
| + testing::_, testing::_))
|
| + .WillRepeatedly(testing::DoAll(
|
| + testing::SetArgumentPointee<1>(URLZONE_INTERNET),
|
| + testing::Return(S_OK)));
|
| +
|
| + EXPECT_CALL(mock, MapUrlToZone(testing::StartsWith(L"http://untrusted"),
|
| + testing::_, testing::_))
|
| + .WillRepeatedly(testing::DoAll(
|
| + testing::SetArgumentPointee<1>(URLZONE_UNTRUSTED),
|
| + testing::Return(S_OK)));
|
| +
|
| + EXPECT_CALL(mock, MapUrlToZone(testing::StartsWith(L"about:"),
|
| + testing::_, testing::_))
|
| + .WillRepeatedly(testing::DoAll(
|
| + testing::SetArgumentPointee<1>(URLZONE_TRUSTED),
|
| + testing::Return(S_OK)));
|
| +
|
| + EXPECT_CALL(mock, MapUrlToZone(testing::StartsWith(L"view-source:"),
|
| + testing::_, testing::_))
|
| + .WillRepeatedly(testing::DoAll(
|
| + testing::SetArgumentPointee<1>(URLZONE_TRUSTED),
|
| + testing::Return(S_OK)));
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(
|
| + L"http://blah/?attach_external_tab&10&1&0&0&100&100"));
|
| + EXPECT_TRUE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(
|
| + L"http://untrusted/bar.html"));
|
| + EXPECT_FALSE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(
|
| + L"http://blah/?attach_external_tab&10&1&0&0&100&100"));
|
| + EXPECT_TRUE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"gcf:about:blank"));
|
| + EXPECT_TRUE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"gcf:view-source:http://www.foo.com"));
|
| + EXPECT_TRUE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"gcf:about:version"));
|
| + EXPECT_TRUE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"gcf:about:bar"));
|
| + EXPECT_TRUE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + bool enable_gcf = GetConfigBool(false, kEnableGCFProtocol);
|
| +
|
| + SetConfigBool(kEnableGCFProtocol, false);
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"gcf:http://blah"));
|
| + EXPECT_FALSE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + SetConfigBool(kEnableGCFProtocol, true);
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"gcf:http://blah"));
|
| + EXPECT_TRUE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + EXPECT_TRUE(cf_url.Parse(L"gcf:http://untrusted/bar"));
|
| + EXPECT_FALSE(CanNavigateInFullTabMode(cf_url, &mock));
|
| +
|
| + SetConfigBool(kEnableGCFProtocol, enable_gcf);
|
| +}
|
| +
|
| TEST(UtilTests, ParseVersionTest) {
|
| uint32 high = 0, low = 0;
|
| EXPECT_FALSE(ParseVersion(L"", &high, &low));
|
|
|