diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-16 19:38:52 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-16 19:38:52 +0000 |
commit | 6a8515e44d88fcd704dc871d7c07314ceb3323bb (patch) | |
tree | f3c82ed61a3e191313975b6f1afe515709e0cba0 /chrome_frame/test/http_negotiate_unittest.cc | |
parent | 457592496d7b0ad20c7f05ac3e1141073e134e6f (diff) | |
download | chromium_src-6a8515e44d88fcd704dc871d7c07314ceb3323bb.zip chromium_src-6a8515e44d88fcd704dc871d7c07314ceb3323bb.tar.gz chromium_src-6a8515e44d88fcd704dc871d7c07314ceb3323bb.tar.bz2 |
Add the ChromeFrame UA in the post platform section in the IE user agent string. To achieve
this we need to add the desired value in the registry under the
Internet Settings\User Agent\Post Platform key. We add this under the per user or per machine
section in the registry depending on whether ChromeFrame is being installed in per user or
per machine mode. This fixes the bug where certain top level requests in IE would not have
the chrome frame UA appended to the IE UA.
Removed the BeginningTransaction vtable patch code, which only existed to add chrome frame to
the UA in outgoing requests.
The limitation with registering the chrome frame UA in the registry is that it will be sent
out even in the ChromeFrame BHO is disabled.
Fixes bug http://code.google.com/p/chromium/issues/detail?id=45087
BUG=45087
TESt=Covered by new chrome frame test.
Review URL: http://codereview.chromium.org/5831002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69442 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/test/http_negotiate_unittest.cc')
-rw-r--r-- | chrome_frame/test/http_negotiate_unittest.cc | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/chrome_frame/test/http_negotiate_unittest.cc b/chrome_frame/test/http_negotiate_unittest.cc index c56034b..857197e 100644 --- a/chrome_frame/test/http_negotiate_unittest.cc +++ b/chrome_frame/test/http_negotiate_unittest.cc @@ -16,112 +16,6 @@ #include "gtest/gtest.h" #include "gmock/gmock.h" -class HttpNegotiateTest : public testing::Test { - protected: - HttpNegotiateTest() { - } -}; - -class TestHttpNegotiate - : public CComObjectRootEx<CComMultiThreadModel>, - public IHttpNegotiate { - public: - TestHttpNegotiate() - : beginning_transaction_ret_(S_OK), additional_headers_(NULL) { - } - -BEGIN_COM_MAP(TestHttpNegotiate) - COM_INTERFACE_ENTRY(IHttpNegotiate) -END_COM_MAP() - STDMETHOD(BeginningTransaction)(LPCWSTR url, LPCWSTR headers, // NOLINT - DWORD reserved, // NOLINT - LPWSTR* additional_headers) { // NOLINT - if (additional_headers_) { - int len = lstrlenW(additional_headers_); - len++; - *additional_headers = reinterpret_cast<wchar_t*>( - ::CoTaskMemAlloc(len * sizeof(wchar_t))); - lstrcpyW(*additional_headers, additional_headers_); - } - return beginning_transaction_ret_; - } - - STDMETHOD(OnResponse)(DWORD response_code, LPCWSTR response_header, - LPCWSTR request_header, - LPWSTR* additional_request_headers) { - return S_OK; - } - - HRESULT beginning_transaction_ret_; - const wchar_t* additional_headers_; -}; - -TEST_F(HttpNegotiateTest, BeginningTransaction) { - static const int kBeginningTransactionIndex = 3; - CComObjectStackEx<TestHttpNegotiate> test_http; - IHttpNegotiate_BeginningTransaction_Fn original = - reinterpret_cast<IHttpNegotiate_BeginningTransaction_Fn>( - (*reinterpret_cast<void***>( - static_cast<IHttpNegotiate*>( - &test_http)))[kBeginningTransactionIndex]); - - std::wstring cf_ua( - ASCIIToWide(http_utils::GetDefaultUserAgentHeaderWithCFTag())); - std::wstring cf_tag( - ASCIIToWide(http_utils::GetChromeFrameUserAgent())); - - EXPECT_NE(std::wstring::npos, cf_ua.find(cf_tag)); - - struct TestCase { - const std::wstring original_headers_; - const std::wstring delegate_additional_; - const std::wstring expected_additional_; - HRESULT delegate_return_value_; - } test_cases[] = { - { L"Accept: */*\r\n", - L"", - cf_ua + L"\r\n", - S_OK }, - { L"Accept: */*\r\n", - L"", - L"", - E_OUTOFMEMORY }, - { L"", - L"Accept: */*\r\n", - L"Accept: */*\r\n" + cf_ua + L"\r\n", - S_OK }, - { L"User-Agent: Bingo/1.0\r\n", - L"", - L"User-Agent: Bingo/1.0 " + cf_tag + L"\r\n", - S_OK }, - { L"User-Agent: NotMe/1.0\r\n", - L"User-Agent: MeMeMe/1.0\r\n", - L"User-Agent: MeMeMe/1.0 " + cf_tag + L"\r\n", - S_OK }, - { L"", - L"User-Agent: MeMeMe/1.0\r\n", - L"User-Agent: MeMeMe/1.0 " + cf_tag + L"\r\n", - S_OK }, - }; - - for (int i = 0; i < arraysize(test_cases); ++i) { - TestCase& test = test_cases[i]; - wchar_t* additional = NULL; - test_http.beginning_transaction_ret_ = test.delegate_return_value_; - test_http.additional_headers_ = test.delegate_additional_.c_str(); - HttpNegotiatePatch::BeginningTransaction(original, &test_http, - L"http://www.google.com", test.original_headers_.c_str(), 0, - &additional); - EXPECT_TRUE(additional != NULL); - - if (additional) { - // Check against the expected additional headers. - EXPECT_EQ(test.expected_additional_, std::wstring(additional)); - ::CoTaskMemFree(additional); - } - } -} - class TestInternetProtocolSink : public CComObjectRootEx<CComMultiThreadModel>, public IInternetProtocolSink { |