blob: c1e1be4ee09f79244c36d7437d4d918d3e1958c8 [file] [log] [blame]
// 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 {
// A wrapper type which is just a Key/Value pair. Workaround until we get
// proper maps in mojom.
struct MimeTypePair {
string mime_type;
uint8[] data;
};
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) => (string[] 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) => (uint8[]? data);
// Writes a set of mime types to the clipboard. This will increment the
// sequence number. In the case of an empty or NULL list, this will just
// clear the clipboard.
WriteClipboardData(Type clipboard_type, MimeTypePair[]? data);
};
} // module mojo