1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/**
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Requests the list of uploads from the backend.
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochfunction requestUploads() {
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  chrome.send('requestWebRtcLogsList');
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/**
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Callback from backend with the list of uploads. Builds the UI.
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param {boolean} enabled Whether or not uploading is enabled.
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param {array} uploads The list of uploads.
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param {string} version The browser version.
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochfunction updateWebRtcLogsList(enabled, uploads, version) {
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  $('log-banner').textContent = loadTimeData.getStringF('webrtcLogCountFormat',
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                                        uploads.length);
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  var logSection = $('log-list');
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  $('enabled-mode').hidden = !enabled;
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  $('disabled-mode').hidden = enabled;
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (!enabled)
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    return;
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Clear any previous list.
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  logSection.textContent = '';
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  for (var i = 0; i < uploads.length; i++) {
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var upload = uploads[i];
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var logBlock = document.createElement('div');
37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var title = document.createElement('h3');
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    title.textContent = loadTimeData.getStringF('webrtcLogHeaderFormat',
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                                upload['id']);
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    logBlock.appendChild(title);
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var date = document.createElement('p');
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    date.textContent = loadTimeData.getStringF('webrtcLogTimeFormat',
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                               upload['time']);
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    logBlock.appendChild(date);
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var linkBlock = document.createElement('p');
46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var link = document.createElement('a');
47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var commentLines = [
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      'Chrome Version: ' + version,
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      // TODO(tbreisacher): fill in the OS automatically?
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      'Operating System: e.g., "Windows 7", "Mac OSX 10.6"',
51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '',
52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      'URL (if applicable) where the problem occurred:',
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '',
54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      'Can you reproduce this problem?',
55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '',
56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      'What steps will reproduce this problem? (or if it\'s not ' +
57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      'reproducible, what were you doing just before the problem)?',
58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '',
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '1.', '2.', '3.',
60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '',
61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '*Please note that issues filed with no information filled in ' +
62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      'above will be marked as WontFix*',
63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '',
64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      '****DO NOT CHANGE BELOW THIS LINE****',
65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      'report_id:' + upload.id
66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    ];
67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var params = {
68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      template: 'Defect report from user',
69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      comment: commentLines.join('\n'),
70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    };
71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    var href = 'http://code.google.com/p/chromium/issues/entry';
72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    for (var param in params) {
73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      href = appendParam(href, param, params[param]);
74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    }
75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    link.href = href;
76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    link.target = '_blank';
77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    link.textContent = loadTimeData.getString('bugLinkText');
78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    linkBlock.appendChild(link);
79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    logBlock.appendChild(linkBlock);
80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    logSection.appendChild(logBlock);
81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  }
82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  $('no-logs').hidden = uploads.length != 0;
84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochdocument.addEventListener('DOMContentLoaded', requestUploads);
87