// 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 (mojo.internal.isMojomLoaded(mojomId)) {
    console.warn('The following mojom is loaded multiple times: ' + mojomId);
    return;
  }
  mojo.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 = mojo;
  var codec = mojo.internal;
  var validator = mojo.internal;

{%-   for import in imports %}
  var {{import.unique_name}} =
      mojo.internal.exposeNamespace('{{import.module.namespace}}');
  if (mojo.config.autoLoadMojomDeps) {
    mojo.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" and
       module.path !=
         "mojo/public/interfaces/bindings/pipe_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" and
       module.path !=
         "mojo/public/interfaces/bindings/pipe_control_messages.mojom" -%}
bindings, {% endif -%}
codec, core, validator
{%-   for import in imports -%}
    , {{import.unique_name}}
{%-   endfor -%}
) {

{%- include "module_definition.tmpl" %}

  return exports;
});

{%- endif %}
