// Copyright 2015 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// H5vcc stands for "HTML5 Video Container for Consoles".
//
// The H5vcc node acts as a Javascript namespace collecting various disparate
// APIs which allow clients to call non-standard native functions that we
// expose.
//
// For example we provide a h5vcc.storage.ClearCookies(), which can empty the
// cookie jar in response to the user's request. Other H5vcc modules expose
// audio capabilities about the platform, or run an in-app DIAL server.
//
// The H5vcc node should just be a collection of readonly sub-nodes.
// This is created by the BrowserModule and passed directly to the Window
// during construction.

interface H5vcc {
  readonly attribute H5vccAccessibility accessibility;
  readonly attribute H5vccAccountInfo accountInfo;
  readonly attribute H5vccAudioConfigArray audioConfig;
  [Conditional=COBALT_ENABLE_CRASH_LOG]
      readonly attribute H5vccCrashLog crashLog;
  readonly attribute CValView cVal;
  readonly attribute H5vccRuntime runtime;
  readonly attribute H5vccSettings settings;
  [Conditional=COBALT_ENABLE_SSO]
      readonly attribute H5vccSso sso;
  readonly attribute H5vccStorage storage;
  readonly attribute H5vccSystem system;
  readonly attribute H5vccTraceEvent traceEvent;
};
