1// Copyright 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// This file mocks out just enough of the WebClipboard API for running the
6// webkit tests. This is so we can run webkit tests without them sharing a
7// clipboard, which allows for running them in parallel and having the tests
8// not interact with actual user actions.
9
10#ifndef CONTENT_TEST_MOCK_WEBCLIPBOARD_IMPL_H_
11#define CONTENT_TEST_MOCK_WEBCLIPBOARD_IMPL_H_
12
13#include <map>
14
15#include "base/strings/nullable_string16.h"
16#include "base/strings/string16.h"
17#include "third_party/WebKit/public/platform/WebClipboard.h"
18#include "third_party/WebKit/public/platform/WebDragData.h"
19#include "third_party/WebKit/public/platform/WebImage.h"
20
21namespace content {
22
23class MockWebClipboardImpl : public blink::WebClipboard {
24 public:
25  MockWebClipboardImpl();
26  virtual ~MockWebClipboardImpl();
27
28  virtual uint64_t sequenceNumber(Buffer);
29  virtual bool isFormatAvailable(blink::WebClipboard::Format format,
30                                 blink::WebClipboard::Buffer buffer);
31  virtual blink::WebVector<blink::WebString> readAvailableTypes(
32      blink::WebClipboard::Buffer buffer, bool* containsFilenames);
33
34  virtual blink::WebString readPlainText(blink::WebClipboard::Buffer buffer);
35  virtual blink::WebString readHTML(blink::WebClipboard::Buffer buffer,
36                                     blink::WebURL* url,
37                                     unsigned* fragmentStart,
38                                     unsigned* fragmentEnd);
39  virtual blink::WebData readImage(blink::WebClipboard::Buffer buffer);
40  virtual blink::WebString readCustomData(blink::WebClipboard::Buffer buffer,
41                                           const blink::WebString& type);
42
43  virtual void writePlainText(const blink::WebString& plain_text);
44  virtual void writeHTML(
45      const blink::WebString& htmlText, const blink::WebURL& url,
46      const blink::WebString& plainText, bool writeSmartPaste);
47  virtual void writeURL(
48      const blink::WebURL& url, const blink::WebString& title);
49  virtual void writeImage(
50      const blink::WebImage& image, const blink::WebURL& url,
51      const blink::WebString& title);
52  virtual void writeDataObject(const blink::WebDragData& data);
53
54 private:
55  void clear();
56
57  uint64_t m_sequenceNumber;
58  base::NullableString16 m_plainText;
59  base::NullableString16 m_htmlText;
60  blink::WebImage m_image;
61  std::map<base::string16, base::string16> m_customData;
62  bool m_writeSmartPaste;
63};
64
65}  // namespace content
66
67#endif  // CONTENT_TEST_MOCK_WEBCLIPBOARD_IMPL_H_
68