// services/network/public/mojom/supports_loading_mode.mojom-lite.js is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';


mojo.internal.exportModule('network.mojom');





/**
 * @const { {$: !mojo.internal.MojomType} }
 * @export
 */
network.mojom.LoadingModeSpec = { $: mojo.internal.Enum() };

/**
 * @enum {number}
 * @export
 */
network.mojom.LoadingMode = {
  
  kDefault: 0,
  kUncredentialedPrefetch: 1,
  kUncredentialedPrerender: 2,
  kFencedFrame: 3,
  MIN_VALUE: 0,
  MAX_VALUE: 3,
};




/**
 * @const { {$:!mojo.internal.MojomType}}
 * @export
 */
network.mojom.SupportsLoadingModeSpec =
    { $: /** @type {!mojo.internal.MojomType} */ ({}) };




mojo.internal.Struct(
    network.mojom.SupportsLoadingModeSpec.$,
    'SupportsLoadingMode',
    [
      mojo.internal.StructField(
        'supportedModes', 0,
        0,
        mojo.internal.Array(network.mojom.LoadingModeSpec.$, false),
        null,
        false /* nullable */),
    ],
    [[0, 16],]);





/** @record */
network.mojom.SupportsLoadingMode = class {
  constructor() {
    /** @export { !Array<!network.mojom.LoadingMode> } */
    this.supportedModes;
  }
};


