| Index: printing/metafile.cc
|
| diff --git a/printing/metafile.cc b/printing/metafile.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..019c38ee9f4af40f3303879b9a1ba754573db353
|
| --- /dev/null
|
| +++ b/printing/metafile.cc
|
| @@ -0,0 +1,37 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "printing/metafile.h"
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/files/file.h"
|
| +#include "base/numerics/safe_conversions.h"
|
| +
|
| +namespace printing {
|
| +
|
| +bool Metafile::GetDataAsVector(std::vector<char>* buffer) const {
|
| + buffer->resize(GetDataSize());
|
| + if (buffer->empty())
|
| + return false;
|
| + return GetData(&buffer->front(), base::checked_cast<uint32>(buffer->size()));
|
| +}
|
| +
|
| +bool Metafile::SaveTo(base::File* file) const {
|
| + if (!file->IsValid())
|
| + return false;
|
| +
|
| + std::vector<char> buffer;
|
| + if (!GetDataAsVector(&buffer))
|
| + return false;
|
| +
|
| + int size = base::checked_cast<int>(buffer.size());
|
| + if (file->WriteAtCurrentPos(&buffer[0], size) != size) {
|
| + DLOG(ERROR) << "Failed to save file.";
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +} // namespace printing
|
|
|