Home | History | Annotate | Download | only in webapp
      1 <!doctype html>
      2 <!--
      3 Copyright (c) 2012 The Chromium Authors. All rights reserved.
      4 Use of this source code is governed by a BSD-style license that can be
      5 found in the LICENSE file.
      6 -->
      7 
      8 <html class="scrollable">
      9   <head>
     10     <meta charset="utf-8">
     11     <link rel="icon" type="image/png" href="chromoting16.webp">
     12     <link rel="stylesheet" href="open_sans.css">
     13     <link rel="stylesheet" href="connection_stats.css">
     14     <link rel="stylesheet" href="connection_history.css">
     15     <link rel="stylesheet" href="main.css">
     16     <link rel="stylesheet" href="menu_button.css">
     17     <link rel="stylesheet" href="toolbar.css">
     18     <script src="butter_bar.js"></script>
     19     <script src="client_plugin.js"></script>
     20     <script src="client_plugin_async.js"></script>
     21     <script src="client_screen.js"></script>
     22     <script src="client_session.js"></script>
     23     <script src="clipboard.js"></script>
     24     <script src="connection_history.js"></script>
     25     <script src="connection_stats.js"></script>
     26     <script src="error.js"></script>
     27     <script src="event_handlers.js"></script>
     28     <script src="format_iq.js"></script>
     29     <script src="host.js"></script>
     30     <script src="host_controller.js"></script>
     31     <script src="host_dispatcher.js"></script>
     32     <script src="host_list.js"></script>
     33     <script src="host_native_messaging.js"></script>
     34     <script src="host_screen.js"></script>
     35     <script src="host_session.js"></script>
     36     <script src="host_settings.js"></script>
     37     <script src="host_setup_dialog.js"></script>
     38     <script src="host_table_entry.js"></script>
     39     <script src="identity.js"></script>
     40     <script src="l10n.js"></script>
     41     <script src="log_to_server.js"></script>
     42     <script src="menu_button.js"></script>
     43     <script src="oauth2.js"></script>
     44     <script src="oauth2_api.js"></script>
     45     <script src="paired_client_manager.js"></script>
     46     <script src="plugin_settings.js"></script>
     47     <script src="remoting.js"></script>
     48     <script src="server_log_entry.js"></script>
     49     <script src="session_connector.js"></script>
     50     <script src="stats_accumulator.js"></script>
     51     <script src="third_party_host_permissions.js"></script>
     52     <script src="third_party_token_fetcher.js"></script>
     53     <script src="toolbar.js"></script>
     54     <script src="ui_mode.js"></script>
     55     <script src="xhr.js"></script>
     56     <script src="wcs_sandbox_container.js"></script>
     57     <title i18n-content="PRODUCT_NAME"></title>
     58   </head>
     59 
     60   <body>
     61 
     62     <!-- loading-mode is initially visible, but becomes hidden as soon as an
     63          AppMode is selected by remoting.init. All other divs are initially
     64          hidden, but are shown appropriately when the mode changes. -->
     65     <section id="loading-mode" data-ui-mode="">
     66       <em>Loading&hellip;</em>
     67     </section> <!-- loading-mode -->
     68 
     69     <div id="daemon-plugin-container"></div>
     70     <div id="host-plugin-container"></div>
     71 
     72     <iframe id="wcs-sandbox" src="wcs_sandbox.html" hidden></iframe>
     73 
     74     <header data-ui-mode="home" hidden>
     75       <div>
     76         <img src="chromoting48.webp">
     77         <h1 class="icon-label" i18n-content="PRODUCT_NAME"></h1>
     78       </div>
     79       <div class="box-spacer"></div>
     80       <div id="top-secondary">
     81         <span id="current-email"></span>
     82         <span data-ui-mode="home" class="apps-v1-only">
     83           <a id="sign-out" href="#" i18n-content="SIGN_OUT_BUTTON"></a>
     84           <!-- TODO(jamiewalch): Add this back in when we support it.
     85           <a id="connection-history"
     86              i18n-content="CONNECTION_HISTORY_BUTTON"></a> |
     87           -->
     88         </span> |
     89         <a href="https://www.google.com/support/chrome/bin/answer.py?answer=1649523"
     90            target="_blank" i18n-content="HELP"></a>
     91       </div>
     92     </header>
     93 
     94     <div data-ui-mode="home">
     95       <div id="butter-bar" hidden>
     96         <p>
     97           <span id="butter-bar-message"></span>
     98           <a id="butter-bar-dismiss" href="#">
     99             <img src="icon_cross.webp" class="close-icon">
    100           </a>
    101         </p>
    102       </div>
    103     </div>
    104 
    105     <div data-ui-mode="home" hidden>
    106 
    107       <section>
    108         <h2 i18n-content="MODE_IT2ME"></h2>
    109         <div id="it2me-first-run">
    110           <div>
    111             <p class="infographic-description"
    112                i18n-content="IT2ME_FIRST_RUN"></p>
    113             <button id="get-started-it2me"
    114                     i18n-content="GET_STARTED"
    115                     disabled></button>
    116           </div>
    117           <div class="infographic">
    118             <img src="infographic_remote_assistance.webp">
    119           </div>
    120         </div>
    121         <div id="it2me-content">
    122           <p id="webapp-description"
    123              i18n-content="DESCRIPTION_HOME"
    124              i18n-value-1="<a href='https://chrome.google.com/remotedesktop' target='_blank'>chrome.google.com/remotedesktop</a>"></p>
    125           <div>
    126             <div class="section-row">
    127               <div class="box-spacer">
    128                 <div i18n-content="HOME_SHARE_DESCRIPTION"></div>
    129                 <div id="chrome-os-no-share"
    130                      i18n-content="HOME_SHARE_DESCRIPTION_CHROME_OS"
    131                      class="small-print"></div>
    132               </div>
    133               <div>
    134                 <button id="share-button"
    135                         i18n-content="HOME_SHARE_BUTTON"
    136                         class="kd-button-share"
    137                         type="button">
    138                 </button>
    139               </div>
    140             </div>
    141           </div>
    142           <div class="section-row">
    143             <div i18n-content="HOME_ACCESS_DESCRIPTION"
    144                  class="box-spacer"></div>
    145             <div>
    146               <button id="access-mode-button"
    147                       i18n-content="HOME_ACCESS_BUTTON"
    148                       type="button">
    149               </button>
    150             </div>
    151           </div>
    152         </div> <!-- it2me-content -->
    153       </section> <!-- Remote Assistance -->
    154 
    155       <section id="host-list-div" class="host-list-container">
    156         <div id="me2me-first-run">
    157           <h2 i18n-content="MODE_ME2ME"></h2>
    158           <div>
    159             <p class="infographic-description"
    160                i18n-content="ME2ME_FIRST_RUN"></p>
    161             <button id="get-started-me2me"
    162                     i18n-content="GET_STARTED"
    163                     disabled></button>
    164           </div>
    165           <div class="infographic">
    166             <img src="infographic_my_computers.webp">
    167           </div>
    168         </div>
    169         <div id="me2me-content">
    170           <h2>
    171             <span i18n-content="MODE_ME2ME"></span>
    172             <span class="h2-secondary" id="host-list-loading-indicator">
    173               <a href="#" id="host-list-reload"
    174                  class="icon-black"
    175                  i18n-title="TOOLTIP_REFRESH">
    176                 <img src="reload.webp">
    177               </a>
    178               <img src="spinner.gif" id="host-list-loading">
    179             </span>
    180           </h2>
    181           <div id="host-list" hidden></div>
    182           <div id="host-list-error" class="box" hidden>
    183             <div id="host-list-error-message" class="error-state"></div>
    184             <div class="box-spacer"></div>
    185             <button type="button"
    186                     id="host-list-refresh-failed-button"></button>
    187           </div>
    188           <div id="daemon-control" data-daemon-state="enabled disabled" hidden>
    189             <div class="section-row no-non-local-hosts"
    190                  data-daemon-state="disabled">
    191               <img src="icon_host.webp" class="host-list-main-icon">
    192               <div class="box-spacer host-list-label"
    193                    id="start-daemon-message"
    194                    i18n-content="HOME_DAEMON_START_MESSAGE"></div>
    195               <button type="button"
    196                       id="start-daemon"
    197                       i18n-content="HOME_DAEMON_START_BUTTON">
    198               </button>
    199             </div> <!-- disabled -->
    200             <div id="this-host-connect"
    201                  class="section-row clickable no-non-local-hosts"
    202                  data-daemon-state="enabled">
    203               <div class="host-list-main-icon">
    204                 <span id="this-host-warning"></span>
    205                 <img id="this-host-icon"
    206                      src="icon_host.webp">
    207               </div>
    208               <div id="this-host-name" class="box-spacer"></div>
    209               <span id="this-host-rename"
    210                     class="host-list-edit"
    211                     tabIndex="0"
    212                     i18n-title="TOOLTIP_RENAME">
    213                 <img id="this-host-rename"
    214                      class="host-list-rename-icon"
    215                      src="icon_pencil.webp">
    216               </span>
    217               <button type="button"
    218                       id="stop-daemon"
    219                       i18n-content="HOME_DAEMON_STOP_BUTTON">
    220               </button>
    221             </div> <!-- enabled -->
    222             <div data-daemon-state="enabled">
    223               <div>
    224                 <span i18n-content="HOME_DAEMON_ACTIVE_MESSAGE"></span>
    225                 <a id="change-daemon-pin"
    226                    href="#"
    227                    i18n-content="HOME_DAEMON_CHANGE_PIN_LINK"></a>
    228               </div>
    229               <div id="paired-client-manager-message" hidden>
    230                 <span i18n-content="HOME_DAEMON_PAIRED_MESSAGE"></span>
    231                 <a href="#"
    232                    id="open-paired-client-manager-dialog"
    233                    i18n-content="HOME_DAEMON_MANAGE_PAIRINGS"></a>
    234             </div>
    235           </div> <!-- daemon-control -->
    236           <div id="host-list-empty" hidden>
    237             <div id="host-list-empty-hosting-supported"
    238                  class="host-list-empty-instructions"
    239                  i18n-content="HOST_LIST_EMPTY_HOSTING_SUPPORTED"
    240                  i18n-value-name-1="HOME_DAEMON_START_BUTTON">
    241             </div>
    242             <div id="host-list-empty-hosting-unsupported"
    243                  class="host-list-empty-instructions"
    244                  i18n-content="HOST_LIST_EMPTY_HOSTING_UNSUPPORTED"
    245                  i18n-value-name-1="HOME_DAEMON_START_BUTTON">
    246             </div>
    247           </div>
    248         </div> <!-- me2me-content -->
    249       </section> <!-- host-list-div -->
    250     </div> <!-- home -->
    251 
    252     <div id="auth-dialog" hidden>
    253       <div class="dialog-screen"></div>
    254       <div class="dialog-container">
    255         <div class="box-spacer"></div>
    256         <div class="kd-modaldialog">
    257           <h2 i18n-content="MODE_AUTHORIZE"></h2>
    258           <p id="auth-error-message"
    259              i18n-content="DESCRIPTION_AUTHORIZE"
    260              class="message"></p>
    261           <div class="button-row">
    262             <button id="auth-button"
    263                     type="button"
    264                     autofocus="autofocus"
    265                     i18n-content="CONTINUE_BUTTON">
    266             </button>
    267           </div>
    268         </div>
    269         <div class="box-spacer"></div>
    270       </div>
    271     </div> <!-- auth-dialog -->
    272 
    273     <div class="dialog-screen"
    274          data-ui-mode="home.host home.client home.history home.confirm-host-delete home.host-setup home.token-refresh-failed home.manage-pairings"
    275          hidden></div>
    276 
    277     <div class="dialog-container"
    278          data-ui-mode="home.host home.client home.history home.confirm-host-delete home.host-setup home.token-refresh-failed home.manage-pairings"
    279          hidden>
    280 
    281       <div class="box-spacer"></div>
    282 
    283       <!-- TODO(jamiewalch): Refactor the various error-state divs -->
    284       <div class="kd-modaldialog" data-ui-mode="home.token-refresh-failed">
    285         <div class="message">
    286           <span id="token-refresh-error-message" class="error-state"></span>
    287         </div>
    288         <div id="token-refresh-auth-failed" class="button-row">
    289           <button id="token-refresh-error-sign-in"
    290                   type="button"
    291                   i18n-content="SIGN_IN_BUTTON"></button>
    292         </div>
    293         <div id="token-refresh-other-error" class="button-row">
    294           <button id="token-refresh-error-ok"
    295                   type="button"
    296                   i18n-content="OK"></button>
    297         </div>
    298       </div> <!-- home.token-refresh-failed -->
    299 
    300       <div id="host-setup-dialog"
    301            class="kd-modaldialog"
    302            data-ui-mode="home.host-setup">
    303         <form id="ask-pin-form"
    304               data-ui-mode="home.host-setup.ask-pin"
    305               action="">
    306           <p class="message">
    307             <span i18n-content="HOST_SETUP_DIALOG_DESCRIPTION"
    308                   i18n-value-1="<b>"
    309                   i18n-value-2="</b>"></span>
    310             <a href="http://support.google.com/chrome/bin/answer.py?hl=en&answer=1649523"
    311                target="_blank"
    312                i18n-content="WHY_IS_THIS_SAFE"></a>
    313           </p>
    314           <table id="set-pin-table">
    315             <tr>
    316               <td class="table-label">
    317                 <label for="daemon-pin-entry"
    318                        i18n-content="ASK_PIN_DIALOG_LABEL"
    319                        class="editbox-label"></label>
    320               </td>
    321               <td>
    322                 <input id="daemon-pin-entry"
    323                        autofocus="autofocus"
    324                        type="password">
    325               </td>
    326             </tr>
    327             <tr>
    328               <td class="table-label">
    329                 <label for="daemon-pin-confirm"
    330                        i18n-content="ASK_PIN_DIALOG_CONFIRM_LABEL"
    331                        class="editbox-label"></label>
    332               </td>
    333               <td>
    334                 <input id="daemon-pin-confirm" type="password">
    335               </td>
    336             <tr>
    337           </table>
    338           <div id="daemon-pin-error-div" class="message" hidden>
    339             <span id="daemon-pin-error-message" class="error-state">
    340             </span>
    341           </div>
    342           <div id="usagestats-consent" hidden>
    343             <label class="checkbox-label">
    344               <input id="usagestats-consent-checkbox" type="checkbox">
    345               <span i18n-content="HOST_SETUP_CRASH_REPORTING_MESSAGE"></span>
    346             </label>
    347           </div>
    348           <div class="button-row">
    349             <button id="daemon-pin-ok" type="submit" i18n-content="OK">
    350             </button>
    351             <button id="daemon-pin-cancel" type="button" i18n-content="CANCEL">
    352             </button>
    353           </div>
    354         </form>
    355         <div data-ui-mode="home.host-setup.processing"
    356              class="box"
    357              hidden>
    358           <span class="waiting prominent"
    359                 id="host-setup-processing-message">
    360           </span>
    361         </div>
    362         <div data-ui-mode="home.host-setup.done" hidden>
    363           <div id="host-setup-done-message" class="message"></div>
    364           <div id="host-setup-done-message-2" class="message"></div>
    365           <div class="button-row">
    366             <button id="host-config-done-dismiss"
    367                     autofocus="autofocus"
    368                     i18n-content="OK"></button>
    369           </div>
    370         </div>
    371         <div data-ui-mode="home.host-setup.error" hidden>
    372           <div id="host-setup-error-message" class="error-state"></div>
    373           <div class="button-row">
    374             <button id="host-config-error-dismiss"
    375                     autofocus="autofocus"
    376                     i18n-content="OK"></button>
    377           </div>
    378         </div>
    379         <div data-ui-mode="home.host-setup.install" hidden>
    380           <div class="message" i18n-content="HOST_SETUP_INSTALL"></div>
    381           <div class="button-row">
    382             <button id="host-config-install-continue"
    383                     autofocus="autofocus"
    384                     i18n-content="OK"></button>
    385             <button id="host-config-install-dismiss"
    386                     i18n-content="CANCEL"></button>
    387           </div>
    388         </div>
    389         <div data-ui-mode="home.host-setup.install-pending" hidden>
    390           <div class="message"
    391                     i18n-content="HOST_SETUP_INSTALL_PENDING"></div>
    392           <div class="button-row">
    393             <button id="host-config-install-retry"
    394                     autofocus="autofocus"
    395                     i18n-content="OK"></button>
    396           </div>
    397         </div>
    398       </div> <!-- host-setup-dialog -->
    399 
    400       <div id="host-dialog"
    401            class="kd-modaldialog"
    402            data-ui-mode="home.host">
    403 
    404         <div data-ui-mode="home.host.waiting-for-code" class="message"
    405              i18n-content="MESSAGE_GENERATING">
    406         </div> <!-- host.waiting-for-code -->
    407 
    408         <div data-ui-mode="home.host.waiting-for-connection">
    409           <div i18n-content="INSTRUCTIONS_SHARE_ABOVE"></div>
    410           <div id="access-code-display" dir="ltr" class="selectable"></div>
    411           <div id="access-code-countdown-container">
    412             <div id="access-code-countdown" class="expiring" hidden>
    413               <span id="seconds-remaining"
    414                     i18n-content="ACCESS_CODE_TIMER"></span>
    415             </div>
    416           </div>
    417           <div i18n-content="INSTRUCTIONS_SHARE_BELOW"></div>
    418         </div> <!-- host.waiting-for-connection -->
    419 
    420         <div data-ui-mode="home.host.shared">
    421           <div id="host-shared-message" class="message"
    422                i18n-content="MESSAGE_SHARED"></div>
    423           <div class="button-row">
    424             <button id="stop-sharing-button"
    425                     type="button"
    426                     i18n-content="STOP_SHARING_BUTTON">
    427             </button>
    428           </div>
    429         </div> <!-- host.shared -->
    430 
    431         <div data-ui-mode="home.host.share-failed" class="message">
    432           <span id="host-plugin-error" class="error-state"></span>
    433         </div> <!-- host.share-failed -->
    434 
    435         <div data-ui-mode="home.host.share-finished" class="message"
    436              i18n-content="MESSAGE_SESSION_FINISHED">
    437         </div> <!-- host.share-finished -->
    438 
    439         <div data-ui-mode="home.host.share-failed home.host.share-finished"
    440              class="button-row">
    441           <button id="host-finished-button"
    442                   type="button"
    443                   autofocus="autofocus"
    444                   i18n-content="OK">
    445           </button>
    446         </div>
    447 
    448         <div id="nat-box"
    449              class="information-box"
    450              data-ui-mode="home.host.waiting-for-connection"
    451              i18n-content="WARNING_NAT_DISABLED">
    452         </div> <!-- nat-box -->
    453 
    454         <div data-ui-mode="home.host.waiting-for-connection home.host.waiting-for-code"
    455              class="button-row">
    456           <span class="waiting" i18n-content="FOOTER_WAITING"></span>
    457           <button id="cancel-share-button" i18n-content="CANCEL"></button>
    458         </div>
    459 
    460       </div> <!-- host dialog -->
    461 
    462       <div id="client-dialog"
    463            class="kd-modaldialog"
    464            data-ui-mode="home.client">
    465 
    466         <div data-ui-mode="home.client.unconnected">
    467           <div i18n-content="DESCRIPTION_CONNECT"></div>
    468           <div id="access-code-entry-row">
    469             <form id="access-code-form" action="">
    470               <div class="box">
    471                 <div class="box-spacer"></div>
    472                 <label for="access-code-entry"
    473                        i18n-content="ACCESS_CODE"
    474                        class="editbox-label">
    475                 </label>
    476                 <input id="access-code-entry"
    477                        type="text"
    478                        autofocus="autofocus"
    479                        autocomplete="off"/>
    480                 <div class="box-spacer"></div>
    481               </div>
    482               <div class="button-row">
    483                 <button id="connect-button"
    484                         type="submit"
    485                         i18n-content="CONNECT_BUTTON">
    486                 </button>
    487                 <button id="cancel-access-code-button"
    488                         type="button"
    489                         i18n-content="CANCEL">
    490                 </button>
    491               </div>
    492             </form>
    493           </div> <!-- code-entry-row -->
    494           <div id="startup-mode-box-it2me" class="information-box" hidden>
    495             <span i18n-content="WARNING_NOT_WINDOWED"></span>
    496             <a href="http://support.google.com/chrome/bin/answer.py?hl=en&answer=1649523"
    497                target="_blank"
    498                i18n-content="LEARN_HOW"></a>
    499           </div> <!-- startup-mode-box-it2me -->
    500 
    501         </div> <!-- client.unconnected -->
    502 
    503         <div data-ui-mode="home.client.connecting" class="box">
    504           <span class="waiting prominent"
    505                 i18n-content="FOOTER_CONNECTING"></span>
    506           <div class="box-spacer"></div>
    507           <button id="cancel-connect-button" i18n-content="CANCEL"></button>
    508         </div> <!-- client.connecting -->
    509 
    510         <div data-ui-mode="home.client.host-needs-upgrade">
    511           <div id="host-needs-update-message"
    512                class="message error-state multi-line-error-state">
    513           </div>
    514           <div class="message">
    515             <span i18n-content="HOST_NEEDS_UPDATE_DETAIL"></span>
    516             <a href="http://support.google.com/chrome/bin/answer.py?hl=en&answer=1649523"
    517                target="_blank"
    518                i18n-content="LEARN_HOW"></a>
    519           </div>
    520           <div class="button-row">
    521             <button id="host-needs-update-connect-button"
    522                     type="button"
    523                     i18n-content="CONNECT_ANYWAY"
    524                     autofocus="autofocus">
    525             </button>
    526             <button id="host-needs-update-cancel-button"
    527                     type="button"
    528                     i18n-content="CANCEL">
    529             </button>
    530           </div>
    531         </div> <!-- home.client.host-needs-upgrade -->
    532 
    533         <div data-ui-mode="home.client.pin-prompt">
    534           <div id="pin-message"
    535                i18n-content="PIN_MESSAGE"
    536                class="message"></div>
    537           <form id="pin-form" action="">
    538             <table class="centered">
    539               <tr>
    540                 <td>
    541                   <label for="pin-entry"
    542                          i18n-content="PIN"
    543                          class="editbox-label"></label>
    544                 </td>
    545                 <td>
    546                   <input id="pin-entry"
    547                          type="password"
    548                          autofocus="autofocus"
    549                          autocomplete="off"/>
    550                   <button id="pin-connect-button"
    551                           type="submit"
    552                           i18n-content="CONNECT_BUTTON">
    553                   </button>
    554                   <button id="cancel-pin-entry-button"
    555                           type="button"
    556                           i18n-content="CANCEL">
    557                   </button>
    558                 </td>
    559               </tr>
    560               <tr>
    561                 <td>
    562                   <!-- Empty cell to align the checkbox and PIN entry. -->
    563                 </td>
    564                 <td>
    565                   <label id="remember-pin" class="checkbox-label">
    566                     <input id="remember-pin-checkbox" type="checkbox">
    567                     <span i18n-content="REMEMBER_PIN"></span>
    568                   </label>
    569                 </td>
    570               </tr>
    571             </table>
    572           </form>
    573           <div id="startup-mode-box-me2me"
    574                class="information-box centered"
    575                hidden>
    576             <span i18n-content="WARNING_NOT_WINDOWED"></span>
    577             <a href="http://support.google.com/chrome/bin/answer.py?hl=en&answer=1649523"
    578                target="_blank"
    579                i18n-content="LEARN_HOW"></a>
    580           </div> <!-- startup-mode-box-it2me -->
    581         </div> <!-- client.pin-prompt -->
    582 
    583         <div data-ui-mode="home.client.third-party-auth" class="centered">
    584           <div id="third-party-auth-message"
    585                i18n-content="DESCRIPTION_THIRD_PARTY_AUTH"
    586                class="message"></div>
    587           <div id="third-party-auth-url"
    588                class="message"></div>
    589           <div class="button-row">
    590             <button id="third-party-auth-button"
    591                     type="button"
    592                     autofocus="autofocus"
    593                     i18n-content="CONTINUE_BUTTON">
    594             </button>
    595           </div>
    596         </div> <!-- third-party-auth-dialog -->
    597 
    598         <div data-ui-mode="home.client.connect-failed"
    599              class="message">
    600           <span id="connect-error-message" class="error-state"></span>
    601         </div> <!-- client.connect-failed -->
    602 
    603         <div data-ui-mode="home.client.session-finished"
    604              class="message" i18n-content="MESSAGE_SESSION_FINISHED">
    605         </div> <!-- client.session-finished -->
    606 
    607         <div data-ui-mode="home.client.connect-failed.it2me home.client.session-finished.it2me"
    608              class="button-row">
    609           <button id="client-finished-it2me-button"
    610                   type="button"
    611                   i18n-content="OK"
    612                   autofocus="autofocus">
    613           </button>
    614         </div> <!-- connect-failed.it2me session-finished.it2me -->
    615 
    616         <div data-ui-mode="home.client.connect-failed.me2me home.client.session-finished.me2me"
    617              class="button-row">
    618           <button id="client-reconnect-button"
    619                   type="button"
    620                   i18n-content="RETRY"
    621                   autofocus="autofocus">
    622           </button>
    623           <button id="client-finished-me2me-button"
    624                   type="button"
    625                   i18n-content="CANCEL">
    626           </button>
    627         </div> <!-- connect-failed.me2me session-finished.me2me -->
    628 
    629       </div> <!-- client-dialog -->
    630 
    631       <div id="connection-history-dialog"
    632            class="kd-modaldialog"
    633            data-ui-mode="home.history"
    634            hidden>
    635         <div class="internal-frame-of-reference">
    636           <h2 i18n-content="CONNECTION_HISTORY_TITLE"></h2>
    637           <div id="connection-history-options">
    638             <div class="link-list">
    639               <a id="history-view-all"
    640                  i18n-content="ALL_CONNECTIONS"
    641                  class="no-link"></a>
    642               <a id="history-view-outgoing"
    643                  i18n-content="OUTGOING_CONNECTIONS"></a>
    644               <a id="history-view-incoming"
    645                  i18n-content="INCOMING_CONNECTIONS"></a>
    646             </div>
    647             <div class="box-spacer"></div>
    648             <a id="clear-connection-history" i18n-content="CLEAR_HISTORY"></a>
    649           </div>
    650           <div id="connection-history-scroller">
    651             <table id="connection-history-table">
    652               <thead>
    653                 <tr>
    654                   <td></td>
    655                   <td i18n-content="TIME_HEADER"></td>
    656                   <td></td>
    657                   <td i18n-content="CONNECTION_FROM_HEADER"></td>
    658                   <td i18n-content="CONNECTION_TO_HEADER"></td>
    659                   <td i18n-content="DURATION_HEADER"></td>
    660                 </tr>
    661               </thead>
    662               <tbody id="connection-history-entries" class="selectable">
    663               </tbody>
    664             </table>
    665           </div>
    666           <button id="close-connection-history"
    667                   i18n-content="CLOSE"
    668                   type="button"></button>
    669         </div>
    670       </div> <!-- connection-history-dialog -->
    671 
    672       <div id="confirm-host-delete-dialog"
    673            class="kd-modaldialog"
    674            data-ui-mode="home.confirm-host-delete"
    675            hidden>
    676         <p id="confirm-host-delete-message"
    677            i18n-content="CONFIRM_HOST_DELETE"
    678            class="message">
    679         </p>
    680         <div class="button-row">
    681           <button id="confirm-host-delete"
    682                   i18n-content="DISABLE_HOST"
    683                   type="button">
    684           </button>
    685           <button id="cancel-host-delete"
    686                   i18n-content="CANCEL"
    687                   autofocus="autofocus"
    688                   type="button">
    689           </button>
    690         </div>
    691       </div> <!-- home.confirm-host-delete -->
    692 
    693       <div id="paired-client-manager-dialog"
    694            class="kd-modaldialog"
    695            data-ui-mode="home.manage-pairings"
    696            hidden>
    697         <p i18n-content="PAIRED_CLIENTS_INTRODUCTION"
    698            class="message">
    699         </p>
    700         <div id="paired-clients-list">
    701           <table>
    702             <thead>
    703               <tr>
    704                 <td i18n-content="PAIRED_CLIENT_DATE"></td>
    705                 <td i18n-content="PAIRED_CLIENT_NAME"></td>
    706               </tr>
    707             </thead>
    708             <tbody>
    709             </tbody>
    710           </table>
    711           <p id="no-paired-clients">
    712             <em i18n-content="NO_PAIRED_CLIENTS"></em>
    713           </p>
    714         </div> <!-- paired-clients-list -->
    715         <p id="paired-client-manager-dialog-error"
    716            class="error-state"
    717            hidden>
    718         </p>
    719         <div class="button-row">
    720           <span id="paired-client-manager-dialog-working"
    721                 class="waiting"
    722                 i18n-content="WORKING"
    723                 hidden></span>
    724           <button id="delete-all-paired-clients"
    725                   i18n-content="DELETE_ALL_PAIRED_CLIENTS">
    726           <button id="close-paired-client-manager-dialog"
    727                   i18n-content="CLOSE">
    728           </button>
    729         </div>
    730       </div> <!-- home.manage-pairings -->
    731 
    732       <div class="box-spacer"></div>
    733 
    734     </div> <!-- dialog-container -->
    735 
    736     <div id="session-mode" data-ui-mode="in-session home.client" hidden>
    737       <div id="session-toolbar"
    738            data-ui-mode="in-session"
    739            class="toolbar-container"
    740            hidden>
    741         <div class="toolbar-border">
    742           <div id="session-status-message"
    743                 i18n-content="LABEL_CONNECTED"></div>
    744           <div id="connected-to"></div>
    745           <div id="new-connection" class="icon-black apps-v2-only">
    746             <img src="plus.webp" i18n-title="NEW_CONNECTION">
    747           </div>
    748           <div class="box-spacer"></div>
    749           <button id="toolbar-disconnect"
    750                   type="button"
    751                   i18n-content="DISCONNECT_MYSELF_BUTTON">
    752           </button>
    753           <span class="menu-button" id="send-keys-menu">
    754             <button>
    755               <span i18n-content="SEND_KEYS"></span>
    756               <img src="disclosure_arrow_down.webp"
    757                    class="kd-disclosureindicator">
    758             </button>
    759             <ul>
    760               <li id="send-ctrl-alt-del" i18n-content="SEND_CTRL_ALT_DEL"></li>
    761               <li id="send-print-screen" i18n-content="SEND_PRINT_SCREEN"></li>
    762             </ul>
    763           </span>
    764           <span class="menu-button" id="screen-options-menu">
    765             <button>
    766               <span i18n-content="SCREEN_OPTIONS"></span>
    767               <img src="disclosure_arrow_down.webp"
    768                    class="kd-disclosureindicator">
    769             </button>
    770             <ul>
    771               <li id="screen-resize-to-client"
    772                   i18n-content="RESIZE_TO_CLIENT"></li>
    773               <li id="screen-shrink-to-fit" i18n-content="SHRINK_TO_FIT"></li>
    774               <li class="menu-separator"></li>
    775               <li id="toggle-full-screen" i18n-content="FULL_SCREEN"></li>
    776             </ul>
    777           </span>
    778         </div>
    779         <div class="toolbar-stub" id="toolbar-stub">
    780           <div class="arrow-down"></div>
    781         </div>
    782       </div> <!-- session-toolbar -->
    783     </div> <!-- session-mode -->
    784 
    785     <div id="statistics" dir="ltr" class="selectable" hidden>
    786     </div> <!-- statistics -->
    787 
    788   </body>
    789 </html>
    790