普通文本  |  37行  |  1.12 KB

// Copyright (c) 2013 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 "content/renderer/scoped_clipboard_writer_glue.h"
#include "base/logging.h"

namespace content {

ScopedClipboardWriterGlue::ScopedClipboardWriterGlue(ClipboardClient* client)
    : ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_COPY_PASTE),
      context_(client->CreateWriteContext()) {
  DCHECK(context_);
}

ScopedClipboardWriterGlue::~ScopedClipboardWriterGlue() {
  if (!objects_.empty() && context_) {
    context_->Flush(objects_);
    // TODO(dcheng): Temporary hack while the clipboard IPCs are cleaned up.
    // This prevents the base class destructor from also trying to (probably
    // unsuccessfully) flush things to the clipboard.
    objects_.clear();
  }
}

void ScopedClipboardWriterGlue::WriteBitmapFromPixels(const void* pixels,
                                                      const gfx::Size& size) {
  if (context_) {
    context_->WriteBitmapFromPixels(&objects_, pixels, size);
  } else {
    NOTREACHED();
  }
}

}  // namespace content