Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: printing/emf_win_unittest.cc

Issue 374443003: clang/win: Fix "taking the address of a temporary" error. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include <winspool.h> 9 #include <winspool.h>
10 10
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 ASSERT_TRUE(emf_data.size()); 99 ASSERT_TRUE(emf_data.size());
100 EXPECT_TRUE(emf.InitFromData(&emf_data[0], emf_data.size())); 100 EXPECT_TRUE(emf.InitFromData(&emf_data[0], emf_data.size()));
101 101
102 // This will print to file. The reason is that when running inside a 102 // This will print to file. The reason is that when running inside a
103 // unit_test, PrintingContext automatically dumps its files to the 103 // unit_test, PrintingContext automatically dumps its files to the
104 // current directory. 104 // current directory.
105 // TODO(maruel): Clean the .PRN file generated in current directory. 105 // TODO(maruel): Clean the .PRN file generated in current directory.
106 context->NewDocument(L"EmfTest.Enumerate"); 106 context->NewDocument(L"EmfTest.Enumerate");
107 context->NewPage(); 107 context->NewPage();
108 // Process one at a time. 108 // Process one at a time.
109 Emf::Enumerator emf_enum(emf, context->context(), 109 RECT page_bounds = emf.GetPageBounds(1).ToRECT();
110 &emf.GetPageBounds(1).ToRECT()); 110 Emf::Enumerator emf_enum(emf, context->context(), &page_bounds);
111 for (Emf::Enumerator::const_iterator itr = emf_enum.begin(); 111 for (Emf::Enumerator::const_iterator itr = emf_enum.begin();
112 itr != emf_enum.end(); 112 itr != emf_enum.end();
113 ++itr) { 113 ++itr) {
114 // To help debugging. 114 // To help debugging.
115 ptrdiff_t index = itr - emf_enum.begin(); 115 ptrdiff_t index = itr - emf_enum.begin();
116 // If you get this assert, you need to lookup iType in wingdi.h. It starts 116 // If you get this assert, you need to lookup iType in wingdi.h. It starts
117 // with EMR_HEADER. 117 // with EMR_HEADER.
118 EMR_HEADER; 118 EMR_HEADER;
119 EXPECT_TRUE(itr->SafePlayback(&emf_enum.context_)) << 119 EXPECT_TRUE(itr->SafePlayback(&emf_enum.context_)) <<
120 " index: " << index << " type: " << itr->record()->iType; 120 " index: " << index << " type: " << itr->record()->iType;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 di.cbSize = sizeof(DOCINFO); 154 di.cbSize = sizeof(DOCINFO);
155 di.lpszDocName = L"Test Job"; 155 di.lpszDocName = L"Test Job";
156 int job_id = ::StartDoc(dc.Get(), &di); 156 int job_id = ::StartDoc(dc.Get(), &di);
157 Emf emf; 157 Emf emf;
158 EXPECT_TRUE(emf.InitFromData(&data.front(), size)); 158 EXPECT_TRUE(emf.InitFromData(&data.front(), size));
159 EXPECT_TRUE(emf.SafePlayback(dc.Get())); 159 EXPECT_TRUE(emf.SafePlayback(dc.Get()));
160 ::EndDoc(dc.Get()); 160 ::EndDoc(dc.Get());
161 // Since presumably the printer is not real, let us just delete the job from 161 // Since presumably the printer is not real, let us just delete the job from
162 // the queue. 162 // the queue.
163 HANDLE printer = NULL; 163 HANDLE printer = NULL;
164 if (::OpenPrinter(L"UnitTest Printer", &printer, NULL)) { 164 if (::OpenPrinter(const_cast<LPTSTR>(L"UnitTest Printer"), &printer, NULL)) {
165 ::SetJob(printer, job_id, 0, NULL, JOB_CONTROL_DELETE); 165 ::SetJob(printer, job_id, 0, NULL, JOB_CONTROL_DELETE);
166 ClosePrinter(printer); 166 ClosePrinter(printer);
167 } 167 }
168 } 168 }
169 169
170 TEST(EmfTest, FileBackedEmf) { 170 TEST(EmfTest, FileBackedEmf) {
171 // Simplest use case. 171 // Simplest use case.
172 base::ScopedTempDir scratch_metafile_dir; 172 base::ScopedTempDir scratch_metafile_dir;
173 ASSERT_TRUE(scratch_metafile_dir.CreateUniqueTempDir()); 173 ASSERT_TRUE(scratch_metafile_dir.CreateUniqueTempDir());
174 base::FilePath metafile_path; 174 base::FilePath metafile_path;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 EXPECT_EQ(emf.GetPageBounds(1), raster->GetPageBounds(1)); 221 EXPECT_EQ(emf.GetPageBounds(1), raster->GetPageBounds(1));
222 222
223 raster.reset(emf.RasterizeMetafile(16*1024*1024)); 223 raster.reset(emf.RasterizeMetafile(16*1024*1024));
224 // Expected size about 64MB. 224 // Expected size about 64MB.
225 EXPECT_LE(abs(int(raster->GetDataSize()) - 64*1024*1024), 1024*1024); 225 EXPECT_LE(abs(int(raster->GetDataSize()) - 64*1024*1024), 1024*1024);
226 // Bounds should still be the same. 226 // Bounds should still be the same.
227 EXPECT_EQ(emf.GetPageBounds(1), raster->GetPageBounds(1)); 227 EXPECT_EQ(emf.GetPageBounds(1), raster->GetPageBounds(1));
228 } 228 }
229 229
230 } // namespace printing 230 } // namespace printing
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698