| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "printing/emf_win.h" | 5 #include "printing/emf_win.h" |
| 6 | 6 |
| 7 // For quick access. | 7 // For quick access. |
| 8 #include <wingdi.h> | 8 #include <wingdi.h> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/file_path.h" |
| 11 #include "base/file_util.h" | 12 #include "base/file_util.h" |
| 12 #include "base/path_service.h" | 13 #include "base/path_service.h" |
| 14 #include "printing/printing_context.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 16 |
| 15 namespace { | 17 namespace { |
| 16 | 18 |
| 17 // This test is automatically disabled if no printer named "UnitTest Printer" is | 19 // This test is automatically disabled if no printer named "UnitTest Printer" is |
| 18 // available. | 20 // available. |
| 19 class EmfPrintingTest : public testing::Test { | 21 class EmfPrintingTest : public testing::Test { |
| 20 public: | 22 public: |
| 21 typedef testing::Test Parent; | 23 typedef testing::Test Parent; |
| 22 static bool IsTestCaseDisabled() { | 24 static bool IsTestCaseDisabled() { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 53 | 55 |
| 54 // Playback the data. | 56 // Playback the data. |
| 55 hdc = CreateCompatibleDC(NULL); | 57 hdc = CreateCompatibleDC(NULL); |
| 56 EXPECT_TRUE(hdc); | 58 EXPECT_TRUE(hdc); |
| 57 EXPECT_TRUE(emf.CreateFromData(&data.front(), size)); | 59 EXPECT_TRUE(emf.CreateFromData(&data.front(), size)); |
| 58 RECT output_rect = {0, 0, 10, 10}; | 60 RECT output_rect = {0, 0, 10, 10}; |
| 59 EXPECT_TRUE(emf.Playback(hdc, &output_rect)); | 61 EXPECT_TRUE(emf.Playback(hdc, &output_rect)); |
| 60 EXPECT_TRUE(DeleteDC(hdc)); | 62 EXPECT_TRUE(DeleteDC(hdc)); |
| 61 } | 63 } |
| 62 | 64 |
| 63 // TODO(sverrir): Re-enable after win_printing_context has been moved here. | |
| 64 /* | |
| 65 | |
| 66 // DEPS check fails even if include is in a multi line comment: | |
| 67 // #include "printing/printing_context.h" | |
| 68 // #include "chrome/common/chrome_paths.h" | |
| 69 | |
| 70 // Disabled if no "UnitTest printer" exist. Useful to reproduce bug 1186598. | 65 // Disabled if no "UnitTest printer" exist. Useful to reproduce bug 1186598. |
| 71 TEST_F(EmfPrintingTest, Enumerate) { | 66 TEST_F(EmfPrintingTest, Enumerate) { |
| 72 if (IsTestCaseDisabled()) | 67 if (IsTestCaseDisabled()) |
| 73 return; | 68 return; |
| 74 | 69 |
| 75 printing::PrintSettings settings; | 70 printing::PrintSettings settings; |
| 76 | 71 |
| 77 // My test case is a HP Color LaserJet 4550 PCL. | 72 // My test case is a HP Color LaserJet 4550 PCL. |
| 78 settings.set_device_name(L"UnitTest Printer"); | 73 settings.set_device_name(L"UnitTest Printer"); |
| 79 | 74 |
| 80 // Initialize it. | 75 // Initialize it. |
| 81 printing::PrintingContext context; | 76 printing::PrintingContext context; |
| 82 EXPECT_EQ(context.InitWithSettings(settings), printing::PrintingContext::OK); | 77 EXPECT_EQ(context.InitWithSettings(settings), printing::PrintingContext::OK); |
| 83 | 78 |
| 84 std::wstring test_file; | 79 FilePath emf_file; |
| 85 PathService::Get(chrome::DIR_TEST_DATA, &test_file); | 80 EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &emf_file)); |
| 86 | 81 emf_file = emf_file.Append(FILE_PATH_LITERAL("printing")) |
| 82 .Append(FILE_PATH_LITERAL("test")) |
| 83 .Append(FILE_PATH_LITERAL("data")) |
| 84 .Append(FILE_PATH_LITERAL("test4.emf")); |
| 87 // Load any EMF with an image. | 85 // Load any EMF with an image. |
| 88 printing::Emf emf; | 86 printing::Emf emf; |
| 89 file_util::AppendToPath(&test_file, L"printing"); | |
| 90 file_util::AppendToPath(&test_file, L"test4.emf"); | |
| 91 std::string emf_data; | 87 std::string emf_data; |
| 92 file_util::ReadFileToString(test_file, &emf_data); | 88 file_util::ReadFileToString(emf_file, &emf_data); |
| 93 ASSERT_TRUE(emf_data.size()); | 89 ASSERT_TRUE(emf_data.size()); |
| 94 EXPECT_TRUE(emf.CreateFromData(&emf_data[0], emf_data.size())); | 90 EXPECT_TRUE(emf.CreateFromData(&emf_data[0], emf_data.size())); |
| 95 | 91 |
| 96 // This will print to file. The reason is that when running inside a | 92 // This will print to file. The reason is that when running inside a |
| 97 // unit_test, printing::PrintingContext automatically dumps its files to the | 93 // unit_test, printing::PrintingContext automatically dumps its files to the |
| 98 // current directory. | 94 // current directory. |
| 99 // TODO(maruel): Clean the .PRN file generated in current directory. | 95 // TODO(maruel): Clean the .PRN file generated in current directory. |
| 100 context.NewDocument(L"EmfTest.Enumerate"); | 96 context.NewDocument(L"EmfTest.Enumerate"); |
| 101 context.NewPage(); | 97 context.NewPage(); |
| 102 // Process one at a time. | 98 // Process one at a time. |
| 103 printing::Emf::Enumerator emf_enum(emf, context.context(), | 99 printing::Emf::Enumerator emf_enum(emf, context.context(), |
| 104 &emf.GetBounds().ToRECT()); | 100 &emf.GetBounds().ToRECT()); |
| 105 for (printing::Emf::Enumerator::const_iterator itr = emf_enum.begin(); | 101 for (printing::Emf::Enumerator::const_iterator itr = emf_enum.begin(); |
| 106 itr != emf_enum.end(); | 102 itr != emf_enum.end(); |
| 107 ++itr) { | 103 ++itr) { |
| 108 // To help debugging. | 104 // To help debugging. |
| 109 ptrdiff_t index = itr - emf_enum.begin(); | 105 ptrdiff_t index = itr - emf_enum.begin(); |
| 110 // If you get this assert, you need to lookup iType in wingdi.h. It starts | 106 // If you get this assert, you need to lookup iType in wingdi.h. It starts |
| 111 // with EMR_HEADER. | 107 // with EMR_HEADER. |
| 112 EMR_HEADER; | 108 EMR_HEADER; |
| 113 EXPECT_TRUE(itr->SafePlayback(NULL)) << | 109 EXPECT_TRUE(itr->SafePlayback(NULL)) << |
| 114 " index: " << index << " type: " << itr->record()->iType; | 110 " index: " << index << " type: " << itr->record()->iType; |
| 115 } | 111 } |
| 116 context.PageDone(); | 112 context.PageDone(); |
| 117 context.DocumentDone(); | 113 context.DocumentDone(); |
| 118 } | 114 } |
| 119 */ | 115 |
| OLD | NEW |