// services/network/public/mojom/source_location.mojom-lite-for-compile.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';

goog.require('mojo.internal');







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




mojo.internal.Struct(
    network.mojom.SourceLocationSpec.$,
    'SourceLocation',
    [
      mojo.internal.StructField(
        'url', 0,
        0,
        mojo.internal.String,
        null,
        false /* nullable */),
      mojo.internal.StructField(
        'line', 8,
        0,
        mojo.internal.Uint32,
        0,
        false /* nullable */),
      mojo.internal.StructField(
        'column', 12,
        0,
        mojo.internal.Uint32,
        0,
        false /* nullable */),
    ],
    [[0, 24],]);



goog.provide('network.mojom.SourceLocation');

/** @record */
network.mojom.SourceLocation = class {
  constructor() {
    /** @export { !string } */
    this.url;
    /** @export { !number } */
    this.line;
    /** @export { !number } */
    this.column;
  }
};


