/**
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

{namespace com.google.gerrit.httpd.raw}

{template Index}
  {@param canonicalPath: ?}
  {@param staticResourcePath: ?}
  {@param gerritInitialData: /** {string} map of REST endpoint to response for startup. */ ?}
  {@param? enabledExperiments: /** A list of enabled experiments for current user. */ ?}
  {@param? assetsPath: ?}  /** {string} URL to static assets root, if served from CDN. */
  {@param? assetsBundle: ?}  /** {string} Assets bundle .html file, served from $assetsPath. */
  {@param? faviconPath: ?}
  {@param? versionInfo: ?}
  {@param? polyfillCE: ?}
  {@param? useGoogleFonts: ?}
  {@param? changeRequestsPath: ?}
  {@param? defaultChangeDetailHex: ?}
  {@param? defaultDiffDetailHex: ?}
  {@param? defaultDashboardHex: ?}
  {@param? dashboardQuery: ?}
  {@param? userIsAuthenticated: ?}
  <!DOCTYPE html>{\n}
  <html lang="en">{\n}
  <meta charset="utf-8">{\n}
  <meta name="description" content="Gerrit Code Review">{\n}
  <meta name="referrer" content="never">{\n}
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">{\n}

  <noscript>
    To use PolyGerrit, please enable JavaScript in your browser settings, and then refresh this page.
  </noscript>

  <script>
    // Disable extra font load from paper-styles
    window.polymerSkipLoadingFontRoboto = true;
    window.CLOSURE_NO_DEPS = true;
    window.DEFAULT_DETAIL_HEXES = {lb}
      {if $defaultChangeDetailHex}
        changePage: '{$defaultChangeDetailHex}',
      {/if}
      {if $defaultDiffDetailHex}
        diffPage: '{$defaultDiffDetailHex}',
      {/if}
      {if $defaultDashboardHex}
        dashboardPage: '{$defaultDashboardHex}',
      {/if}
    {rb};
    window.PRELOADED_QUERIES = {lb}
      {if $userIsAuthenticated and $defaultDashboardHex and $dashboardQuery}
        dashboardQuery: [{for $query in $dashboardQuery}{$query},{/for}],
      {/if}
    {rb};
    {if $canonicalPath != ''}window.CANONICAL_PATH = '{$canonicalPath}';{/if}
    {if $versionInfo}window.VERSION_INFO = '{$versionInfo}';{/if}
    {if $staticResourcePath != ''}window.STATIC_RESOURCE_PATH = '{$staticResourcePath}';{/if}
    {if $assetsPath}window.ASSETS_PATH = '{$assetsPath}';{/if}
    {if $polyfillCE}if (window.customElements) window.customElements.forcePolyfill = true;{/if}
    {if $gerritInitialData}
      // INITIAL_DATA is a string that represents a JSON map. It's inlined here so that we can
      // spare calls to the API when starting up the app.
      // The map maps from endpoint to returned value. This matches Gerrit's REST API 1:1, so the
      // values here can be used as a drop-in replacement for calls to the API.
      //
      // Example:
      // '/config/server/version' => '3.0.0-468-g0757b52a7d'
      // '/accounts/self/detail' => { 'username' : 'gerrit-user' }
      window.INITIAL_DATA = JSON.parse({$gerritInitialData});
    {/if}
    {if $enabledExperiments}
      // ENABLED_EXPERIMENTS is a list of string that contains all enabled experiments
      // for the given user.
      window.ENABLED_EXPERIMENTS = JSON.parse({$enabledExperiments});
    {/if}
  </script>{\n}

  {if $faviconPath}
    <link rel="icon" type="image/x-icon" href="{$canonicalPath}/{$faviconPath}">{\n}
  {else}
    <link rel="icon" type="image/x-icon" href="{$canonicalPath}/favicon.ico">{\n}
  {/if}
  {if $changeRequestsPath}
    {if $defaultChangeDetailHex}
      <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/detail?O={$defaultChangeDetailHex}" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
      {if $userIsAuthenticated}
        <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/edit/?download-commands=true" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
      {/if}
    {/if}
    {if $defaultDiffDetailHex}
      <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/detail?O={$defaultDiffDetailHex}" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
      {if $userIsAuthenticated}
        <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/edit/" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
      {/if}
      <link rel="preload" href="{$staticResourcePath}/bower_components/highlightjs/highlight.min.js" as="script"/>
    {/if}
    <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/comments" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
    <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/comments?enable-context=true&context-padding=3" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
    <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/robotcomments" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
    {if $userIsAuthenticated}
      <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/drafts" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
    {/if}
  {/if}
  {if $userIsAuthenticated and $defaultDashboardHex and $dashboardQuery}
    <link rel="preload" href="{$canonicalPath}/changes/?O={$defaultDashboardHex}&S=0{for $query in $dashboardQuery}&q={$query}{/for}" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
  {/if}

  {if $useGoogleFonts}
    <link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Roboto+Mono:400,500,700|Roboto:400,500,700|Open+Sans:400,600,700&display=swap">
  {else}
    // $useGoogleFonts only exists so that hosts can opt-out of loading fonts from fonts.googleapis.com.
    // fonts.css and the woff2 files in the fonts/ directory are only relevant, if $useGoogleFonts is false.

    // @see https://github.com/w3c/preload/issues/32 regarding crossorigin
    <link rel="preload" href="{$staticResourcePath}/fonts/opensans-latin-400.woff2"        as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/opensans-latin-600.woff2"        as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/opensans-latin-700.woff2"        as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/opensans-latin-ext-400.woff2"    as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/opensans-latin-ext-600.woff2"    as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/opensans-latin-ext-700.woff2"    as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-latin-400.woff2"          as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-latin-500.woff2"          as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-latin-700.woff2"          as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-latin-ext-400.woff2"      as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-latin-ext-500.woff2"      as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-latin-ext-700.woff2"      as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-mono-latin-400.woff2"     as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-mono-latin-500.woff2"     as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-mono-latin-700.woff2"     as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-mono-latin-ext-400.woff2" as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-mono-latin-ext-500.woff2" as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" href="{$staticResourcePath}/fonts/roboto-mono-latin-ext-700.woff2" as="font" type="font/woff2" crossorigin="anonymous">{\n}

    <link rel="preload" as="style" href="{$staticResourcePath}/styles/fonts.css">{\n}
  {/if}
  <link rel="preload" as="style" href="{$staticResourcePath}/styles/main.css">{\n}

  <script src="{$staticResourcePath}/bower_components/webcomponentsjs/webcomponents-lite.js"></script>{\n}

  // Content between webcomponents-lite and the load of the main app element
  // run before polymer-resin is installed so may have security consequences.
  // Contact your local security engineer if you have any questions, and
  // CC them on any changes that load content before gr-app.js.
  //
  // github.com/Polymer/polymer-resin/blob/master/getting-started.md#integrating
  {if $assetsPath and $assetsBundle}
    <link rel="import" href="{$assetsPath}/{$assetsBundle}">{\n}
  {/if}

  // Now use preloaded resources
  {if $useGoogleFonts}
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Mono:400,500,700|Roboto:400,500,700|Open+Sans:400,600,700&display=swap">{\n}
  {else}
    <link rel="stylesheet" href="{$staticResourcePath}/styles/fonts.css">{\n}
  {/if}
  <link rel="stylesheet" href="{$staticResourcePath}/styles/main.css">{\n}

  <body unresolved>{\n}
  <gr-app id="app"></gr-app>{\n}

  // Load gr-app.js after <gr-app ...> tag because gr-router expects that
  // <gr-app ...> already exists in the document when script is executed.
  <script src="{$staticResourcePath}/elements/gr-app.js" crossorigin="anonymous"></script>{\n}
{/template}
