| <!doctype html> |
| <html dir="ltr" lang="en"> |
| <head> |
| <!-- If you change the title, make sure you also update |
| chrome/test/functional/special_tabs.py. --> |
| <meta charset="utf-8"> |
| <meta content="width=device-width,initial-scale=1.0" name="viewport"> |
| <title>Sync Internals</title> |
| <link rel="stylesheet" href="chrome://resources/css/text_defaults.css"> |
| <link rel="stylesheet" href="about.css"> |
| <link rel="stylesheet" href="sync_search.css"> |
| <link rel="stylesheet" href="sync_node_browser.css"> |
| <link rel="stylesheet" href="traffic_log.css"> |
| <link rel="stylesheet" href="invalidations.css"> |
| |
| </head> |
| <body> |
| |
| <style> |
| html { |
| text-size-adjust: none; |
| } |
| |
| body { |
| margin: 0; |
| } |
| |
| #sync-page { |
| /* TODO(akalin): Figure out a better way to make the tab box the |
| same height no matter which tab is selected. */ |
| min-height: 650px; |
| } |
| |
| [hidden] { |
| /* This allows us to hide tabs by adding and removing hidden attribute. */ |
| display: none !important; |
| } |
| |
| div[slot='panel'] { |
| margin-top: 5px; |
| } |
| </style> |
| |
| <cr-tab-box id="sync-page"> |
| <div slot="tab" id="sync-about-tab">About</div> |
| <div slot="tab" id="sync-data-tab">Data</div> |
| <div slot="tab" id="sync-browser-tab">Sync Node Browser</div> |
| <div slot="tab" id="sync-search-tab">Search</div> |
| <div slot="tab" id="sync-user-events-tab">User Events</div> |
| <div slot="tab" id="sync-traffic-log-tab">Traffic Log</div> |
| <div slot="tab" id="sync-invalidations-tab">Invalidations</div> |
| <div slot="panel"> |
| <div id="status"> |
| <div id="dump"> |
| <button id="dump-status">Dump status</button> |
| <input type="checkbox" id="include-ids"> |
| Include Identifiers |
| </div> |
| <div id="import"> |
| <button id="import-status">Import status</button> |
| </div> |
| <div id="status-data"> |
| <textarea rows="10" cols="30" id="status-text"></textarea> |
| </div> |
| </div> |
| |
| <div id="about-info"></div> |
| </div> |
| <div slot="panel"> |
| <p><strong>Some personal info may be in the events dump. Be |
| careful about posting data dumps on bug reports.</strong></p> |
| |
| <button id="dump-to-text">Dump sync events to text</button> |
| |
| <pre id="data-dump"></pre> |
| |
| <hr> |
| |
| <div id="node-type-checkboxes"></div> |
| |
| |
| <button id="dump-to-file">Dump sync nodes to file</button> |
| |
| <input type="checkbox" id="include-specifics">include node content <font color="red">WARNING: This is likely to include personal information.</font><br> |
| |
| <a style="display: none" id="dump-to-file-anchor"></a> |
| </div> |
| <div slot="panel"> |
| <!-- TODO(akalin): Move to a three-pane view; node tree on the left |
| (minus leaf nodes), tree contents list on the upper right, selected |
| item detail on the lower right. --> |
| |
| <div id="sync-node-main"> |
| <!-- TODO(akalin): Figure out how to get this element to be as tall |
| as its container (style.height=100% doesn't work). Also fix |
| behavior when tree is too tall (currently it makes you scroll the |
| entire page). --> |
| <div id="sync-node-browser-refresher"> |
| <button id="node-browser-refresh-button">Refresh</button> |
| <div id="node-refresh-status"> |
| Last refresh time: <span id="node-browser-refresh-time">Never</span> |
| </div> |
| </div> |
| <div id="sync-node-browser-container"> |
| <div id="sync-node-tree-container"> |
| </div> |
| <cr-splitter id="sync-node-splitter"></cr-splitter> |
| <div id="node-details"></div> |
| </div> |
| </div> |
| </div> |
| <div slot="panel"> |
| <p> |
| <input id="sync-search-query" type="search" |
| placeholder="Search Sync Data"> |
| <button id="sync-search-submit">Search</button> |
| <span id="sync-search-quicklink-container">Quick Search: |
| <a class='sync-search-quicklink' data-query=""IS_UNAPPLIED_UPDATE": true" |
| href="#">Unapplied Updates</a> |
| <a class='sync-search-quicklink' data-query=""IS_UNSYNCED": true" |
| href="#">Unsynced</a> |
| <a class='sync-search-quicklink' data-query="(("IS_UNAPPLIED_UPDATE": true)[\s\S]*("IS_UNSYNCED": true))|(("IS_UNSYNCED": true)[\s\S]*("IS_UNAPPLIED_UPDATE": true))" |
| href="#">Conflicted</a> |
| <a class='sync-search-quicklink' data-query=""IS_DEL": true" |
| href="#">Deleted</a> |
| </span> |
| </p> |
| <p> |
| <span id="sync-search-status"></span> |
| </p> |
| |
| <div id="sync-results-container"> |
| <ul id="sync-results-list"></ul> |
| <cr-splitter id="sync-results-splitter"></cr-splitter> |
| <div id="sync-result-details-container"> |
| <pre id="sync-result-details"></pre> |
| </div> |
| </div> |
| </div> |
| <div slot="panel"> |
| <input id="event-time-usec-input" type="text" placeholder="event_time_usec"> |
| <input id="navigation-id-input" type="text" placeholder="navigation_id"> |
| <button id="create-event-button">Create</button> |
| </div> |
| <div slot="panel"> |
| <div id="traffic-event-fullscreen-container"></div> |
| </div> |
| <div slot="panel"> |
| <table id="invalidation-counters-table"></table> |
| <textarea id="invalidations-log" rows="10" cols="80"readonly></textarea> |
| </div> |
| </cr-tab-box> |
| |
| <script type="module" src="sync_index.js"></script> |
| </body> |
| </html> |