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

// Custom, not in spec. Interface wrapper for CobaltUADataValues to make
// compatible with Promises implementation in Cobalt.

[Constructor(CobaltUADataValues cobaltUADataValues)]
interface CobaltUADataValuesInterface {
  readonly attribute sequence<NavigatorUABrandVersion> brands;
  readonly attribute boolean mobile;
  readonly attribute DOMString platform;
  readonly attribute DOMString architecture;
  readonly attribute DOMString bitness;
  readonly attribute DOMString model;
  readonly attribute DOMString platformVersion;
  readonly attribute DOMString uaFullVersion;
  readonly attribute DOMString cobaltBuildNumber;
  readonly attribute DOMString cobaltBuildConfiguration;
  readonly attribute DOMString jsEngineVersion;
  readonly attribute DOMString rasterizer;
  readonly attribute DOMString evergreenType;
  readonly attribute DOMString evergreenFileType;
  readonly attribute DOMString evergreenVersion;
  readonly attribute DOMString starboardVersion;
  readonly attribute DOMString originalDesignManufacturer;
  readonly attribute DOMString deviceType;
  readonly attribute DOMString chipset;
  readonly attribute DOMString modelYear;
  readonly attribute DOMString deviceBrand;
  readonly attribute DOMString connectionType;
  readonly attribute DOMString aux;
};
