Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(958)

Side by Side Diff: components/crash/core/browser/resources/crashes.js

Issue 2268783002: Manual crash uploads for mac and win (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comments and formatting Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /* Id for tracking automatic refresh of crash list. */ 5 /* Id for tracking automatic refresh of crash list. */
6 var refreshCrashListId = undefined; 6 var refreshCrashListId = undefined;
7 7
8 /** 8 /**
9 * Requests the list of crashes from the backend. 9 * Requests the list of crashes from the backend.
10 */ 10 */
11 function requestCrashes() { 11 function requestCrashes() {
12 chrome.send('requestCrashList'); 12 chrome.send('requestCrashList');
13 } 13 }
14 14
15 /** 15 /**
16 * Callback from backend with the list of crashes. Builds the UI. 16 * Callback from backend with the list of crashes. Builds the UI.
17 * @param {boolean} enabled Whether or not crash reporting is enabled. 17 * @param {boolean} enabled Whether or not crash reporting is enabled.
18 * @param {boolean} dynamicBackend Whether the crash backend is dynamic. 18 * @param {boolean} dynamicBackend Whether the crash backend is dynamic.
19 * @param {boolean} manualUploads Whether the manual uploads are supported.
19 * @param {array} crashes The list of crashes. 20 * @param {array} crashes The list of crashes.
20 * @param {string} version The browser version. 21 * @param {string} version The browser version.
21 * @param {string} os The OS name and version. 22 * @param {string} os The OS name and version.
22 */ 23 */
23 function updateCrashList(enabled, dynamicBackend, crashes, version, os) { 24 function updateCrashList(
25 enabled, dynamicBackend, manualUploads,
26 crashes, version, os) {
24 $('countBanner').textContent = 27 $('countBanner').textContent =
25 loadTimeData.getStringF('crashCountFormat', 28 loadTimeData.getStringF('crashCountFormat',
26 crashes.length.toLocaleString()); 29 crashes.length.toLocaleString());
27 30
28 var crashSection = $('crashList'); 31 var crashSection = $('crashList');
29 32
30 $('enabledMode').hidden = !enabled;
31 $('disabledMode').hidden = enabled; 33 $('disabledMode').hidden = enabled;
32 $('crashUploadStatus').hidden = !enabled || !dynamicBackend; 34 $('crashUploadStatus').hidden = !enabled || !dynamicBackend;
33 35
34 if (!enabled)
35 return;
36
37 // Clear any previous list. 36 // Clear any previous list.
38 crashSection.textContent = ''; 37 crashSection.textContent = '';
39 38
40 var productName = loadTimeData.getString('shortProductName'); 39 var productName = loadTimeData.getString('shortProductName');
41 40
42 for (var i = 0; i < crashes.length; i++) { 41 for (var i = 0; i < crashes.length; i++) {
43 var crash = crashes[i]; 42 var crash = crashes[i];
44 if (crash['local_id'] == '') 43 if (crash['local_id'] == '')
45 crash['local_id'] = productName; 44 crash['local_id'] = productName;
46 45
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 }; 94 };
96 var href = 'https://code.google.com/p/chromium/issues/entry'; 95 var href = 'https://code.google.com/p/chromium/issues/entry';
97 for (var param in params) { 96 for (var param in params) {
98 href = appendParam(href, param, params[param]); 97 href = appendParam(href, param, params[param]);
99 } 98 }
100 link.href = href; 99 link.href = href;
101 link.target = '_blank'; 100 link.target = '_blank';
102 link.textContent = loadTimeData.getString('bugLinkText'); 101 link.textContent = loadTimeData.getString('bugLinkText');
103 linkBlock.appendChild(link); 102 linkBlock.appendChild(link);
104 crashBlock.appendChild(linkBlock); 103 crashBlock.appendChild(linkBlock);
105 } else if (crash['state'] == 'pending') { 104 } else if (crash['state'] == 'pending_user_requested') {
106 var pending = document.createElement('p'); 105 var user_requested = document.createElement('p');
107 pending.textContent = loadTimeData.getStringF('crashPending', 106 user_requested.textContent =
108 crash['time']); 107 loadTimeData.getStringF('crashUserRequested', crash['time']);
109 crashBlock.appendChild(pending); 108 crashBlock.appendChild(user_requested);
110 } else if (crash['state'] == 'not_uploaded') { 109 } else {
111 var not_uploaded = document.createElement('p'); 110 if (crash['state'] == 'pending') {
112 not_uploaded.textContent = loadTimeData.getStringF('crashNotUploaded', 111 var pending = document.createElement('p');
113 crash['time']); 112 pending.textContent = loadTimeData.getStringF('crashPending',
114 crashBlock.appendChild(not_uploaded); 113 crash['time']);
114 crashBlock.appendChild(pending);
115 } else if (crash['state'] == 'not_uploaded') {
116 var not_uploaded = document.createElement('p');
117 not_uploaded.textContent = loadTimeData.getStringF('crashNotUploaded',
118 crash['time']);
119 crashBlock.appendChild(not_uploaded);
120 }
121
122 if (manualUploads) {
123 var uploadNowLinkBlock = document.createElement('p');
124 var link = document.createElement('a');
125 link.href = '';
126 link.textContent = loadTimeData.getString('uploadNowLinkText');
127 link['local_id'] = crash['local_id'];
128 link.onclick = function() {
129 chrome.send('requestSingleCrashUpload', [this['local_id']]);
130 }
131 uploadNowLinkBlock.appendChild(link);
132 crashBlock.appendChild(uploadNowLinkBlock)
133 }
115 } 134 }
116 crashSection.appendChild(crashBlock); 135 crashSection.appendChild(crashBlock);
117 } 136 }
118 137
119 $('noCrashes').hidden = crashes.length != 0; 138 $('noCrashes').hidden = crashes.length != 0;
120 } 139 }
121 140
122 /** 141 /**
123 * Request crashes get uploaded in the background. 142 * Request crashes get uploaded in the background.
124 */ 143 */
125 function requestCrashUpload() { 144 function requestCrashUpload() {
126 // Don't need locking with this call because the system crash reporter 145 // Don't need locking with this call because the system crash reporter
127 // has locking built into itself. 146 // has locking built into itself.
128 chrome.send('requestCrashUpload'); 147 chrome.send('requestCrashUpload');
129 148
130 // Trigger a refresh in 5 seconds. Clear any previous requests. 149 // Trigger a refresh in 5 seconds. Clear any previous requests.
131 clearTimeout(refreshCrashListId); 150 clearTimeout(refreshCrashListId);
132 refreshCrashListId = setTimeout(requestCrashes, 5000); 151 refreshCrashListId = setTimeout(requestCrashes, 5000);
133 } 152 }
134 153
135 document.addEventListener('DOMContentLoaded', function() { 154 document.addEventListener('DOMContentLoaded', function() {
136 $('uploadCrashes').onclick = requestCrashUpload; 155 $('uploadCrashes').onclick = requestCrashUpload;
137 requestCrashes(); 156 requestCrashes();
138 }); 157 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698