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

Side by Side Diff: chrome/browser/resources/feedback/js/feedback.js

Issue 55363003: Send compressed histograms with system logs when sending feedback. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase with grt's changes Created 7 years, 1 month 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 /** @type {string} 5 /** @type {string}
6 * @const 6 * @const
7 */ 7 */
8 var FEEDBACK_LANDING_PAGE = 8 var FEEDBACK_LANDING_PAGE =
9 'https://www.google.com/support/chrome/go/feedback_confirmation'; 9 'https://www.google.com/support/chrome/go/feedback_confirmation';
10 /** @type {number} 10 /** @type {number}
11 * @const 11 * @const
12 */ 12 */
13 var MAX_ATTACH_FILE_SIZE = 3 * 1024 * 1024; 13 var MAX_ATTACH_FILE_SIZE = 3 * 1024 * 1024;
14 14
15 /** @type {number} 15 /** @type {number}
16 * @const 16 * @const
17 */ 17 */
18 var CONTENT_MARGIN_HEIGHT = 40; 18 var CONTENT_MARGIN_HEIGHT = 40;
19 19
20 var attachedFileBlob = null; 20 var attachedFileBlob = null;
21 var lastReader = null; 21 var lastReader = null;
22 22
23 var feedbackInfo = null; 23 var feedbackInfo = null;
24 var systemInfo = null; 24 var systemInfo = null;
25 25
26 var systemInfoWindowId = 0; 26 var systemInfoWindow = {id: 0};
27 var histogramsWindow = {id: 0};
27 28
28 /** 29 /**
29 * Reads the selected file when the user selects a file. 30 * Reads the selected file when the user selects a file.
30 * @param {Event} fileSelectedEvent The onChanged event for the file input box. 31 * @param {Event} fileSelectedEvent The onChanged event for the file input box.
31 */ 32 */
32 function onFileSelected(fileSelectedEvent) { 33 function onFileSelected(fileSelectedEvent) {
33 $('attach-error').hidden = true; 34 $('attach-error').hidden = true;
34 var file = fileSelectedEvent.target.files[0]; 35 var file = fileSelectedEvent.target.files[0];
35 if (!file) { 36 if (!file) {
36 // User canceled file selection. 37 // User canceled file selection.
(...skipping 19 matching lines...) Expand all
56 * attach another file. 57 * attach another file.
57 */ 58 */
58 function clearAttachedFile() { 59 function clearAttachedFile() {
59 $('custom-file-container').hidden = true; 60 $('custom-file-container').hidden = true;
60 attachedFileBlob = null; 61 attachedFileBlob = null;
61 feedbackInfo.attachedFile = null; 62 feedbackInfo.attachedFile = null;
62 $('attach-file').hidden = false; 63 $('attach-file').hidden = false;
63 } 64 }
64 65
65 /** 66 /**
66 * Opens a new window with chrome://system, showing the current system info. 67 * Creates and shows a window with the given url, if the window is not already
68 * open.
69 * @param {Object} window An object with the id of the window to update, or 0.
70 * @param {string} url The destination URL of the new window.
71 * @return {function()} A function to be called to open the window.
67 */ 72 */
68 function openSystemInfoWindow() { 73 function windowOpener(window, url) {
69 if (systemInfoWindowId == 0) { 74 return function() {
70 chrome.windows.create({url: 'chrome://system'}, function(win) { 75 if (window.id == 0) {
71 systemInfoWindowId = win.id; 76 chrome.windows.create({url: url}, function(win) {
72 chrome.app.window.current().show(); 77 window.id = win.id;
73 }); 78 chrome.app.window.current().show();
74 } else { 79 });
75 chrome.windows.update(systemInfoWindowId, {drawAttention: true}); 80 } else {
76 } 81 chrome.windows.update(window.id, {drawAttention: true});
82 }
83 };
77 } 84 }
78 85
79 /** 86 /**
80 * Opens a new window with chrome://slow_trace, downloading performance data. 87 * Opens a new window with chrome://slow_trace, downloading performance data.
81 */ 88 */
82 function openSlowTraceWindow() { 89 function openSlowTraceWindow() {
83 chrome.windows.create( 90 chrome.windows.create(
84 {url: 'chrome://slow_trace/tracing.zip#' + feedbackInfo.traceId}, 91 {url: 'chrome://slow_trace/tracing.zip#' + feedbackInfo.traceId},
85 function(win) {}); 92 function(win) {});
86 } 93 }
(...skipping 18 matching lines...) Expand all
105 if (!feedbackInfo.attachedFile && attachedFileBlob) { 112 if (!feedbackInfo.attachedFile && attachedFileBlob) {
106 feedbackInfo.attachedFile = { name: $('attach-file').value, 113 feedbackInfo.attachedFile = { name: $('attach-file').value,
107 data: attachedFileBlob }; 114 data: attachedFileBlob };
108 } 115 }
109 116
110 feedbackInfo.description = $('description-text').value; 117 feedbackInfo.description = $('description-text').value;
111 feedbackInfo.pageUrl = $('page-url-text').value; 118 feedbackInfo.pageUrl = $('page-url-text').value;
112 feedbackInfo.email = $('user-email-text').value; 119 feedbackInfo.email = $('user-email-text').value;
113 120
114 var useSystemInfo = false; 121 var useSystemInfo = false;
122 var useHistograms = false;
115 // On ChromeOS, since we gather System info, check if the user has given his 123 // On ChromeOS, since we gather System info, check if the user has given his
116 // permission for us to send system info. 124 // permission for us to send system info.
117 <if expr="pp_ifdef('chromeos')"> 125 <if expr="pp_ifdef('chromeos')">
118 if ($('sys-info-checkbox') != null && 126 if ($('sys-info-checkbox') != null &&
119 $('sys-info-checkbox').checked && 127 $('sys-info-checkbox').checked &&
120 systemInfo != null) { 128 systemInfo != null) {
121 useSystemInfo = true; 129 // Send histograms along with system info.
130 useSystemInfo = useHistograms = true;
122 } 131 }
123 if ($('performance-info-checkbox') == null || 132 if ($('performance-info-checkbox') == null ||
124 !($('performance-info-checkbox').checked)) { 133 !($('performance-info-checkbox').checked)) {
125 feedbackInfo.traceId = null; 134 feedbackInfo.traceId = null;
126 } 135 }
127 </if> 136 </if>
128 137
129 // On NonChromeOS, we don't have any system information gathered except the 138 // On NonChromeOS, we don't have any system information gathered except the
130 // Chrome version and the OS version. Hence for Chrome, pass the system info 139 // Chrome version and the OS version. Hence for Chrome, pass the system info
131 // through. 140 // through.
132 <if expr="not pp_ifdef('chromeos')"> 141 <if expr="not pp_ifdef('chromeos')">
133 if (systemInfo != null) 142 if (systemInfo != null)
134 useSystemInfo = true; 143 useSystemInfo = true;
135 </if> 144 </if>
136 145
137 if (useSystemInfo) { 146 if (useSystemInfo) {
138 if (feedbackInfo.systemInformation != null) { 147 if (feedbackInfo.systemInformation != null) {
139 // Concatenate sysinfo if we had any initial system information 148 // Concatenate sysinfo if we had any initial system information
140 // sent with the feedback request event. 149 // sent with the feedback request event.
141 feedbackInfo.systemInformation = 150 feedbackInfo.systemInformation =
142 feedbackInfo.systemInformation.concat(systemInfo); 151 feedbackInfo.systemInformation.concat(systemInfo);
143 } else { 152 } else {
144 feedbackInfo.systemInformation = systemInfo; 153 feedbackInfo.systemInformation = systemInfo;
145 } 154 }
146 } 155 }
147 156
157 feedbackInfo.sendHistograms = useHistograms;
158
148 // If the user doesn't want to send the screenshot. 159 // If the user doesn't want to send the screenshot.
149 if (!$('screenshot-checkbox').checked) 160 if (!$('screenshot-checkbox').checked)
150 feedbackInfo.screenshot = null; 161 feedbackInfo.screenshot = null;
151 162
152 chrome.feedbackPrivate.sendFeedback(feedbackInfo, function(result) { 163 chrome.feedbackPrivate.sendFeedback(feedbackInfo, function(result) {
153 window.open(FEEDBACK_LANDING_PAGE, '_blank'); 164 window.open(FEEDBACK_LANDING_PAGE, '_blank');
154 window.close(); 165 window.close();
155 }); 166 });
156 167
157 return true; 168 return true;
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 $('performance-info-area').hidden = false; 282 $('performance-info-area').hidden = false;
272 $('performance-info-checkbox').checked = true; 283 $('performance-info-checkbox').checked = true;
273 performanceFeedbackChanged(); 284 performanceFeedbackChanged();
274 $('performance-info-link').onclick = openSlowTraceWindow; 285 $('performance-info-link').onclick = openSlowTraceWindow;
275 } 286 }
276 </if> 287 </if>
277 288
278 chrome.feedbackPrivate.getStrings(function(strings) { 289 chrome.feedbackPrivate.getStrings(function(strings) {
279 loadTimeData.data = strings; 290 loadTimeData.data = strings;
280 i18nTemplate.process(document, loadTimeData); 291 i18nTemplate.process(document, loadTimeData);
292
293 if ($('sys-info-url')) {
294 // Opens a new window showing the current system info.
295 $('sys-info-url').onclick =
296 windowOpener(systemInfoWindow, 'chrome://system');
297 }
298 if ($('histograms-url')) {
299 // Opens a new window showing the histogram metrics.
300 $('histograms-url').onclick =
301 windowOpener(histogramsWindow, 'chrome://histograms');
302 }
281 }); 303 });
282 } 304 }
283 }); 305 });
284 306
285 window.addEventListener('DOMContentLoaded', function() { 307 window.addEventListener('DOMContentLoaded', function() {
286 // TODO(rkc): Remove logging once crbug.com/284662 is closed. 308 // TODO(rkc): Remove logging once crbug.com/284662 is closed.
287 console.log('FEEDBACK_DEBUG: feedback.js: DOMContentLoaded'); 309 console.log('FEEDBACK_DEBUG: feedback.js: DOMContentLoaded');
288 // Ready to receive the feedback object. 310 // Ready to receive the feedback object.
289 chrome.runtime.sendMessage({ready: true}); 311 chrome.runtime.sendMessage({ready: true});
290 312
291 // Setup our event handlers. 313 // Setup our event handlers.
292 $('attach-file').addEventListener('change', onFileSelected); 314 $('attach-file').addEventListener('change', onFileSelected);
293 $('send-report-button').onclick = sendReport; 315 $('send-report-button').onclick = sendReport;
294 $('cancel-button').onclick = cancel; 316 $('cancel-button').onclick = cancel;
295 $('remove-attached-file').onclick = clearAttachedFile; 317 $('remove-attached-file').onclick = clearAttachedFile;
296 <if expr="pp_ifdef('chromeos')"> 318 <if expr="pp_ifdef('chromeos')">
297 $('performance-info-checkbox').addEventListener( 319 $('performance-info-checkbox').addEventListener(
298 'change', performanceFeedbackChanged); 320 'change', performanceFeedbackChanged);
299 </if> 321 </if>
300 322
301 chrome.windows.onRemoved.addListener(function(windowId, removeInfo) { 323 chrome.windows.onRemoved.addListener(function(windowId, removeInfo) {
302 if (windowId == systemInfoWindowId) 324 if (windowId == systemInfoWindow.id)
303 systemInfoWindowId = 0; 325 systemInfoWindow.id = 0;
326 else if (windowId == histogramsWindow.id)
327 histogramsWindow.id = 0;
304 }); 328 });
305 if ($('sysinfo-url')) {
306 $('sysinfo-url').onclick = openSystemInfoWindow;
307 }
308 }); 329 });
309 } 330 }
310 331
311 initialize(); 332 initialize();
OLDNEW
« no previous file with comments | « chrome/browser/resources/feedback/html/default.html ('k') | chrome/common/extensions/api/feedback_private.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698