<!--
Copyright 2024 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--
This file describes the enumerations referenced by entries in histograms.xml for
this directory. Some enums may instead be listed in the central enums.xml file
at src/tools/metrics/histograms/enums.xml when multiple files use them.

For best practices on writing enumerations descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#Enum-Histograms

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<!-- Enum types -->

<enums>

<!-- LINT.IfChange(ContextBackendUma) -->

<enum name="ContextBackendUma">
  <int value="0" label="NotSupported"/>
  <int value="1" label="CoreML"/>
  <int value="2" label="TFLite"/>
  <int value="3" label="LiteRT"/>
  <int value="4" label="ONNXRuntime"/>
  <int value="5" label="DirectML(Obsolete)"/>
</enum>

<!-- LINT.ThenChange(//services/webnn/webnn_context_impl.h:ContextBackendUma) -->

<!--
The values in DeviceTypeUma enum type map to those in the enum class
DeviceTypeUma in //services/webnn/webnn_context_provider_impl.cc.
-->

<enum name="DeviceTypeUma">
  <int value="0" label="Cpu"/>
  <int value="1" label="Gpu"/>
  <int value="2" label="Npu"/>
</enum>

<!-- LINT.IfChange(ExecutionProviderStatusUma) -->

<enum name="ExecutionProviderStatusUma">
  <int value="0" label="Unknown"/>
  <int value="1" label="EP version too low"/>
  <int value="2" label="Not installed"/>
  <int value="3" label="Ensure ready failed"/>
  <int value="4" label="Ready for use"/>
</enum>

<!-- LINT.ThenChange(//services/webnn/host/execution_provider_initializer.cc:ExecutionProviderStatusUma) -->

<!--
The values in MLGraphOperatorUma enum type map to those in the enum class
MLGraphOperatorUma in //third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.cc.
-->

<enum name="MLGraphOperatorUma">
  <int value="0" label="GraphBuilt"/>
  <int value="1" label="Abs"/>
  <int value="2" label="Add"/>
  <int value="3" label="ArgMax"/>
  <int value="4" label="ArgMin"/>
  <int value="5" label="AveragePool2d"/>
  <int value="6" label="BatchNormalization"/>
  <int value="7" label="Cast"/>
  <int value="8" label="Ceil"/>
  <int value="9" label="Clamp"/>
  <int value="10" label="Concat"/>
  <int value="11" label="Conv2d"/>
  <int value="12" label="ConvTranspose2d"/>
  <int value="13" label="Cos"/>
  <int value="14" label="CumulativeSum"/>
  <int value="15" label="DequantizeLinear"/>
  <int value="16" label="Div"/>
  <int value="17" label="Elu"/>
  <int value="18" label="Equal"/>
  <int value="19" label="Erf"/>
  <int value="20" label="Exp"/>
  <int value="21" label="Expand"/>
  <int value="22" label="Floor"/>
  <int value="23" label="Gather"/>
  <int value="24" label="GatherElements"/>
  <int value="25" label="GatherNd"/>
  <int value="26" label="Gelu"/>
  <int value="27" label="Gemm"/>
  <int value="28" label="Greater"/>
  <int value="29" label="GreaterOrEqual"/>
  <int value="30" label="Gru"/>
  <int value="31" label="GruCell"/>
  <int value="32" label="HardSigmoid"/>
  <int value="33" label="HardSwish"/>
  <int value="34" label="Identity"/>
  <int value="35" label="InstanceNormalization"/>
  <int value="36" label="L2Pool2d"/>
  <int value="37" label="LayerNormalization"/>
  <int value="38" label="LeakyRelu"/>
  <int value="39" label="Lesser"/>
  <int value="40" label="LesserOrEqual"/>
  <int value="41" label="Linear"/>
  <int value="42" label="Log"/>
  <int value="43" label="LogicalAnd"/>
  <int value="44" label="LogicalNot"/>
  <int value="45" label="LogicalOr"/>
  <int value="46" label="LogicalXor"/>
  <int value="47" label="Lstm"/>
  <int value="48" label="LstmCell"/>
  <int value="49" label="Matmul"/>
  <int value="50" label="Max"/>
  <int value="51" label="MaxPool2d"/>
  <int value="52" label="Min"/>
  <int value="53" label="Mul"/>
  <int value="54" label="Neg"/>
  <int value="55" label="Pad"/>
  <int value="56" label="Pow"/>
  <int value="57" label="Prelu"/>
  <int value="58" label="QuantizeLinear"/>
  <int value="59" label="Reciprocal"/>
  <int value="60" label="ReduceL1"/>
  <int value="61" label="ReduceL2"/>
  <int value="62" label="ReduceLogSum"/>
  <int value="63" label="ReduceLogSumExp"/>
  <int value="64" label="ReduceMax"/>
  <int value="65" label="ReduceMean"/>
  <int value="66" label="ReduceMin"/>
  <int value="67" label="ReduceProduct"/>
  <int value="68" label="ReduceSum"/>
  <int value="69" label="ReduceSumSquare"/>
  <int value="70" label="Relu"/>
  <int value="71" label="Resample2d"/>
  <int value="72" label="Reshape"/>
  <int value="73" label="ScatterElements"/>
  <int value="74" label="ScatterNd"/>
  <int value="75" label="Sigmoid"/>
  <int value="76" label="Sign"/>
  <int value="77" label="Sin"/>
  <int value="78" label="Slice"/>
  <int value="79" label="Softmax"/>
  <int value="80" label="Softplus"/>
  <int value="81" label="Softsign"/>
  <int value="82" label="Split"/>
  <int value="83" label="Sqrt"/>
  <int value="84" label="Sub"/>
  <int value="85" label="Tan"/>
  <int value="86" label="Tanh"/>
  <int value="87" label="Tile"/>
  <int value="88" label="Transpose"/>
  <int value="89" label="Triangular"/>
  <int value="90" label="Where"/>
  <int value="91" label="Reverse"/>
  <int value="92" label="NotEqual"/>
  <int value="93" label="RoundEven"/>
  <int value="94" label="IsNaN"/>
  <int value="95" label="IsInfinite"/>
</enum>

<!-- LINT.IfChange(WebNNOrtDeviceUma) -->

<enum name="WebNNOrtDeviceUma">
  <int value="0" label="CPU"/>
  <int value="1" label="GPU"/>
  <int value="2" label="NPU"/>
</enum>

<!-- LINT.ThenChange(//services/webnn/ort/context_impl_ort.cc:WebNNOrtDeviceUma) -->

<!-- LINT.IfChange(WebNNOrtEPUma) -->

<enum name="WebNNOrtEPUma">
  <int value="0" label="Other"/>
  <int value="1" label="CPU"/>
  <int value="2" label="Dml"/>
  <int value="3" label="WebGpu"/>
  <int value="4" label="MIGraphX"/>
  <int value="5" label="NvTensorRT"/>
  <int value="6" label="OpenVINO"/>
  <int value="7" label="QNN"/>
  <int value="8" label="VitisAI"/>
</enum>

<!-- LINT.ThenChange(//services/webnn/ort/context_impl_ort.cc:WebNNOrtEPUma) -->

<!-- LINT.IfChange(WinAppRuntimeInstallStateUma) -->

<enum name="WinAppRuntimeInstallStateUma">
  <int value="0" label="Windows Version Too Old"/>
  <int value="1" label="Activation Failure"/>
  <int value="2" label="Completed"/>
  <int value="3" label="Error"/>
  <int value="4" label="Canceled"/>
  <int value="5" label="Paused"/>
  <int value="6" label="Paused Low Battery"/>
  <int value="7" label="Paused WiFi Recommended"/>
  <int value="8" label="Paused WiFi Required"/>
  <int value="9" label="Runtime Already Present"/>
  <int value="10" label="Installation Failed To Start"/>
</enum>

<!-- LINT.ThenChange(//chrome/browser/webnn/win_app_runtime_installer.cc:WinAppRuntimeInstallStateUma) -->

</enums>

</histogram-configuration>
