1// Copyright (c) 2013 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 "content/renderer/scoped_clipboard_writer_glue.h"
6#include "base/logging.h"
7
8namespace content {
9
10ScopedClipboardWriterGlue::ScopedClipboardWriterGlue(ClipboardClient* client)
11    : ui::ScopedClipboardWriter(client->GetClipboard(),
12                                ui::Clipboard::BUFFER_STANDARD),
13      context_(client->CreateWriteContext()) {
14  // We should never have an instance where both are set.
15  DCHECK((clipboard_ && !context_.get()) ||
16         (!clipboard_ && context_.get()));
17}
18
19ScopedClipboardWriterGlue::~ScopedClipboardWriterGlue() {
20  if (!objects_.empty() && context_) {
21    context_->Flush(objects_);
22  }
23}
24
25void ScopedClipboardWriterGlue::WriteBitmapFromPixels(const void* pixels,
26                                                      const gfx::Size& size) {
27  if (context_) {
28    context_->WriteBitmapFromPixels(&objects_, pixels, size);
29  } else {
30    ScopedClipboardWriter::WriteBitmapFromPixels(pixels, size);
31  }
32}
33
34}  // namespace content
35
36