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

// Desktop Capture API that can be used to capture content of screen or
// individual windows or tabs.
namespace desktopCapture {
  // Enum used to define set of desktop media sources used in
  // chooseDesktopMedia().
  enum DesktopCaptureSourceType {
    screen,
    window,
    tab
  };

  // |streamId|: An opaque string that can be passed to
  // <code>getUserMedia()</code> API to generate media stream that corresponds
  // to the source selected by the user. If user didn't select any source
  // (i.e. canceled the prompt) then the callback is called with an empty
  // <code>streamId</code>.
  callback ChooseDesktopMediaCallback = void (DOMString streamId);

  interface Functions {
    // Shows desktop media picker UI with the specified set of sources.
    //
    // |sources|: Set of sources that should be shown to the user.
    //
    // |origin|: Optional origin of the page for which the stream is created. If
    // not specified then the resulting stream can be used only the calling
    // extension, otherwise the stream can be used only by a page with the
    // specified origin.
    static void chooseDesktopMedia(DesktopCaptureSourceType[] sources,
                                   optional DOMString origin,
                                   ChooseDesktopMediaCallback callback);
  };
};
