Index: components/crash/core/browser/resources/crashes.js |
diff --git a/components/crash/core/browser/resources/crashes.js b/components/crash/core/browser/resources/crashes.js |
index efd5912becd27c284a55b3cb216093b535022db8..eba85d50c4780b5b64d87f6a9ff79536010fae9e 100644 |
--- a/components/crash/core/browser/resources/crashes.js |
+++ b/components/crash/core/browser/resources/crashes.js |
@@ -16,24 +16,23 @@ function requestCrashes() { |
* Callback from backend with the list of crashes. Builds the UI. |
* @param {boolean} enabled Whether or not crash reporting is enabled. |
* @param {boolean} dynamicBackend Whether the crash backend is dynamic. |
+ * @param {boolean} manualUploads Whether the manual uploads are supported. |
* @param {array} crashes The list of crashes. |
* @param {string} version The browser version. |
* @param {string} os The OS name and version. |
*/ |
-function updateCrashList(enabled, dynamicBackend, crashes, version, os) { |
+function updateCrashList( |
+ enabled, dynamicBackend, manualUploads, |
+ crashes, version, os) { |
$('countBanner').textContent = |
loadTimeData.getStringF('crashCountFormat', |
crashes.length.toLocaleString()); |
var crashSection = $('crashList'); |
- $('enabledMode').hidden = !enabled; |
$('disabledMode').hidden = enabled; |
$('crashUploadStatus').hidden = !enabled || !dynamicBackend; |
- if (!enabled) |
- return; |
- |
// Clear any previous list. |
crashSection.textContent = ''; |
@@ -102,16 +101,36 @@ function updateCrashList(enabled, dynamicBackend, crashes, version, os) { |
link.textContent = loadTimeData.getString('bugLinkText'); |
linkBlock.appendChild(link); |
crashBlock.appendChild(linkBlock); |
- } else if (crash['state'] == 'pending') { |
- var pending = document.createElement('p'); |
- pending.textContent = loadTimeData.getStringF('crashPending', |
- crash['time']); |
- crashBlock.appendChild(pending); |
- } else if (crash['state'] == 'not_uploaded') { |
- var not_uploaded = document.createElement('p'); |
- not_uploaded.textContent = loadTimeData.getStringF('crashNotUploaded', |
- crash['time']); |
- crashBlock.appendChild(not_uploaded); |
+ } else if (crash['state'] == 'pending_user_requested') { |
+ var user_requested = document.createElement('p'); |
+ user_requested.textContent = |
+ loadTimeData.getStringF('crashUserRequested', crash['time']); |
+ crashBlock.appendChild(user_requested); |
+ } else { |
+ if (crash['state'] == 'pending') { |
+ var pending = document.createElement('p'); |
+ pending.textContent = loadTimeData.getStringF('crashPending', |
+ crash['time']); |
+ crashBlock.appendChild(pending); |
+ } else if (crash['state'] == 'not_uploaded') { |
+ var not_uploaded = document.createElement('p'); |
+ not_uploaded.textContent = loadTimeData.getStringF('crashNotUploaded', |
+ crash['time']); |
+ crashBlock.appendChild(not_uploaded); |
+ } |
+ |
+ if (manualUploads) { |
+ var uploadNowLinkBlock = document.createElement('p'); |
+ var link = document.createElement('a'); |
+ link.href = ''; |
+ link.textContent = loadTimeData.getString('uploadNowLinkText'); |
+ link['local_id'] = crash['local_id']; |
+ link.onclick = function() { |
+ chrome.send('requestSingleCrashUpload', [this['local_id']]); |
+ } |
+ uploadNowLinkBlock.appendChild(link); |
+ crashBlock.appendChild(uploadNowLinkBlock) |
+ } |
} |
crashSection.appendChild(crashBlock); |
} |
@@ -135,4 +154,4 @@ function requestCrashUpload() { |
document.addEventListener('DOMContentLoaded', function() { |
$('uploadCrashes').onclick = requestCrashUpload; |
requestCrashes(); |
-}); |
+}); |