// 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. Holds UA information specific to Cobalt.

dictionary CobaltUADataValues : UADataValues {
  DOMString cobaltBuildNumber;
  DOMString cobaltBuildConfiguration;
  DOMString jsEngineVersion;
  DOMString rasterizer;
  DOMString evergreenType;
  DOMString evergreenVersion;
  DOMString starboardVersion;
  DOMString originalDesignManufacturer;
  DOMString deviceType;
  DOMString chipset;
  DOMString modelYear;
  DOMString deviceBrand;
  DOMString connectionType;
  DOMString aux;
};
