// 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 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;
};
