// Copyright 2014 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. module mojo; interface Clipboard { enum Type { COPY_PASTE = 0, SELECTION = 1, DRAG = 2 }; // Mime type constants const string MIME_TYPE_TEXT = "text/plain"; const string MIME_TYPE_HTML = "text/html"; const string MIME_TYPE_URL = "text/url"; // Returns a sequence number which uniquely identifies clipboard state. // Clients are able to assume that the clipboard contents are unchanged as // long as this number has not changed. This number is monotonically // increasing, is increased when the clipboard state changes, and is // provided by Windows, Linux, and Mac. GetSequenceNumber(Type clipboard_type) => (uint64 sequence); // Returns the available mime types. (Note: the chrome interface has a // |contains_filenames| parameter here, but it appears to always be set // to false.) GetAvailableMimeTypes(Type clipboard_types) => (array types); // Returns the data associated with a Mime type, returning NULL if that data // doesn't exist. Note: because of the inherit raciness of clipboard access, // this may return NULL even if you just verified that it exists with // GetAvailableFormatMimeTypes(). We don't want to provide one API to return // the entire clipboard state because the combined size of the clipboard can // be megabytes, especially when image data is involved. ReadMimeType(Type clipboard_type, string mime_type) => (array? data); // Writes a set of mime types to the clipboard. This will increment the // sequence number. In the case of an empty or null map, this will just // clear the clipboard. WriteClipboardData(Type clipboard_type, map>? data); };