# 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.

{
  'includes': [
    'remoting_version.gypi',
    'remoting_locales.gypi',
    'remoting_options.gypi',
    'remoting_webapp_files.gypi',
    'app_remoting_webapp_files.gypi',
  ],

  # GN version: See remoting/webapp/build_template.gni
  'target_defaults': {
    'type': 'none',

    'dependencies': [
      # TODO(wez): Create proper resources for shared-stub and app-specific
      # stubs.
      '<(DEPTH)/remoting/remoting.gyp:remoting_resources',
    ],

    'locale_files': [
      '<@(remoting_webapp_locale_files)',
    ],

    'includes': [
      '../chrome/js_unittest_vars.gypi',
    ],

    'variables': {
      'ar_app_manifest_app':
        '>(ar_app_path)/manifest.json.jinja2',
      'ar_app_manifest_common':
        'webapp/app_remoting/manifest_common.json.jinja2',
      'ar_app_specific_files': [
        '>(ar_app_path)/icon16.png',
        '>(ar_app_path)/icon48.png',
        '>(ar_app_path)/icon128.png',
        '>(ar_app_path)/loading_splash.png',
      ],
      'ar_generated_html_files': [
        '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/loading_window.html',
        '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/main.html',
        '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/message_window.html',
        '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/wcs_sandbox.html',
        '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/feedback_consent.html',
      ],
      'ar_webapp_files': [
        '<@(ar_app_specific_files)',
        '<@(ar_shared_resource_files)',
        '<@(ar_all_js_files)',
        '<@(ar_generated_html_files)',
      ],
      'output_dir': '<(PRODUCT_DIR)/app_streaming/<@(ar_service_environment)/>(_target_name)',
      'zip_path': '<(PRODUCT_DIR)/app_streaming/<@(ar_service_environment)/>(_target_name).zip',
      'remoting_app_id': [],
      'remoting_app_name': '>(_app_name)',
      'remoting_app_description': '>(_app_description)',

      'ar_webapp_locales_listfile': '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)_locales.txt',

      'conditions': [
        ['ar_internal != 1', {
          'ar_app_name': 'sample_app',
          'ar_app_path': 'webapp/app_remoting/apps/>(ar_app_name)',
        }, {
          # This takes target names of the form 'ar_vvv_xxx_xxx' and extracts
          # the vendor ('vvv') and the app name ('xxx_xxx').
          'ar_app_vendor': '>!(python -c "import sys; print sys.argv[1].split(\'_\')[1]" >(_target_name))',
          'ar_app_name': '>!(python -c "import sys; print \'_\'.join(sys.argv[1].split(\'_\')[2:])" >(_target_name))',
          'ar_app_path': 'webapp/app_remoting/internal/apps/>(ar_app_vendor)/>(ar_app_name)',
        }],
      ],  # conditions

    },  # variables

    'actions': [
      {
        'action_name': 'Build ">(ar_app_name)" locales listfile',
        'inputs': [
          '<(remoting_localize_path)',
        ],
        'outputs': [
          '<(ar_webapp_locales_listfile)',
        ],
        'action': [
          'python', '<(remoting_localize_path)',
          '--locale_output',
          '"<(webapp_locale_dir)/@{json_suffix}/messages.json"',
          '--locales_listfile',
          '<(ar_webapp_locales_listfile)',
          '<@(remoting_locales)',
        ],
      },
      {
        'action_name': 'Build ">(ar_app_name)" application stub',
        'inputs': [
          '<(DEPTH)/remoting/webapp/build-webapp.py',
          '<(chrome_version_path)',
          '<(remoting_version_path)',
          '<@(ar_webapp_files)',
          '<@(remoting_webapp_locale_files)',
          '<@(ar_generated_html_files)',
          '<(ar_app_manifest_app)',
          '<(DEPTH)/remoting/<(ar_app_manifest_common)',
          '<(ar_webapp_locales_listfile)',
        ],
        'outputs': [
          '<(output_dir)',
          '<(zip_path)',
        ],
        'action': [
          'python', '<(DEPTH)/remoting/webapp/build-webapp.py',
          '<(buildtype)',
          '<(version_full)',
          '<(output_dir)',
          '<(zip_path)',
          '<(ar_app_manifest_app)', # Manifest template
          'app_remoting',  # Web app type
          '<@(ar_webapp_files)',
          '--locales_listfile',
          '<(ar_webapp_locales_listfile)',
          '--jinja_paths',
          '<(DEPTH)/remoting/webapp/app_remoting',
          '<@(remoting_app_id)',
          '--app_name',
          '<(remoting_app_name)',
          '--app_description',
          '<(remoting_app_description)',
          '--app_capabilities',
          '>@(_app_capabilities)',
          '--service_environment',
          '<@(ar_service_environment)',
          '--manifest_key',
          '>@(_manifest_key)',
          '--app_client_id',
          '>@(_app_client_id)',
        ],
      },
      {
        'action_name': 'Build ">(ar_app_name)" main.html',
        'inputs': [
          '<(DEPTH)/remoting/webapp/build-html.py',
          '<(ar_main_template)',
          '<@(ar_main_template_files)',
        ],
        'outputs': [
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/main.html',
        ],
        'action': [
          'python', '<(DEPTH)/remoting/webapp/build-html.py',
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/main.html',
          '<(ar_main_template)',
          '--template-dir',
          '<(DEPTH)/remoting',
          '--templates',
          '<@(ar_main_template_files)',
          '--js',
          '<@(ar_main_js_files)',
        ],
      },
      {
        'action_name': 'Build ">(ar_app_name)" wcs_sandbox.html',
        'inputs': [
          '<(DEPTH)/remoting/webapp/build-html.py',
          '<(remoting_webapp_template_wcs_sandbox)',
        ],
        'outputs': [
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/wcs_sandbox.html',
        ],
        'action': [
          'python', '<(DEPTH)/remoting/webapp/build-html.py',
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/wcs_sandbox.html',
          '<(remoting_webapp_template_wcs_sandbox)',
          '--js',
          '<@(remoting_webapp_wcs_sandbox_html_all_js_files)',
        ],
      },
      {
        'action_name': 'Build ">(ar_app_name)" loading_window.html',
        'inputs': [
          '<(DEPTH)/remoting/webapp/build-html.py',
          '<(ar_loading_window_template)',
        ],
        'outputs': [
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/loading_window.html',
        ],
        'action': [
          'python', '<(DEPTH)/remoting/webapp/build-html.py',
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/loading_window.html',
          '<(ar_loading_window_template)',
          # The loading window is just a reskin of the message window--all
          # JS code is shared.
          '--js', '<@(remoting_webapp_message_window_html_all_js_files)',
        ],
      },
      {
        'action_name': 'Build ">(ar_app_name)" message_window.html',
        'inputs': [
          '<(DEPTH)/remoting/webapp/build-html.py',
          '<(remoting_webapp_template_message_window)',
        ],
        'outputs': [
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/message_window.html',
        ],
        'action': [
          'python', '<(DEPTH)/remoting/webapp/build-html.py',
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/message_window.html',
          '<(remoting_webapp_template_message_window)',
          '--js', '<@(remoting_webapp_message_window_html_all_js_files)',
        ],
      },
      {
        'action_name': 'Build ">(ar_app_name)" feedback_consent.html',
        'inputs': [
          '<(DEPTH)/remoting/webapp/build-html.py',
          '<(ar_feedback_consent_template)',
        ],
        'outputs': [
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/feedback_consent.html',
        ],
        'action': [
          'python', '<(DEPTH)/remoting/webapp/build-html.py',
          '<(SHARED_INTERMEDIATE_DIR)/>(_target_name)/feedback_consent.html',
          '<(ar_feedback_consent_template)',
          '--template-dir',
          '<(DEPTH)/remoting',
          '--js',
          '<@(ar_feedback_consent_html_all_js_files)',
        ],
      },
    ],  # actions
    'conditions': [
      ['buildtype == "Dev"', {
        # Normally, the app-id for the orchestrator is automatically extracted
        # from the webapp's extension id, but that approach doesn't work for
        # dev webapp builds (since they all share the same dev extension id).
        # The --appid arg will create a webapp that registers the given app-id
        # rather than using the extension id.
        # This is only done for Dev apps because the app-id for Release apps
        # *must* match the extension id.
        'variables': {
          'remoting_app_id': ['--appid', '>(_app_id)'],
        },
      }],
    ],  # conditions
  },  # target_defaults
}
