// Copyright 2014 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.

{%- if use_new_js_bindings %}

'use strict';

(function() {
  var mojomId = '{{module.path}}';
  if (mojoBindings.internal.isMojomLoaded(mojomId)) {
    console.warn('The following mojom is loaded multiple times: ' + mojomId);
    return;
  }
  mojoBindings.internal.markMojomLoaded(mojomId);

  // TODO(yzshen): Define these aliases to minimize the differences between the
  // old/new modes. Remove them when the old mode goes away.
  var bindings = mojoBindings;
  var codec = mojoBindings.internal;
  var validator = mojoBindings.internal;

{%-   for import in imports %}
  var {{import.unique_name}} =
      mojoBindings.internal.exposeNamespace('{{import.module.namespace}}');
  if (mojoBindings.config.autoLoadMojomDeps) {
    mojoBindings.internal.loadMojomIfNecessary(
        '{{import.module.path}}',
        new URL(
            '{{import.module|get_relative_path(module)}}.js',
            document.currentScript.src).href);
  }
{%-   endfor %}

{% include "module_definition.tmpl" %}
})();

{%- else %}

define("{{module.path}}", [
{%-   if module.path != "mojo/public/interfaces/bindings/interface_control_messages.mojom" %}
    "mojo/public/js/bindings",
{%-   endif %}
    "mojo/public/js/codec",
    "mojo/public/js/core",
    "mojo/public/js/validator",
{%-   for import in imports %}
    "{{import.module.path}}",
{%-   endfor %}
], function(
{%- if module.path != "mojo/public/interfaces/bindings/interface_control_messages.mojom" -%}
bindings, {% endif -%}
codec, core, validator
{%-   for import in imports -%}
    , {{import.unique_name}}
{%-   endfor -%}
) {

{%- include "module_definition.tmpl" %}

  return exports;
});

{%- endif %}
