OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <atlbase.h> | 5 #include <atlbase.h> |
6 #include <atlcom.h> | 6 #include <atlcom.h> |
7 | 7 |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "base/scoped_comptr_win.h" | 10 #include "base/win/scoped_comptr.h" |
11 #include "chrome_frame/urlmon_bind_status_callback.h" | |
12 #include "chrome_frame/test/chrome_frame_test_utils.h" | 11 #include "chrome_frame/test/chrome_frame_test_utils.h" |
13 #include "chrome_frame/test/urlmon_moniker_tests.h" | 12 #include "chrome_frame/test/urlmon_moniker_tests.h" |
| 13 #include "chrome_frame/urlmon_bind_status_callback.h" |
14 | 14 |
15 using chrome_frame_test::ScopedVirtualizeHklmAndHkcu; | 15 using chrome_frame_test::ScopedVirtualizeHklmAndHkcu; |
16 using testing::Return; | 16 using testing::Return; |
17 using testing::Eq; | 17 using testing::Eq; |
18 | 18 |
19 class MonikerPatchTest : public testing::Test { | 19 class MonikerPatchTest : public testing::Test { |
20 protected: | 20 protected: |
21 MonikerPatchTest() { | 21 MonikerPatchTest() { |
22 } | 22 } |
23 | 23 |
24 virtual void SetUp() { | 24 virtual void SetUp() { |
25 DeleteAllSingletons(); | 25 DeleteAllSingletons(); |
26 PathService::Get(base::DIR_SOURCE_ROOT, &test_file_path_); | 26 PathService::Get(base::DIR_SOURCE_ROOT, &test_file_path_); |
27 test_file_path_ = test_file_path_.Append(FILE_PATH_LITERAL("chrome_frame")) | 27 test_file_path_ = test_file_path_.Append(FILE_PATH_LITERAL("chrome_frame")) |
28 .Append(FILE_PATH_LITERAL("test")) | 28 .Append(FILE_PATH_LITERAL("test")) |
29 .Append(FILE_PATH_LITERAL("data")); | 29 .Append(FILE_PATH_LITERAL("data")); |
30 } | 30 } |
31 | 31 |
32 bool ReadFileAsString(const wchar_t* file_name, std::string* file_contents) { | 32 bool ReadFileAsString(const wchar_t* file_name, std::string* file_contents) { |
33 EXPECT_TRUE(file_name); | 33 EXPECT_TRUE(file_name); |
34 FilePath file_path = test_file_path_.Append(file_name); | 34 FilePath file_path = test_file_path_.Append(file_name); |
35 return file_util::ReadFileToString(file_path, file_contents); | 35 return file_util::ReadFileToString(file_path, file_contents); |
36 } | 36 } |
37 | 37 |
38 static bool StringToStream(const std::string& data, IStream** ret) { | 38 static bool StringToStream(const std::string& data, IStream** ret) { |
39 EXPECT_TRUE(!data.empty()); | 39 EXPECT_TRUE(!data.empty()); |
40 | 40 |
41 ScopedComPtr<IStream> stream; | 41 base::win::ScopedComPtr<IStream> stream; |
42 HRESULT hr = CreateStreamOnHGlobal(NULL, TRUE, stream.Receive()); | 42 HRESULT hr = CreateStreamOnHGlobal(NULL, TRUE, stream.Receive()); |
43 EXPECT_HRESULT_SUCCEEDED(hr); | 43 EXPECT_HRESULT_SUCCEEDED(hr); |
44 if (FAILED(hr)) { | 44 if (FAILED(hr)) { |
45 return false; | 45 return false; |
46 } | 46 } |
47 | 47 |
48 DWORD written = 0; | 48 DWORD written = 0; |
49 hr = stream->Write(data.c_str(), data.size(), &written); | 49 hr = stream->Write(data.c_str(), data.size(), &written); |
50 EXPECT_HRESULT_SUCCEEDED(hr); | 50 EXPECT_HRESULT_SUCCEEDED(hr); |
51 EXPECT_EQ(data.size(), written); | 51 EXPECT_EQ(data.size(), written); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 | 129 |
130 const wchar_t kSmallHtmlMetaTag[] = L"sub_frame1.html"; | 130 const wchar_t kSmallHtmlMetaTag[] = L"sub_frame1.html"; |
131 const wchar_t kSmallHtmlNoMetaTag[] = L"host_browser.html"; | 131 const wchar_t kSmallHtmlNoMetaTag[] = L"host_browser.html"; |
132 | 132 |
133 // Test various aspects of the SniffData class | 133 // Test various aspects of the SniffData class |
134 TEST_F(MonikerPatchTest, SniffDataMetaTag) { | 134 TEST_F(MonikerPatchTest, SniffDataMetaTag) { |
135 std::string small_html_meta_tag, small_html_no_meta_tag; | 135 std::string small_html_meta_tag, small_html_no_meta_tag; |
136 ASSERT_TRUE(ReadFileAsString(kSmallHtmlMetaTag, &small_html_meta_tag)); | 136 ASSERT_TRUE(ReadFileAsString(kSmallHtmlMetaTag, &small_html_meta_tag)); |
137 ASSERT_TRUE(ReadFileAsString(kSmallHtmlNoMetaTag, &small_html_no_meta_tag)); | 137 ASSERT_TRUE(ReadFileAsString(kSmallHtmlNoMetaTag, &small_html_no_meta_tag)); |
138 | 138 |
139 ScopedComPtr<IStream> stream_with_meta, stream_no_meta; | 139 base::win::ScopedComPtr<IStream> stream_with_meta, stream_no_meta; |
140 ASSERT_TRUE(StringToStream(small_html_meta_tag, stream_with_meta.Receive())); | 140 ASSERT_TRUE(StringToStream(small_html_meta_tag, stream_with_meta.Receive())); |
141 ASSERT_TRUE(StringToStream(small_html_no_meta_tag, | 141 ASSERT_TRUE(StringToStream(small_html_no_meta_tag, |
142 stream_no_meta.Receive())); | 142 stream_no_meta.Receive())); |
143 | 143 |
144 // Initialize 2 sniffers 1 with meta tag and 1 without. | 144 // Initialize 2 sniffers 1 with meta tag and 1 without. |
145 SniffData sniffer1, sniffer2; | 145 SniffData sniffer1, sniffer2; |
146 EXPECT_HRESULT_SUCCEEDED(sniffer1.InitializeCache(std::wstring())); | 146 EXPECT_HRESULT_SUCCEEDED(sniffer1.InitializeCache(std::wstring())); |
147 EXPECT_HRESULT_SUCCEEDED(sniffer2.InitializeCache(std::wstring())); | 147 EXPECT_HRESULT_SUCCEEDED(sniffer2.InitializeCache(std::wstring())); |
148 EXPECT_HRESULT_SUCCEEDED(sniffer1.ReadIntoCache(stream_with_meta, true)); | 148 EXPECT_HRESULT_SUCCEEDED(sniffer1.ReadIntoCache(stream_with_meta, true)); |
149 EXPECT_HRESULT_SUCCEEDED(sniffer2.ReadIntoCache(stream_no_meta, true)); | 149 EXPECT_HRESULT_SUCCEEDED(sniffer2.ReadIntoCache(stream_no_meta, true)); |
150 | 150 |
151 // Verify renderer type and size read. | 151 // Verify renderer type and size read. |
152 EXPECT_TRUE(sniffer1.is_chrome()); | 152 EXPECT_TRUE(sniffer1.is_chrome()); |
153 EXPECT_EQ(SniffData::OTHER, sniffer2.renderer_type()); | 153 EXPECT_EQ(SniffData::OTHER, sniffer2.renderer_type()); |
154 EXPECT_EQ(small_html_meta_tag.size(), sniffer1.size()); | 154 EXPECT_EQ(small_html_meta_tag.size(), sniffer1.size()); |
155 EXPECT_EQ(small_html_no_meta_tag.size(), sniffer2.size()); | 155 EXPECT_EQ(small_html_no_meta_tag.size(), sniffer2.size()); |
156 } | 156 } |
157 | 157 |
158 // Now test how the data is fed back the the bind status callback. | 158 // Now test how the data is fed back the the bind status callback. |
159 // case 1: callback reads data in 1 read | 159 // case 1: callback reads data in 1 read |
160 TEST_F(MonikerPatchTest, SniffDataPlayback1) { | 160 TEST_F(MonikerPatchTest, SniffDataPlayback1) { |
161 std::string small_html_meta_tag; | 161 std::string small_html_meta_tag; |
162 ScopedComPtr<IStream> stream_with_meta; | 162 base::win::ScopedComPtr<IStream> stream_with_meta; |
163 SniffData sniffer; | 163 SniffData sniffer; |
164 | 164 |
165 EXPECT_HRESULT_SUCCEEDED(sniffer.InitializeCache(std::wstring())); | 165 EXPECT_HRESULT_SUCCEEDED(sniffer.InitializeCache(std::wstring())); |
166 ASSERT_TRUE(ReadFileAsString(kSmallHtmlMetaTag, &small_html_meta_tag)); | 166 ASSERT_TRUE(ReadFileAsString(kSmallHtmlMetaTag, &small_html_meta_tag)); |
167 ASSERT_TRUE(StringToStream(small_html_meta_tag, stream_with_meta.Receive())); | 167 ASSERT_TRUE(StringToStream(small_html_meta_tag, stream_with_meta.Receive())); |
168 EXPECT_HRESULT_SUCCEEDED(sniffer.ReadIntoCache(stream_with_meta, true)); | 168 EXPECT_HRESULT_SUCCEEDED(sniffer.ReadIntoCache(stream_with_meta, true)); |
169 | 169 |
170 CComObjectStackEx<MockBindStatusCallbackImpl> mock; | 170 CComObjectStackEx<MockBindStatusCallbackImpl> mock; |
171 const CLIPFORMAT cf = 0xd0d0; | 171 const CLIPFORMAT cf = 0xd0d0; |
172 const DWORD flags = BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION; | 172 const DWORD flags = BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION; |
(...skipping 22 matching lines...) Expand all Loading... |
195 EXPECT_EQ(data_size, read_size1); | 195 EXPECT_EQ(data_size, read_size1); |
196 | 196 |
197 EXPECT_EQ(S_FALSE, ret2); | 197 EXPECT_EQ(S_FALSE, ret2); |
198 EXPECT_STREQ("", read_buffer2); | 198 EXPECT_STREQ("", read_buffer2); |
199 EXPECT_EQ(sizeof(read_buffer2), read_size2); | 199 EXPECT_EQ(sizeof(read_buffer2), read_size2); |
200 } | 200 } |
201 | 201 |
202 // case 2: callback reads data in 2 reads. | 202 // case 2: callback reads data in 2 reads. |
203 TEST_F(MonikerPatchTest, SniffDataPlayback2) { | 203 TEST_F(MonikerPatchTest, SniffDataPlayback2) { |
204 std::string small_html_meta_tag; | 204 std::string small_html_meta_tag; |
205 ScopedComPtr<IStream> stream_with_meta; | 205 base::win::ScopedComPtr<IStream> stream_with_meta; |
206 SniffData sniffer; | 206 SniffData sniffer; |
207 | 207 |
208 EXPECT_HRESULT_SUCCEEDED(sniffer.InitializeCache(std::wstring())); | 208 EXPECT_HRESULT_SUCCEEDED(sniffer.InitializeCache(std::wstring())); |
209 ASSERT_TRUE(ReadFileAsString(kSmallHtmlMetaTag, &small_html_meta_tag)); | 209 ASSERT_TRUE(ReadFileAsString(kSmallHtmlMetaTag, &small_html_meta_tag)); |
210 ASSERT_TRUE(StringToStream(small_html_meta_tag, stream_with_meta.Receive())); | 210 ASSERT_TRUE(StringToStream(small_html_meta_tag, stream_with_meta.Receive())); |
211 EXPECT_HRESULT_SUCCEEDED(sniffer.ReadIntoCache(stream_with_meta, true)); | 211 EXPECT_HRESULT_SUCCEEDED(sniffer.ReadIntoCache(stream_with_meta, true)); |
212 | 212 |
213 CComObjectStackEx<MockBindStatusCallbackImpl> mock; | 213 CComObjectStackEx<MockBindStatusCallbackImpl> mock; |
214 const CLIPFORMAT cf = 0xd0d0; | 214 const CLIPFORMAT cf = 0xd0d0; |
215 const DWORD flags = BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION; | 215 const DWORD flags = BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION; |
(...skipping 28 matching lines...) Expand all Loading... |
244 | 244 |
245 std::string data_read; | 245 std::string data_read; |
246 data_read.append(read_buffer1.get(), read_size1); | 246 data_read.append(read_buffer1.get(), read_size1); |
247 data_read.append(read_buffer2.get(), read_size2); | 247 data_read.append(read_buffer2.get(), read_size2); |
248 EXPECT_EQ(small_html_meta_tag, data_read); | 248 EXPECT_EQ(small_html_meta_tag, data_read); |
249 | 249 |
250 EXPECT_EQ(S_FALSE, ret3); | 250 EXPECT_EQ(S_FALSE, ret3); |
251 EXPECT_STREQ("", read_buffer3); | 251 EXPECT_STREQ("", read_buffer3); |
252 EXPECT_EQ(sizeof(read_buffer3), read_size3); | 252 EXPECT_EQ(sizeof(read_buffer3), read_size3); |
253 } | 253 } |
OLD | NEW |