1// Copyright (c) 2011 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 WEBCLIPBOARD_IMPL_H_
6#define WEBCLIPBOARD_IMPL_H_
7
8#include "third_party/WebKit/Source/WebKit/chromium/public/WebClipboard.h"
9#include "ui/base/clipboard/clipboard.h"
10
11#include <string>
12
13namespace webkit_glue {
14
15class WebClipboardImpl : public WebKit::WebClipboard {
16 public:
17  static std::string URLToMarkup(const WebKit::WebURL& url,
18      const WebKit::WebString& title);
19  static std::string URLToImageMarkup(const WebKit::WebURL& url,
20      const WebKit::WebString& title);
21
22  virtual ~WebClipboardImpl();
23
24  // WebClipboard methods:
25  virtual bool isFormatAvailable(Format, Buffer);
26  virtual WebKit::WebString readPlainText(Buffer);
27  virtual WebKit::WebString readHTML(Buffer, WebKit::WebURL* source_url);
28  virtual WebKit::WebData readImage(Buffer);
29  virtual void writeHTML(
30      const WebKit::WebString& html_text,
31      const WebKit::WebURL& source_url,
32      const WebKit::WebString& plain_text,
33      bool write_smart_paste);
34  virtual void writePlainText(const WebKit::WebString& plain_text);
35  virtual void writeURL(
36      const WebKit::WebURL&,
37      const WebKit::WebString& title);
38  virtual void writeImage(
39      const WebKit::WebImage&,
40      const WebKit::WebURL& source_url,
41      const WebKit::WebString& title);
42  virtual void writeData(
43      const WebKit::WebString& type,
44      const WebKit::WebString& data,
45      const WebKit::WebString& metadata);
46
47  virtual WebKit::WebVector<WebKit::WebString> readAvailableTypes(
48      Buffer, bool* contains_filenames);
49  virtual bool readData(Buffer, const WebKit::WebString& type,
50      WebKit::WebString* data, WebKit::WebString* metadata);
51  virtual WebKit::WebVector<WebKit::WebString> readFilenames(Buffer);
52
53 private:
54  bool ConvertBufferType(Buffer, ui::Clipboard::Buffer*);
55};
56
57}  // namespace webkit_glue
58
59#endif  // WEBCLIPBOARD_IMPL_H_
60