1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be
3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file.
4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
5dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenlocalStrings = new LocalStrings();
6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen/**
8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen * Requests the list of crashes from the backend.
9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen */
10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenfunction requestCrashes() {
11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  chrome.send('requestCrashList', [])
12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen/**
15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen * Callback from backend with the list of crashes. Builds the UI.
16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen * @param {boolean} enabled Whether or not crash reporting is enabled.
17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen * @param {array} crashes The list of crashes.
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen * @param {string} version The browser version.
19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen */
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenfunction updateCrashList(enabled, crashes, version) {
21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  $('countBanner').textContent = localStrings.getStringF('crashCountFormat',
22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                                                         crashes.length);
23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  var crashSection = $('crashList');
25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  $('enabledMode').hidden = !enabled;
27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  $('disabledMode').hidden = enabled;
28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  if (!enabled)
30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    return;
31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Clear any previous list.
33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  crashSection.textContent = '';
34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  for (var i = 0; i < crashes.length; i++) {
36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    var crash = crashes[i];
37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    var crashBlock = document.createElement('div');
39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    var title = document.createElement('h3');
40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    title.textContent = localStrings.getStringF('crashHeaderFormat',
41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                                                crash['id']);
42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    crashBlock.appendChild(title);
43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    var date = document.createElement('p');
44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    date.textContent = localStrings.getStringF('crashTimeFormat',
45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                                               crash['time']);
46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    crashBlock.appendChild(date);
47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    var linkBlock = document.createElement('p');
48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    var link = document.createElement('a');
49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    link.href = 'http://code.google.com/p/chromium/issues/entry?' +
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        'template=Crash%20Report&comment=' +
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        'Chrome%20Version:%20' + version + '%0A' +
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        'Operating%20System:%20e.g.,%20"Windows%207",%20' +
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        '"Mac%20OS%20X%2010.6"%0A%0A' +
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        'URL%20(if%20applicable)%20where%20crash%20occurred:%20%0A%0A' +
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        'Can%20you%20reproduce%20this%20crash?%0A%0A' +
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        'What%20steps%20will%20reproduce%20this%20crash%20' +
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        '(or%20if%20it\'s%20not%20reproducible,%20what%20were%20you%20doing' +
58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        '%20just%20before%20the%20crash)?%0A1.%0A2.%0A3.%0A%0A' +
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        '*Please%20note%20that%20issues%20filed%20with%20no%20information%20' +
60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        'filled%20in%20above%20will%20be%20marked%20as%20WontFix*%0A%0A' +
61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen        '****DO%20NOT%20CHANGE%20BELOW%20THIS%20LINE****%0Areport_id:' +
62dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen        crash['id'];
63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    link.target = '_blank';
64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    link.textContent = localStrings.getString('bugLinkText');
65dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    linkBlock.appendChild(link);
66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    crashBlock.appendChild(linkBlock);
67dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    crashSection.appendChild(crashBlock);
68dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  }
69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  $('noCrashes').hidden = crashes.length != 0;
71dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
73dc0f95d653279beabeb9817299e2902918ba123eKristian Monsendocument.addEventListener('DOMContentLoaded', requestCrashes);
74