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 12namespace printing { 13 14MetafilePlayer::MetafilePlayer() { 15} 16 17MetafilePlayer::~MetafilePlayer() { 18} 19 20Metafile::Metafile() { 21} 22 23Metafile::~Metafile() { 24} 25 26bool 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 33bool 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