// 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.

// https://w3c.github.io/presentation-api/#interface-presentationconnection

enum PresentationConnectionState {
    "connected",
    "closed",
    "terminated"
};

[
    RuntimeEnabled=Presentation
] interface PresentationConnection : EventTarget {
    readonly attribute USVString id;
    readonly attribute USVString url;
    readonly attribute PresentationConnectionState state;
    [MeasureAs=PresentationConnectionClose] void close();
    [MeasureAs=PresentationConnectionTerminate] void terminate();
    attribute EventHandler onconnect;
    attribute EventHandler onclose;
    attribute EventHandler onterminate;

    // Communication
    attribute BinaryType binaryType;
    attribute EventHandler onmessage;
    [RaisesException, MeasureAs=PresentationConnectionSend] void send(DOMString message);
    [RaisesException, MeasureAs=PresentationConnectionSend] void send(Blob data);
    [RaisesException, MeasureAs=PresentationConnectionSend] void send(ArrayBuffer data);
    [RaisesException, MeasureAs=PresentationConnectionSend] void send(ArrayBufferView data);
};
