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#ifndef CONTENT_RENDERER_WEBCLIPBOARD_IMPL_H_
6#define CONTENT_RENDERER_WEBCLIPBOARD_IMPL_H_
7
8#include "base/compiler_specific.h"
9
10#include "third_party/WebKit/public/platform/WebClipboard.h"
11#include "ui/base/clipboard/clipboard.h"
12
13#include <string>
14
15namespace content {
16class ClipboardClient;
17
18class WebClipboardImpl : public blink::WebClipboard {
19 public:
20  explicit WebClipboardImpl(ClipboardClient* client);
21
22  virtual ~WebClipboardImpl();
23
24  // WebClipboard methods:
25  virtual uint64 sequenceNumber(Buffer buffer);
26  virtual bool isFormatAvailable(Format format, Buffer buffer);
27  virtual blink::WebVector<blink::WebString> readAvailableTypes(
28      Buffer buffer, bool* contains_filenames);
29  virtual blink::WebString readPlainText(Buffer buffer);
30  virtual blink::WebString readHTML(
31      Buffer buffer,
32      blink::WebURL* source_url,
33      unsigned* fragment_start,
34      unsigned* fragment_end);
35  virtual blink::WebData readImage(Buffer buffer);
36  virtual blink::WebString readCustomData(
37      Buffer buffer, const blink::WebString& type);
38  virtual void writePlainText(const blink::WebString& plain_text);
39  virtual void writeHTML(
40      const blink::WebString& html_text,
41      const blink::WebURL& source_url,
42      const blink::WebString& plain_text,
43      bool write_smart_paste);
44  virtual void writeImage(
45      const blink::WebImage& image,
46      const blink::WebURL& source_url,
47      const blink::WebString& title);
48  virtual void writeDataObject(const blink::WebDragData& data);
49
50 private:
51  bool ConvertBufferType(Buffer, ui::ClipboardType*);
52  ClipboardClient* client_;
53};
54
55}  // namespace content
56
57#endif  // CONTENT_RENDERER_WEBCLIPBOARD_IMPL_H_
58