/**
 * 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? changeNum: ?}
  {@param? changeRequestsPath: ?}
  {@param? defaultChangeDetailHex: ?}
  {@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 $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}
    <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}
    <link rel="preload" href="{$canonicalPath}/changes/?q=change:{$changeNum}" as="fetch" type="application/json" crossorigin="anonymous"/>{\n}
    {if $userIsAuthenticated}
      <link rel="preload" href="{$canonicalPath}/{$changeRequestsPath}/drafts?enable-context=true&context-padding=3" 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">
    <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0..1,0" />{\n}
  {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" href="{$staticResourcePath}/fonts/material-icons.woff2"            as="font" type="font/woff2" crossorigin="anonymous">{\n}
    <link rel="preload" as="style" href="{$staticResourcePath}/styles/fonts.css">{\n}
    <link rel="preload" as="style" href="{$staticResourcePath}/styles/material-icons.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}
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0..1,0" />{\n}
  {else}
    <link rel="stylesheet" href="{$staticResourcePath}/styles/fonts.css">{\n}
    <link rel="stylesheet" href="{$staticResourcePath}/styles/material-icons.css">{\n}
  {/if}
  <link rel="stylesheet" href="{$staticResourcePath}/styles/main.css">{\n}

  <body unresolved>{\n}
  <gr-app id="pg-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}
