// Copyright 2015 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/mediacapture-record/MediaRecorder.html#MediaRecorderAPI

enum RecordingState { "inactive", "recording", "paused" };

[
    GarbageCollected,
    ActiveDOMObject,
    // TODO(mcasas): consider changing |mimeType| to a dictionary with said key, see https://github.com/w3c/mediacapture-record/issues/19
    Constructor(MediaStream stream, optional DOMString mimeType),
    ConstructorCallWith=ExecutionContext,
    RaisesException=Constructor,
    RuntimeEnabled=MediaRecorder,
] interface MediaRecorder : EventTarget {
    readonly attribute MediaStream stream;
    readonly attribute DOMString mimeType;
    readonly attribute RecordingState state;

    attribute EventHandler onstart;
    attribute EventHandler onstop;
    attribute EventHandler ondataavailable;
    attribute EventHandler onpause;
    attribute EventHandler onresume;
    attribute EventHandler onerror;
    attribute boolean ignoreMutedMedia;

    [RaisesException] void start(optional long timeslice);
    [RaisesException] void stop();
    [RaisesException] void pause();
    [RaisesException] void resume();
    [RaisesException] void requestData();

    static DOMString canRecordMimeType(DOMString mimeType);
};
