1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "printing/metafile.h" 6 7 #include <vector> 8 9 #include "base/files/file.h" 10 #include "base/numerics/safe_conversions.h" 11 12 namespace printing { 13 14 MetafilePlayer::MetafilePlayer() { 15 } 16 17 MetafilePlayer::~MetafilePlayer() { 18 } 19 20 Metafile::Metafile() { 21 } 22 23 Metafile::~Metafile() { 24 } 25 26 bool Metafile::GetDataAsVector(std::vector<char>* buffer) const { 27 buffer->resize(GetDataSize()); 28 if (buffer->empty()) 29 return false; 30 return GetData(&buffer->front(), base::checked_cast<uint32>(buffer->size())); 31 } 32 33 bool Metafile::SaveTo(base::File* file) const { 34 if (!file->IsValid()) 35 return false; 36 37 std::vector<char> buffer; 38 if (!GetDataAsVector(&buffer)) 39 return false; 40 41 int size = base::checked_cast<int>(buffer.size()); 42 if (file->WriteAtCurrentPos(&buffer[0], size) != size) { 43 DLOG(ERROR) << "Failed to save file."; 44 return false; 45 } 46 return true; 47 } 48 49 } // namespace printing 50