Index: printing/emf_win_unittest.cc |
diff --git a/printing/emf_win_unittest.cc b/printing/emf_win_unittest.cc |
index 9f2899b365871e57e357001172d011381be6bb98..249210460f21bf7cd6547311a2ee3713a57e4d2a 100644 |
--- a/printing/emf_win_unittest.cc |
+++ b/printing/emf_win_unittest.cc |
@@ -45,26 +45,26 @@ namespace printing { |
TEST(EmfTest, DC) { |
// Simplest use case. |
- printing::Emf emf; |
- RECT rect = {100, 100, 200, 200}; |
- HDC hdc = CreateCompatibleDC(NULL); |
- EXPECT_TRUE(hdc != NULL); |
- EXPECT_TRUE(emf.CreateDc(hdc, &rect)); |
- EXPECT_TRUE(emf.context() != NULL); |
- // In theory, you'd use the HDC with GDI functions here. |
- EXPECT_TRUE(emf.FinishDocument()); |
- uint32 size = emf.GetDataSize(); |
- EXPECT_EQ(size, EMF_HEADER_SIZE); |
+ uint32 size; |
std::vector<BYTE> data; |
- EXPECT_TRUE(emf.GetData(&data)); |
- EXPECT_EQ(data.size(), size); |
- emf.CloseEmf(); |
- EXPECT_TRUE(DeleteDC(hdc)); |
+ { |
+ printing::Emf emf; |
+ EXPECT_TRUE(emf.Init()); |
+ EXPECT_TRUE(emf.context() != NULL); |
+ // An empty EMF is invalid, so we put at least a rectangle in it. |
+ ::Rectangle(emf.context(), 10, 10, 190, 190); |
+ EXPECT_TRUE(emf.FinishDocument()); |
+ size = emf.GetDataSize(); |
+ EXPECT_GT(size, EMF_HEADER_SIZE); |
+ EXPECT_TRUE(emf.GetData(&data)); |
+ EXPECT_EQ(data.size(), size); |
+ } |
// Playback the data. |
- hdc = CreateCompatibleDC(NULL); |
- EXPECT_TRUE(hdc); |
+ printing::Emf emf; |
EXPECT_TRUE(emf.InitFromData(&data.front(), size)); |
+ HDC hdc = CreateCompatibleDC(NULL); |
+ EXPECT_TRUE(hdc); |
RECT output_rect = {0, 0, 10, 10}; |
EXPECT_TRUE(emf.Playback(hdc, &output_rect)); |
EXPECT_TRUE(DeleteDC(hdc)); |
@@ -128,28 +128,31 @@ TEST_F(EmfPrintingTest, PageBreak) { |
CreateDC(L"WINSPOOL", L"UnitTest Printer", NULL, NULL)); |
if (!dc.Get()) |
return; |
- printing::Emf emf; |
- EXPECT_TRUE(emf.CreateDc(dc.Get(), NULL)); |
- EXPECT_TRUE(emf.context() != NULL); |
- int pages = 3; |
- while (pages) { |
- EXPECT_TRUE(emf.StartPage(gfx::Size(), gfx::Point(), 1)); |
- ::Rectangle(emf.context(), 10, 10, 190, 190); |
- EXPECT_TRUE(emf.FinishPage()); |
- --pages; |
- } |
- EXPECT_TRUE(emf.FinishDocument()); |
- uint32 size = emf.GetDataSize(); |
+ uint32 size; |
std::vector<BYTE> data; |
- EXPECT_TRUE(emf.GetData(&data)); |
- EXPECT_EQ(data.size(), size); |
- emf.CloseEmf(); |
+ { |
+ printing::Emf emf; |
+ EXPECT_TRUE(emf.Init()); |
+ EXPECT_TRUE(emf.context() != NULL); |
+ int pages = 3; |
+ while (pages) { |
+ EXPECT_TRUE(emf.StartPage(gfx::Size(), gfx::Point(), 1)); |
+ ::Rectangle(emf.context(), 10, 10, 190, 190); |
+ EXPECT_TRUE(emf.FinishPage()); |
+ --pages; |
+ } |
+ EXPECT_TRUE(emf.FinishDocument()); |
+ size = emf.GetDataSize(); |
+ EXPECT_TRUE(emf.GetData(&data)); |
+ EXPECT_EQ(data.size(), size); |
+ } |
// Playback the data. |
DOCINFO di = {0}; |
di.cbSize = sizeof(DOCINFO); |
di.lpszDocName = L"Test Job"; |
int job_id = ::StartDoc(dc.Get(), &di); |
+ printing::Emf emf; |
EXPECT_TRUE(emf.InitFromData(&data.front(), size)); |
EXPECT_TRUE(emf.SafePlayback(dc.Get())); |
::EndDoc(dc.Get()); |
@@ -162,41 +165,39 @@ TEST_F(EmfPrintingTest, PageBreak) { |
} |
} |
-TEST(EmfTest, FileBackedDC) { |
+TEST(EmfTest, FileBackedEmf) { |
// Simplest use case. |
- printing::Emf emf; |
- RECT rect = {100, 100, 200, 200}; |
- HDC hdc = CreateCompatibleDC(NULL); |
- EXPECT_TRUE(hdc != NULL); |
ScopedTempDir scratch_metafile_dir; |
ASSERT_TRUE(scratch_metafile_dir.CreateUniqueTempDir()); |
FilePath metafile_path; |
EXPECT_TRUE(file_util::CreateTemporaryFileInDir(scratch_metafile_dir.path(), |
&metafile_path)); |
- EXPECT_TRUE(emf.CreateFileBackedDc(hdc, &rect, metafile_path)); |
- EXPECT_TRUE(emf.context() != NULL); |
- // In theory, you'd use the HDC with GDI functions here. |
- EXPECT_TRUE(emf.FinishDocument()); |
- |
- uint32 size = emf.GetDataSize(); |
- EXPECT_EQ(size, EMF_HEADER_SIZE); |
+ uint32 size; |
std::vector<BYTE> data; |
- EXPECT_TRUE(emf.GetData(&data)); |
- EXPECT_EQ(data.size(), size); |
- emf.CloseEmf(); |
+ { |
+ printing::Emf emf; |
+ EXPECT_TRUE(emf.InitToFile(metafile_path)); |
+ EXPECT_TRUE(emf.context() != NULL); |
+ // An empty EMF is invalid, so we put at least a rectangle in it. |
+ ::Rectangle(emf.context(), 10, 10, 190, 190); |
+ EXPECT_TRUE(emf.FinishDocument()); |
+ size = emf.GetDataSize(); |
+ EXPECT_GT(size, EMF_HEADER_SIZE); |
+ EXPECT_TRUE(emf.GetData(&data)); |
+ EXPECT_EQ(data.size(), size); |
+ } |
int64 file_size = 0; |
file_util::GetFileSize(metafile_path, &file_size); |
EXPECT_EQ(size, file_size); |
- EXPECT_TRUE(DeleteDC(hdc)); |
// Playback the data. |
- hdc = CreateCompatibleDC(NULL); |
+ HDC hdc = CreateCompatibleDC(NULL); |
EXPECT_TRUE(hdc); |
- EXPECT_TRUE(emf.CreateFromFile(metafile_path)); |
+ printing::Emf emf; |
+ EXPECT_TRUE(emf.InitFromFile(metafile_path)); |
RECT output_rect = {0, 0, 10, 10}; |
EXPECT_TRUE(emf.Playback(hdc, &output_rect)); |
EXPECT_TRUE(DeleteDC(hdc)); |
- emf.CloseEmf(); |
} |
} // namespace printing |