1// Copyright (c) 2012 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 REMOTING_HOST_CLIPBOARD_H_ 6#define REMOTING_HOST_CLIPBOARD_H_ 7 8#include <string> 9 10#include "base/callback.h" 11 12namespace remoting { 13 14namespace protocol { 15class ClipboardEvent; 16class ClipboardStub; 17} // namespace protocol 18 19// All Clipboard methods should be run on the UI thread, so that the Clipboard 20// can get change notifications. 21class Clipboard { 22 public: 23 virtual ~Clipboard() {} 24 25 // Initialises any objects needed to read from or write to the clipboard. 26 virtual void Start(scoped_ptr<protocol::ClipboardStub> client_clipboard) = 0; 27 28 // Destroys any objects initialised by Start(). 29 virtual void Stop() = 0; 30 31 // Writes an item to the clipboard. It must be called after Start(). 32 virtual void InjectClipboardEvent(const protocol::ClipboardEvent& event) = 0; 33 34 static scoped_ptr<Clipboard> Create(); 35}; 36 37} // namespace remoting 38 39#endif // REMOTING_HOST_CLIPBOARD_H_ 40