Index: chrome/browser/resources/feedback.js |
diff --git a/chrome/browser/resources/feedback.js b/chrome/browser/resources/feedback.js |
deleted file mode 100644 |
index 34e96455d79b7326954c749dab93126b627a7f2d..0000000000000000000000000000000000000000 |
--- a/chrome/browser/resources/feedback.js |
+++ /dev/null |
@@ -1,447 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// Constants. |
-/** @const */ var FEEDBACK_LANDING_PAGE = |
- 'https://www.google.com/support/chrome/go/feedback_confirmation'; |
-/** @const */ var MAX_ATTACH_FILE_SIZE = 3 * 1024 * 1024; |
- |
-var selectedThumbnailDivId = ''; |
-var selectedThumbnailId = ''; |
-var selectedImageUrl; |
- |
-var savedThumbnailIds = []; |
-savedThumbnailIds['current-screenshots'] = ''; |
-savedThumbnailIds['saved-screenshots'] = ''; |
- |
-var categoryTag = ''; |
-var filePath = ''; |
-var forceDisableScreenshots = false; |
-var traceId = 0; |
- |
-// Globals to manage reading data from the attach a file option. |
-var attachFileBinaryData = ''; |
-var lastReader = null; |
- |
-/** |
- * Returns the base filename for a given path. Handles only Unix style paths. |
- * @param {string} path The path to return the basename for. |
- * @return {string} Basename for the path. |
- */ |
-function getBaseName(path) { |
- lastSeparator = path.lastIndexOf('/'); |
- if (lastSeparator == -1) |
- return ''; |
- else |
- return path.substr(lastSeparator + 1); |
-} |
- |
-/** |
- * Selects an image thumbnail in the specified div. |
- * @param {string} divId The id of the div to search in. |
- * @param {string} thumbnailId The id of the thumbnail to search for. |
- */ |
-function selectImage(divId, thumbnailId) { |
- var thumbnailDivs = $(divId).children; |
- selectedThumbnailDivId = divId; |
- if (thumbnailDivs.length == 0) { |
- $(divId).hidden = true; |
- return; |
- } |
- |
- for (var i = 0; i < thumbnailDivs.length; i++) { |
- thumbnailDivs[i].className = 'image-thumbnail-container'; |
- |
- // If the the current div matches the thumbnail id provided, |
- // or there is no thumbnail id given, and we're at the first thumbnail. |
- if (thumbnailDivs[i].id == thumbnailId || (!thumbnailId && !i)) { |
- thumbnailDivs[i].classList.add('image-thumbnail-container-selected'); |
- selectedThumbnailId = thumbnailDivs[i].id; |
- savedThumbnailIds[divId] = thumbnailId; |
- } |
- } |
-} |
- |
-/** |
- * Adds an image thumbnail to the specified div. |
- * @param {string} divId The id of the div to add a screenshot to. |
- * @param {string} screenshot The URL of the screenshot being added. |
- */ |
-function addScreenshot(divId, screenshot) { |
- var thumbnailDiv = document.createElement('div'); |
- thumbnailDiv.className = 'image-thumbnail-container'; |
- |
- thumbnailDiv.id = divId + '-thumbnailDiv-' + $(divId).children.length; |
- thumbnailDiv.onclick = function() { |
- selectImage(divId, thumbnailDiv.id); |
- }; |
- |
- var innerDiv = document.createElement('div'); |
- innerDiv.className = 'image-thumbnail'; |
- |
- var thumbnail = document.createElement('img'); |
- thumbnail.id = thumbnailDiv.id + '-image'; |
- // We add the ?+timestamp to make sure the image URLs are unique |
- // and Chrome does not load the image from cache. |
- thumbnail.src = screenshot + '?' + Date.now(); |
- innerDiv.appendChild(thumbnail); |
- |
- thumbnailDiv.appendChild(innerDiv); |
- $(divId).appendChild(thumbnailDiv); |
- |
- if (!selectedThumbnailId) |
- selectImage(divId, thumbnailDiv.id); |
-} |
- |
-/** |
- * Enables screenshots. |
- */ |
-function enableScreenshots() { |
- if (forceDisableScreenshots) |
- return; |
- $('screenshot-row').hidden = false; |
-} |
- |
-/** |
- * Reads the selected file when the user selects a file. |
- * @param {event} evtFileSelected The on changed event for the file input box. |
- */ |
-function onFileSelected(evtFileSelected) { |
- var file = evtFileSelected.target.files[0]; |
- if (!file) { |
- // User canceled file selection. |
- $('attach-file-checkbox').checked = false; |
- attachFileBinaryData = null; |
- return; |
- } |
- |
- if (file.size > MAX_ATTACH_FILE_SIZE) { |
- $('attach-error').hidden = false; |
- |
- // Clear our selected file. |
- $('attach-file').value = ''; |
- attachFileBinaryData = null; |
- $('attach-file-checkbox').checked = false; |
- |
- return; |
- } |
- |
- $('attach-error').hidden = true; |
- |
- // Abort an existing file read operation if one exists. |
- if (lastReader) { |
- lastReader.abort(); |
- lastReader = null; |
- } |
- |
- var reader = new FileReader(); |
- reader.onloadend = function(evtLoadEnd) { |
- if (evtLoadEnd.target.readyState == FileReader.DONE) { |
- attachFileBinaryData = evtLoadEnd.target.result; |
- lastReader = null; |
- // Check the checkbox so we do send this file. Users can uncheck the |
- // box if they don't want to send the file. |
- $('attach-file-checkbox').checked = true; |
- $('reading-file').hidden = true; |
- $('send-report-button').disabled = false; |
- } |
- }; |
- |
- lastReader = reader; |
- reader.readAsBinaryString(file); |
- $('reading-file').hidden = false; |
- $('send-report-button').disabled = true; |
-} |
- |
-/** |
- * Sends the report; after the report is sent, we need to be redirected to |
- * the landing page, but we shouldn't be able to navigate back, hence |
- * we open the landing page in a new tab and sendReport closes this tab. |
- * @return {boolean} True if the report was sent. |
- */ |
-function sendReport() { |
- if ($('description-text').value.length == 0) { |
- alert(loadTimeData.getString('no-description')); |
- return false; |
- } |
- |
- var imagePath = ''; |
- if ($('screenshot-checkbox').checked && selectedThumbnailId) |
- imagePath = $(selectedThumbnailId + '-image').src; |
- var pageUrl = $('page-url-text').value; |
- if (!$('page-url-checkbox').checked) |
- pageUrl = ''; |
- var userEmail = $('user-email-text').value; |
- if (!$('user-email-checkbox').checked) |
- userEmail = ''; |
- |
- var reportArray = [pageUrl, |
- categoryTag, |
- $('description-text').value, |
- userEmail, |
- imagePath]; |
- |
- // Add chromeos data if it exists. |
- if ($('sys-info-checkbox')) { |
- reportArray = reportArray.concat([String($('sys-info-checkbox').checked)]); |
- if (!$('performance-info-checkbox').checked) { |
- traceId = 0; |
- } |
- reportArray = reportArray.concat([String(traceId)]); |
- } |
- |
- if ($('attach-file-checkbox') && |
- $('attach-file-checkbox').checked) { |
- if (attachFileBinaryData) { |
- reportArray = reportArray.concat( |
- [$('attach-file').files[0].name, btoa(attachFileBinaryData)]); |
- } |
- } else if ($('attach-file-custom-checkbox') && |
- $('attach-file-custom-checkbox').checked) { |
- if (filePath) |
- reportArray = reportArray.concat([filePath, '']); |
- } |
- |
- // open the landing page in a new tab, sendReport will close this one. |
- window.open(FEEDBACK_LANDING_PAGE, '_blank'); |
- chrome.send('sendReport', reportArray); |
- return true; |
-} |
- |
-/** |
- * Click listener for the cancel button. |
- * @param {Event} e The click event being handled. |
- */ |
-function cancel(e) { |
- chrome.send('cancel'); |
- e.preventDefault(); |
-} |
- |
-/** |
- * Select the current screenshots div, restoring the image that was |
- * selected when we had this div open previously. |
- */ |
-function currentSelected() { |
- // TODO(rkc): Change this to use a class instead. |
- $('current-screenshots').hidden = false; |
- if ($('saved-screenshots')) |
- $('saved-screenshots').hidden = true; |
- |
- if (selectedThumbnailDivId != 'current-screenshots') |
- selectImage('current-screenshots', |
- savedThumbnailIds['current-screenshots']); |
-} |
- |
-/** |
- * Select the saved screenshots div, restoring the image that was |
- * selected when we had this div open previously. |
- */ |
-function savedSelected() { |
- if ($('saved-screenshots').childElementCount == 0) { |
- // setupSavedScreenshots will take care of changing visibility |
- chrome.send('refreshSavedScreenshots'); |
- } else { |
- $('current-screenshots').hidden = true; |
- $('saved-screenshots').hidden = false; |
- if (selectedThumbnailDivId != 'saved-screenshots') |
- selectImage('saved-screenshots', savedThumbnailIds['saved-screenshots']); |
- } |
-} |
- |
-/** |
- * Change the type of screenshot we're showing to the user from |
- * the current screenshot to saved screenshots |
- */ |
-function changeToSaved() { |
- $('screenshot-label-current').hidden = true; |
- $('screenshot-label-saved').hidden = false; |
- |
- // Change the link to say "go to original" |
- $('screenshot-link-tosaved').hidden = true; |
- $('screenshot-link-tocurrent').hidden = false; |
- |
- savedSelected(); |
-} |
- |
-/** |
- * Change the type of screenshot we're showing to the user from |
- * the saved screenshots to the current screenshots |
- */ |
-function changeToCurrent() { |
- $('screenshot-label-current').hidden = false; |
- $('screenshot-label-saved').hidden = true; |
- |
- // Change the link to say "go to saved" |
- $('screenshot-link-tosaved').hidden = false; |
- $('screenshot-link-tocurrent').hidden = true; |
- |
- currentSelected(); |
-} |
- |
-<if expr="pp_ifdef('chromeos')"> |
-/** |
- * Update the page when performance feedback state is changed. |
- */ |
-function performanceFeedbackChanged() { |
- if ($('performance-info-checkbox').checked) { |
- $('attach-file-checkbox').disabled = true; |
- $('attach-file-checkbox').checked = false; |
- |
- $('screenshot-checkbox').disabled = true; |
- $('screenshot-checkbox').checked = false; |
- } else { |
- $('attach-file-checkbox').disabled = false; |
- $('screenshot-checkbox').disabled = false; |
- } |
-} |
-</if> |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// Document Functions: |
-/** |
- * Window onload handler, sets up the page. |
- */ |
-function load() { |
- cr.ui.FocusOutlineManager.forDocument(document); |
- if ($('attach-file')) |
- $('attach-file').addEventListener('change', onFileSelected); |
- |
- if ($('sysinfo-url')) { |
- $('sysinfo-url').onclick = function(event) { |
- chrome.send('openSystemTab'); |
- }; |
- } |
- |
-<if expr="pp_ifdef('chromeos')"> |
- $('screenshot-link-tosaved').onclick = changeToSaved; |
- $('screenshot-link-tocurrent').onclick = changeToCurrent; |
- |
- $('performance-info-checkbox').addEventListener( |
- 'change', performanceFeedbackChanged); |
-</if> |
- $('send-report-button').onclick = sendReport; |
- $('cancel-button').onclick = cancel; |
- |
- // Set default values for the possible parameters, and then parse the actual |
- // values from the URL href. |
- var parameters = { |
- 'description': '', |
- 'categoryTag': '', |
- 'customPageUrl': '', |
- 'filePath': '', |
- 'traceId': 0, |
- }; |
- |
- var loc = window.location; |
- // Split the query string into an array of parameters. |
- var query = loc.search.substr(1).split('&'); |
- // If we have a query in the hash. |
- if (loc.hash.indexOf('?') >= 0) { |
- // Remove the hash and split this query into parameters too. |
- query = query.concat(loc.hash.substr(loc.hash.indexOf('?') + 1).split('&')); |
- } |
- for (var i = 0; i < query.length; i++) { |
- // Decode and store each parameter value. |
- parameter = query[i].split('='); |
- parameters[parameter[0]] = decodeURIComponent(parameter[1]); |
- } |
- |
- // Set the initial description text. |
- $('description-text').textContent = parameters['description']; |
- // If a page url is spcified in the parameters, override the default page url. |
- if (parameters['customPageUrl'] != '') { |
- $('page-url-text').value = parameters['customPageUrl']; |
- // and disable the page image, since it doesn't make sense on a custom url. |
- $('screenshot-checkbox').checked = false; |
- forceDisableScreenshots = true; |
- } |
- |
- // Pick up the category tag (for most cases this will be an empty string) |
- categoryTag = parameters['categoryTag']; |
- |
- // Pick up the file path for the attached file (only user for this at the |
- // moment is the quick office extension). |
- filePath = parameters['filePath']; |
- |
- if (filePath != '') { |
- var baseName = getBaseName(filePath); |
- if (baseName) { |
- // Don't let the user choose another file, we were invoked by an |
- // extension already providing us the file, this report should only |
- // attach that file, or no file at all. |
- $('attach-file-container').hidden = true; |
- |
- // Set our filename and unhide the "Attach this file" span. |
- $('attach-file-custom-name').textContent = baseName; |
- $('attach-file-custom-container').hidden = false; |
- // No screenshots if we're being invoked by an extension - screenshot was |
- // never taken. |
- $('screenshot-checkbox').checked = false; |
- forceDisableScreenshots = true; |
- } else { |
- filePath = ''; |
- } |
- } |
- |
- traceId = parameters['traceId']; |
- if (traceId != 0 && ($('performance-info-area'))) { |
- $('performance-info-area').hidden = false; |
- $('performance-info-checkbox').checked = true; |
- performanceFeedbackChanged(); |
- } |
- |
- chrome.send('getDialogDefaults'); |
- chrome.send('refreshCurrentScreenshot'); |
-} |
- |
-function setupCurrentScreenshot(screenshot) { |
- addScreenshot('current-screenshots', screenshot); |
-} |
- |
-function setupSavedScreenshots(screenshots) { |
- if (screenshots.length == 0) { |
- $('saved-screenshots').textContent = |
- loadTimeData.getString('no-saved-screenshots'); |
- |
- // Make sure we make the display the message. |
- $('current-screenshots').hidden = true; |
- $('saved-screenshots').hidden = false; |
- |
- // In case the user tries to send now; fail safe, do not send a screenshot |
- // at all versus sending the current screenshot. |
- selectedThumbnailDivId = ''; |
- selectedThumbnailId = ''; |
- } else { |
- $('saved-screenshots').textContent = ''; |
- for (i = 0; i < screenshots.length; ++i) |
- addScreenshot('saved-screenshots', screenshots[i]); |
- |
- // Now that we have our screenshots, try selecting the saved screenshots |
- // again. |
- savedSelected(); |
- } |
-} |
- |
-function setupDialogDefaults(defaults) { |
- // Current url. |
- if ($('page-url-text').value == '') |
- $('page-url-text').value = defaults.currentUrl; |
- if (defaults.currentUrl == '') |
- $('page-url-checkbox').checked = false; |
- // User e-mail. |
- $('user-email-text').value = defaults.userEmail; |
- $('user-email-checkbox').checked = defaults.emailCheckboxDefault; |
- |
- document.documentElement.classList.toggle('launcher-layout', |
- defaults.launcherFeedback); |
- |
- if (!defaults.disableScreenshots) |
- enableScreenshots(); |
- |
- if (defaults.useSaved) { |
- $('screenshot-link-tosaved').hidden = false; |
- } |
-} |
- |
-window.addEventListener('DOMContentLoaded', load); |