summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--[-rwxr-xr-x]chrome/app/generated_resources.grd85
-rw-r--r--[-rwxr-xr-x]chrome/browser/dom_ui/bug_report_ui.cc76
-rw-r--r--[-rwxr-xr-x]chrome/browser/resources/bug_report.css115
-rw-r--r--[-rwxr-xr-x]chrome/browser/resources/bug_report.html510
-rw-r--r--[-rwxr-xr-x]chrome/browser/resources/bug_report.js83
5 files changed, 314 insertions, 555 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 3bfbe9f..3e73738 100755..100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -4788,25 +4788,22 @@ Keep your key file in a safe place. You will need it to create new versions of y
<!-- Report Bug or Broken Web Site Dialog -->
<message name="IDS_BUGREPORT_TITLE" desc="Dialog title for bug report dialog">
- Whoops. Let's fix that.
+ Report Bug or Broken Web Site
</message>
<message name="IDS_BUGREPORT_REPORT_PAGE_TITLE" desc="Label showing the title of the page that will be reported">
- Feedback
+ Page title:
</message>
<message name="IDS_BUGREPORT_REPORT_URL_LABEL" desc="Label showing the URL that will be reported">
- Include this URL:
+ Page URL:
</message>
<message name="IDS_BUGREPORT_USER_EMAIL_LABEL" desc="Label showing the e-mail address that will be reported">
- Include this email:
+ User e-mail:
</message>
<message name="IDS_BUGREPORT_DESCRIPTION_LABEL" desc="Label for the description field">
- Tell us what is happening. (required)
- </message>
- <message name="IDS_BUGREPORT_SCREENSHOT_LABEL" desc="Label for the screenshot field if current screenshots are being shown">
- Include the current screenshot:
+ Description:
</message>
- <message name="IDS_BUGREPORT_SAVED_SCREENSHOT_LABEL" desc="Label for the screenshot field if saved screenshots are being shown">
- Include a saved screenshot:
+ <message name="IDS_BUGREPORT_SCREENSHOT_LABEL" desc="Label for the screenshot field">
+ Screenshot:
</message>
<!-- For Mac compatibility -->
<message name="IDS_BUGREPORT_SOMETHING_MISSING" desc="In Title Case: Report a bug/problem type: Something's missing">
@@ -4837,41 +4834,23 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_BUGREPORT_FEEDBACK_STATUS_FAIL" desc="Message for the status of a feedback submission failure">
User feedback submission failed: $1
</message>
- <message name="IDS_BUGREPORT_INCLUDE_LAST_SCREEN_IMAGE" desc="Radio button for including the last screen image on the bug report dialog box">
- Send last saved screen shot
- </message>
- <message name="IDS_BUGREPORT_CURRENT_SCREENSHOTS" desc="Radio button for including the last screen image on the bug report dialog box">
- Send a current page screen shot
- </message>
- <message name="IDS_BUGREPORT_SAVED_SCREENSHOTS" desc="Radio button for including the last screen image on the bug report dialog box">
- Send a saved screen shot
- </message>
- <message name="IDS_BUGREPORT_INCLUDE_SYSTEM_INFORMATION_CHKBOX" desc="Checkbox for including system information on the bug report dialog box">
- Send system information
- </message>
- <message name="IDS_BUGREPORT_SYSTEM_INFORMATION_URL_TEXT" desc="Text for system information url on the bug report dialog box">
- Include System Information
- </message>
- <message name="IDS_BUGREPORT_CHOOSE_DIFFERENT_SCREENSHOT" desc="Text for changing the screenshot selection from current to saved">
- (Choose a different screenshot)
- </message>
- <message name="IDS_BUGREPORT_CHOOSE_ORIGINAL_SCREENSHOT" desc="Text for changing the screenshot selection from saved to current">
- (Go back to original screenshot)
- </message>
- <message name="IDS_BUGREPORT_PRIVACY_NOTE" desc="Text for the privacy note included with Chrome OS">
- Note: When you click "Send Feedback," Chrome OS includes a log of
- system events from your device. This information is used by
- us to diagnose problems, understand how you interact with
- the device, and to help us improve its performance. Any
- personal information included with the feedback report,
- whether explicitly in your comments or incidentally in the
- system logs and the screenshot, will be protected in
- accordance with our <ph name="BEGIN_LINK">&lt;a target="_blank"
- href="http://www.google.com/chromeos/intl/en/privacy.html"&gt;</ph>
- privacy policies.<ph name="END_LINK">&lt;/a&gt;</ph>
- To not send any system logs at all, please uncheck the
- "Include System Information" box.
- </message>
+ <if expr="pp_ifdef('chromeos')">
+ <message name="IDS_BUGREPORT_INCLUDE_LAST_SCREEN_IMAGE" desc="Radio button for including the last screen image on the bug report dialog box">
+ Send last saved screen shot
+ </message>
+ <message name="IDS_BUGREPORT_CURRENT_SCREENSHOTS" desc="Radio button for including the last screen image on the bug report dialog box">
+ Send a current page screen shot
+ </message>
+ <message name="IDS_BUGREPORT_SAVED_SCREENSHOTS" desc="Radio button for including the last screen image on the bug report dialog box">
+ Send a saved screen shot
+ </message>
+ <message name="IDS_BUGREPORT_INCLUDE_SYSTEM_INFORMATION_CHKBOX" desc="Checkbox for including system information on the bug report dialog box">
+ Send system information
+ </message>
+ <message name="IDS_BUGREPORT_SYSTEM_INFORMATION_URL_TEXT" desc="Text for system information url on the bug report dialog box">
+ Included system information...
+ </message>
+ </if>
<message name="IDS_BUGREPORT_INCLUDE_PAGE_SOURCE_CHKBOX" desc="Checkbox for including page source">
Send source of current page
</message>
@@ -4890,21 +4869,15 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_BUGREPORT_PHISHING_PAGE" desc="Report a bug/problem type: Phishing page">
Phishing page
</message>
- <message name="IDS_BUGREPORT_NO_ISSUE_SELECTED" desc="Message shown when no issue is selected before hitting send feedback">
- Please tell where you are having problems before sending the feedback.
- </message>
- <message name="IDS_BUGREPORT_NO_DESCRIPTION" desc="Message shown when no text is entered before hitting send feedback">
- Please tell us what is happening before sending the feedback.
- </message>
- <message name="IDS_BUGREPORT_NO_SAVED_SCREENSHOTS_HELP" desc="Message shown when no screenshots are available for selection">
- You can select saved screenshots from here. Currently there are no screenshots available. You can press Ctrl + the "Overview Mode" key together to take a screenshot. The last three screenshots that you have taken will appear here.
+ <message name="IDS_BUGREPORT_NO_ISSUE_SELECTED" desc="Message shown when no issue is selected before hitting submit">
+ Please select an issue type from the drop down before sending the report
</message>
<message name="IDS_BUGREPORT_ISSUE_WITH" desc="Label for issue with">
- Where are you having problems? (required)
+ I see an issue with:
</message>
<if expr="not pp_ifdef('use_titlecase')">
<message name="IDS_BUGREPORT_SEND_REPORT" desc="Text for OK button on dialog">
- Send Feedback
+ Send report
</message>
<message name="IDS_BUGREPORT_SEND_PHISHING_REPORT" desc="Text for report phishing button">
Open phishing report
@@ -4954,7 +4927,7 @@ Keep your key file in a safe place. You will need it to create new versions of y
</if>
<if expr="pp_ifdef('use_titlecase')">
<message name="IDS_BUGREPORT_SEND_REPORT" desc="Text for the send report button on dialog">
- Send Feedback
+ Send report
</message>
<message name="IDS_BUGREPORT_SEND_PHISHING_REPORT" desc="Text for report phishing button">
Open phishing report
diff --git a/chrome/browser/dom_ui/bug_report_ui.cc b/chrome/browser/dom_ui/bug_report_ui.cc
index d3e2797..2be4fba 100755..100644
--- a/chrome/browser/dom_ui/bug_report_ui.cc
+++ b/chrome/browser/dom_ui/bug_report_ui.cc
@@ -54,19 +54,16 @@
#include "chrome/browser/chromeos/login/user_manager.h"
#endif
-namespace {
-
-const char kScreenshotBaseUrl[] = "chrome://screenshots/";
-const char kCurrentScreenshotUrl[] = "chrome://screenshots/current";
+static const char kScreenshotBaseUrl[] = "chrome://screenshots/";
+static const char kCurrentScreenshotUrl[] = "chrome://screenshots/current";
#if defined(OS_CHROMEOS)
-const char kSavedScreenshotsUrl[] = "chrome://screenshots/saved/";
-
-const char kScreenshotPattern[] = "*.png";
-const char kScreenshotsRelativePath[] = "/Screenshots";
+static const char kSavedScreenshotsUrl[] = "chrome://screenshots/saved/";
-const size_t kMaxSavedScreenshots = 2;
+static const char kScreenshotPattern[] = "*.png";
+static const char kScreenshotsRelativePath[] = "/Screenshots";
#endif
+namespace {
#if defined(OS_CHROMEOS)
void GetSavedScreenshots(std::vector<std::string>* saved_screenshots,
@@ -91,9 +88,6 @@ void GetSavedScreenshots(std::vector<std::string>* saved_screenshots,
while (!screenshot.empty()) {
saved_screenshots->push_back(std::string(kSavedScreenshotsUrl) +
screenshot.BaseName().value());
- if (saved_screenshots->size() >= kMaxSavedScreenshots)
- break;
-
screenshot = screenshots.Next();
}
done->Signal();
@@ -196,10 +190,7 @@ class BugReportHandler : public DOMMessageHandler,
private:
void HandleGetDialogDefaults(const ListValue* args);
- void HandleRefreshCurrentScreenshot(const ListValue* args);
-#if defined(OS_CHROMEOS)
- void HandleRefreshSavedScreenshots(const ListValue* args);
-#endif
+ void HandleRefreshScreenshots(const ListValue* args);
void HandleSendReport(const ListValue* args);
void HandleCancel(const ListValue* args);
void HandleOpenSystemTab(const ListValue* args);
@@ -242,36 +233,24 @@ void BugReportUIHTMLSource::StartDataRequest(const std::string& path,
DictionaryValue localized_strings;
localized_strings.SetString(std::string("title"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_TITLE));
- localized_strings.SetString(std::string("page-title"),
- l10n_util::GetStringUTF8(IDS_BUGREPORT_REPORT_PAGE_TITLE));
localized_strings.SetString(std::string("issue-with"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_ISSUE_WITH));
localized_strings.SetString(std::string("page-url"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_REPORT_URL_LABEL));
localized_strings.SetString(std::string("description"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_DESCRIPTION_LABEL));
- localized_strings.SetString(std::string("current-screenshot"),
+ localized_strings.SetString(std::string("screenshot"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_SCREENSHOT_LABEL));
- localized_strings.SetString(std::string("saved-screenshot"),
- l10n_util::GetStringUTF8(IDS_BUGREPORT_SAVED_SCREENSHOT_LABEL));
#if defined(OS_CHROMEOS)
localized_strings.SetString(std::string("user-email"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_USER_EMAIL_LABEL));
- localized_strings.SetString(std::string("sysinfo"),
- l10n_util::GetStringUTF8(
- IDS_BUGREPORT_INCLUDE_SYSTEM_INFORMATION_CHKBOX));
-
localized_strings.SetString(std::string("currentscreenshots"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_CURRENT_SCREENSHOTS));
localized_strings.SetString(std::string("savedscreenshots"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_SAVED_SCREENSHOTS));
-
- localized_strings.SetString(std::string("choose-different-screenshot"),
- l10n_util::GetStringUTF8(
- IDS_BUGREPORT_CHOOSE_DIFFERENT_SCREENSHOT));
- localized_strings.SetString(std::string("choose-original-screenshot"),
+ localized_strings.SetString(std::string("sysinfo"),
l10n_util::GetStringUTF8(
- IDS_BUGREPORT_CHOOSE_ORIGINAL_SCREENSHOT));
+ IDS_BUGREPORT_INCLUDE_SYSTEM_INFORMATION_CHKBOX));
#else
localized_strings.SetString(std::string("currentscreenshots"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_INCLUDE_NEW_SCREEN_IMAGE));
@@ -291,14 +270,6 @@ void BugReportUIHTMLSource::StartDataRequest(const std::string& path,
localized_strings.SetString(std::string("no-issue-selected"),
l10n_util::GetStringUTF8(IDS_BUGREPORT_NO_ISSUE_SELECTED));
- localized_strings.SetString(std::string("no-description"),
- l10n_util::GetStringUTF8(IDS_BUGREPORT_NO_DESCRIPTION));
-
- localized_strings.SetString(std::string("no-saved-screenshots"),
- l10n_util::GetStringUTF8(IDS_BUGREPORT_NO_SAVED_SCREENSHOTS_HELP));
-
- localized_strings.SetString(std::string("privacy-note"),
- l10n_util::GetStringUTF8(IDS_BUGREPORT_PRIVACY_NOTE));
// TODO(rkc): Find some way to ensure this order of dropdowns is in sync
// with the order in the userfeedback ChromeData proto buffer
@@ -529,12 +500,8 @@ base::StringPiece BugReportHandler::Init() {
void BugReportHandler::RegisterMessages() {
dom_ui_->RegisterMessageCallback("getDialogDefaults",
NewCallback(this, &BugReportHandler::HandleGetDialogDefaults));
- dom_ui_->RegisterMessageCallback("refreshCurrentScreenshot",
- NewCallback(this, &BugReportHandler::HandleRefreshCurrentScreenshot));
-#if defined(OS_CHROMEOS)
- dom_ui_->RegisterMessageCallback("refreshSavedScreenshots",
- NewCallback(this, &BugReportHandler::HandleRefreshSavedScreenshots));
-#endif
+ dom_ui_->RegisterMessageCallback("refreshScreenshots",
+ NewCallback(this, &BugReportHandler::HandleRefreshScreenshots));
dom_ui_->RegisterMessageCallback("sendReport",
NewCallback(this, &BugReportHandler::HandleSendReport));
dom_ui_->RegisterMessageCallback("cancel",
@@ -573,25 +540,22 @@ void BugReportHandler::HandleGetDialogDefaults(const ListValue*) {
dom_ui_->CallJavascriptFunction(L"setupDialogDefaults", dialog_defaults);
}
-void BugReportHandler::HandleRefreshCurrentScreenshot(const ListValue*) {
- std::string current_screenshot(kCurrentScreenshotUrl);
- StringValue screenshot(current_screenshot);
- dom_ui_->CallJavascriptFunction(L"setupCurrentScreenshot", screenshot);
-}
+void BugReportHandler::HandleRefreshScreenshots(const ListValue*) {
+ ListValue screenshots;
+ screenshots.Append(new StringValue(std::string(kCurrentScreenshotUrl)));
#if defined(OS_CHROMEOS)
-void BugReportHandler::HandleRefreshSavedScreenshots(const ListValue*) {
std::vector<std::string> saved_screenshots;
GetScreenshotUrls(&saved_screenshots);
- ListValue screenshots_list;
+ ListValue* saved_screenshot_list = new ListValue();
for (size_t i = 0; i < saved_screenshots.size(); ++i)
- screenshots_list.Append(new StringValue(saved_screenshots[i]));
- dom_ui_->CallJavascriptFunction(L"setupSavedScreenshots", screenshots_list);
-}
+ saved_screenshot_list->Append(new StringValue(saved_screenshots[i]));
+ screenshots.Append(saved_screenshot_list);
#endif
-
+ dom_ui_->CallJavascriptFunction(L"setupScreenshots", screenshots);
+}
void BugReportHandler::HandleSendReport(const ListValue* list_value) {
ListValue::const_iterator i = list_value->begin();
diff --git a/chrome/browser/resources/bug_report.css b/chrome/browser/resources/bug_report.css
index 07210b0..6366a51 100755..100644
--- a/chrome/browser/resources/bug_report.css
+++ b/chrome/browser/resources/bug_report.css
@@ -1,35 +1,15 @@
.bug-report-label {
text-align: start;
vertical-align: text-top;
- font-weight: 300;
}
.bug-report-text {
width: 40em;
-}
-
-.bug-report-dropdown {
- width: 15em;
-}
-
-.bug-report-table {
- width: 40em;
- border-spacing: 0px;
-}
-
-.bug-report-field {
- width: 22em;
- border-style: solid;
- border-width: 1px;
-}
-
-.bug-report-fieldlabel {
- width: 13em;
- font-weight: 300;
+ resize: none;
}
.bug-report-button {
-
+ width: 8em;
}
hr {
@@ -38,7 +18,7 @@ hr {
background: #cccccc;
margin-top: 10px;
margin-bottom: 10px;
- width: 40em;
+ width: 33.5em;
}
.thumbnail-list {
@@ -90,18 +70,18 @@ hr {
.image-thumbnail img {
display: block;
- width: 200px;
+ width: 75px;
}
.image-thumbnail:hover div {
- display: block;
- position: absolute;
- top: 130%;
- left: 0;
- padding: 1px;
- border: 1px dashed blue;
- background-color: transparent;
- text-align: center
+ display: block;
+ position: absolute;
+ top: 130%;
+ left:0;
+ padding: 1px;
+ border: 1px dashed blue;
+ background-color: transparent;
+ text-align: center
}
.image-thumbnail:hover div img {
@@ -109,76 +89,19 @@ hr {
width: 400px;
}
-.image-thumbnail-current {
- position: relative;
- z-index: 1;
- display: inline-block;
- padding: 0px;
- border: 2px solid white;
-}
-
-.image-thumbnail-current:hover {
- z-index: 2;
-}
-
-.image-thumbnail-current div {
- display: none;
-}
-
-.image-thumbnail-current img {
- display: block;
- width: 200px;
-}
-
-.image-thumbnail-current:hover div {
- display: block;
- position: absolute;
- top: 130%;
- left: 0;
- padding: 1px;
- border: 1px dashed blue;
- background-color: transparent;
- text-align: center
-}
-
-.image-thumbnail-current:hover div img {
- position: absolute;
- width: 400px;
- padding: 2px;
- border: 1px dashed blue;
-}
-
th {
padding-top: 10px;
- font-weight: normal;
-}
-
-.formpane {
- margin-right: 20px;
+ color: #233478;
}
-.bug-report-input {
- border-style: solid;
- border-width: 1px;
+#main-panel {
+ display: -webkit-box;
}
-#user-email-text {
- border: none;
-}
-
-#buttons-pane {
- padding: 0px 0px;
+.formpane {
+ margin-right: 20px;
}
-#privacy-note {
- -webkit-padding-start: 24px;
- -webkit-padding-end: 24px;
- padding-top: 24px;
- padding-bottom: 34px;
- text-align: start;
- font-size: 70%;
- font-weight: normal;
- color: #53627d;
- margin: 0;
- width: 47em;
+body {
+ -webkit-user-select: none;
}
diff --git a/chrome/browser/resources/bug_report.html b/chrome/browser/resources/bug_report.html
index 623d505..6192960 100755..100644
--- a/chrome/browser/resources/bug_report.html
+++ b/chrome/browser/resources/bug_report.html
@@ -1,290 +1,220 @@
-<!DOCTYPE HTML>
-<html i18n-values="dir:textdirection;">
-<head>
-<meta charset="utf-8"/>
-<title i18n-content="page-title"></title>
-<!-- We want to keep our style in sync with the options page. -->
-<link rel="stylesheet" href="dom_ui.css">
-<link rel="stylesheet" href="options/options_page.css">
-<link rel="stylesheet" href="bug_report.css">
-
-<script src="shared/js/local_strings.js"></script>
-<script src="shared/js/util.js"></script>
-<script src="bug_report.js"></script>
-<script>
-
-///////////////////////////////////////////////////////////////////////////////
-// Document Functions:
-/**
- * Window onload handler, sets up the page.
- */
-function load() {
- $('sysinfo-url').onclick = function(event) {
- chrome.send('openSystemTab');
- };
-
- var menuOffPattern = /(^\?|&)menu=off($|&)/;
- var menuDisabled = menuOffPattern.test(window.location.search);
- document.documentElement.setAttribute('hide-menu', menuDisabled);
-
-
- // textContent on description-text textarea seems to default
- // to several spaces, this resets it to empty.
- $('description-text').textContent = '';
-
- // Get a list of issues that we allow the user to select from.
- // Note, the order and the issues types themselves are different
- // between Chromium and Chromium OS, so this code needs to be
- // maintained individually between in these two sections.
- var issueTypeText = [];
- issueTypeText[0] = localStrings.getString('issue-choose');
-<if expr="not pp_ifdef('chromeos')">
- issueTypeText[1] = localStrings.getString('issue-page-formatting');
- issueTypeText[2] = localStrings.getString('issue-page-load');
- issueTypeText[3] = localStrings.getString('issue-plugins');
- issueTypeText[4] = localStrings.getString('issue-tabs');
- issueTypeText[5] = localStrings.getString('issue-sync');
- issueTypeText[6] = localStrings.getString('issue-crashes');
- issueTypeText[7] = localStrings.getString('issue-extensions');
- issueTypeText[8] = localStrings.getString('issue-phishing');
- issueTypeText[9] = localStrings.getString('issue-other');
-</if>
-<if expr="pp_ifdef('chromeos')">
- issueTypeText[1] = localStrings.getString('issue-connectivity');
- issueTypeText[2] = localStrings.getString('issue-sync');
- issueTypeText[3] = localStrings.getString('issue-crashes');
- issueTypeText[4] = localStrings.getString('issue-page-formatting');
- issueTypeText[5] = localStrings.getString('issue-extensions');
- issueTypeText[6] = localStrings.getString('issue-standby');
- issueTypeText[7] = localStrings.getString('issue-phishing');
- issueTypeText[8] = localStrings.getString('issue-other');
-</if>
- // Add all the issues to the selection box.
- for (var i = 0; i < issueTypeText.length; i++) {
- var option = document.createElement('option');
- option.className = 'bug-report-text';
- option.textContent = issueTypeText[i];
- $('issue-with-combo').add(option);
- }
-
- chrome.send('getDialogDefaults', []);
- chrome.send('refreshCurrentScreenshot', []);
-};
-
-function setupCurrentScreenshot(screenshot) {
- addScreenshot('current-screenshots', screenshot);
-}
-
-function setupSavedScreenshots(screenshots) {
- if (screenshots.length == 0) {
- $('saved-screenshots').innerText =
- localStrings.getString('no-saved-screenshots');
-
- // Make sure we make the display the message
- $('saved-screenshots').style.display = 'block';
-
- // 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 {
- 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) {
- if (defaults.length > 0) {
- $('page-url-text').value = defaults[0];
- if (defaults[0] == '')
- $('page-url-checkbox').checked = false;
-
- if (defaults.length > 2) {
- // We're in Chromium OS.
- $('user-email-text').textContent = defaults[2];
- if (defaults[2] == '') {
- // if we didn't get an e-mail address from cros,
- // disable the user email display totally
- $('user-email-table').style.display = 'none';
-
- // this also means we are in privacy mode, so no saved screenshots
- $('screenshot-link-tosaved').style.display = 'none';
- }
- }
- }
-}
-
-window.addEventListener('DOMContentLoaded', load);
-</script>
-</head>
-<body i18n-values=".style.fontFamily:fontfamily;.style.fontSize:fontsize">
-<div id="main-content">
- <div id="navbar-container">
- <h1 id="settings-title" i18n-content="page-title">
- </h1>
- </div>
- <div id="mainview" class>
- <!-- Even though we really don't need these many nested DIV's, we're staying
- as close to the settings page layout as possible, re-using all our styles
- from options_page.css -->
- <div id="mainview-content">
- <div class="page">
- <h1 i18n-content="title"></h1>
- <table id="main-table">
- <!-- Issue type dropdown -->
- <tbody>
- <tr>
- <th id="issue-with" class="bug-report-label"
- i18n-content="issue-with"></th>
- </tr>
- <tr>
- <td>
- <select id="issue-with-combo" class="bug-report-text">
- </select>
- </td>
- </tr>
- <!-- Description -->
- <tr>
- <th id="description" colspan="2" class="bug-report-label"
- i18n-content="description"></th>
- </tr>
- <tr>
- <td colspan="2">
- <textarea id="description-text" rows="10"
- class="bug-report-text"></textarea>
- </td>
- </tr>
- <tr>
- <td>
- <table style="-webkit-border-vertical-spacing: 0px;">
- <!-- Page URL -->
- <tr>
- <td>
- <table class="bug-report-table">
- <tr>
- <td class="bug-report-fieldlabel">
- <input id="page-url-checkbox" type="checkbox"
- value="pageurl" checked>
- <span id="page-url-label" i18n-content="page-url">
- </span>
- </td>
- <td>
- <input id="page-url-text" class="bug-report-field"
- maxlength="200">
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <!-- User e-mail -->
- <tr>
- <td>
-<if expr="pp_ifdef('chromeos')">
- <table id="user-email-table" class="bug-report-table">
- <tr>
- <td class="bug-report-fieldlabel">
- <input id="user-email-checkbox" type="checkbox"
- checked>
- <span id="user-email-label"
- i18n-content="user-email"></span>
- </td>
- <td>
- <label id="user-email-text"
- class="bug-report-field"></label>
- </td>
- </tr>
- </table>
-</if>
- </td>
- </tr>
- <!-- System Information -->
- <tr>
- <td>
- <table class="bug-report-table">
- <tr>
- <td class="bug-report-fieldlabel">
- <input id="sys-info-checkbox" type="checkbox"
- checked>
- <span id="sysinfo-label">
- <a id="sysinfo-url" href="#"
- i18n-content="sysinfo"></a>
- </span>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <!-- Screenshot -->
- <tr>
- <td>
- <table class="bug-report-table">
- <tr>
- <td class="bug-report-fieldlabel">
- <input id="screenshot-checkbox" type="checkbox"
- checked>
- <span id="screenshot-label-current"
- i18n-content="current-screenshot">
- </span>
-<if expr="pp_ifdef('chromeos')">
- <span id="screenshot-label-saved"
- style="display: none;"
- i18n-content="saved-screenshot">
- </span>
- <a id="screenshot-link-tosaved" href="#"
- onclick="changeToSaved()"
- i18n-content="choose-different-screenshot">
- </a>
- <a id="screenshot-link-tocurrent" href="#"
- style="display: none;"
- onclick="changeToCurrent()"
- i18n-content="choose-original-screenshot">
- </a>
-</if>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
-<if expr="pp_ifdef('chromeos')">
- <div id="saved-screenshots" style="display: none;"
- class="thumbnail-list"></div>
-</if>
- <div id="current-screenshots" class="thumbnail-list">
- </div>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <div id="buttons-pane">
- <!-- Buttons -->
- <input id="send-report-button" type="submit"
- class="bug-report-button" onclick="sendReport()"
- i18n-values="value:send-report">
- <input id="cancel-button" type="submit"
- class="bug-report-button" i18n-values="value:cancel"
- onclick="cancel()">
- </div>
-<if expr="pp_ifdef('chromeos')">
- <div id="privacy-note" i18n-values=".innerHTML:privacy-note">
- </div>
-</if>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </div>
-</div>
-</body>
-</html>
+<!DOCTYPE HTML>
+<html i18n-values="dir:textdirection;">
+<head>
+<meta charset="utf-8"/>
+<title i18n-content="title"></title>
+<link rel="stylesheet" href="bug_report.css"/>
+
+<script src="shared/js/local_strings.js"></script>
+<script src="shared/js/util.js"></script>
+<script src="bug_report.js"></script>
+<script>
+
+///////////////////////////////////////////////////////////////////////////////
+// Document Functions:
+/**
+ * Window onload handler, sets up the page.
+ */
+function load() {
+ $('sysinfo-url').onclick = function(event) {
+ chrome.send('openSystemTab');
+ };
+
+ // textContent on description-text textarea seems to default
+ // to several spaces, this resets it to empty.
+ $('description-text').textContent = '';
+ $('send-report-button').disabled = true;
+
+ $('issue-with-combo').addEventListener('change', function(e) {
+ $('send-report-button').disabled =
+ this.selectedIndex <= 0 || $('description-text').value.length == 0;
+ });
+
+ $('description-text').addEventListener('keyup', function(e) {
+ $('send-report-button').disabled =
+ $('issue-with-combo').selectedIndex <= 0 || this.value.length == 0;
+ });
+
+ $('current-screenshot').nextSibling.textContent =
+ localStrings.getString('currentscreenshots');
+<if expr="pp_ifdef('chromeos')">
+ $('saved-screenshot').nextSibling.textContent =
+ localStrings.getString('savedscreenshots');
+</if>
+ $('no-screenshot').nextSibling.textContent =
+ localStrings.getString('noscreenshot');
+
+ // Get a list of issues that we allow the user to select from.
+ // Note, the order and the issues types themselves are different
+ // between Chromium and Chromium OS, so this code needs to be
+ // maintained individually between the bug_report.html and
+ // bug_report_cros.html files.
+ var issueTypeText = [];
+ issueTypeText[0] = localStrings.getString('issue-choose');
+<if expr="not pp_ifdef('chromeos')">
+ issueTypeText[1] = localStrings.getString('issue-page-formatting');
+ issueTypeText[2] = localStrings.getString('issue-page-load');
+ issueTypeText[3] = localStrings.getString('issue-plugins');
+ issueTypeText[4] = localStrings.getString('issue-tabs');
+ issueTypeText[5] = localStrings.getString('issue-sync');
+ issueTypeText[6] = localStrings.getString('issue-crashes');
+ issueTypeText[7] = localStrings.getString('issue-extensions');
+ issueTypeText[8] = localStrings.getString('issue-phishing');
+ issueTypeText[9] = localStrings.getString('issue-other');
+</if>
+<if expr="pp_ifdef('chromeos')">
+ issueTypeText[1] = localStrings.getString('issue-connectivity');
+ issueTypeText[2] = localStrings.getString('issue-sync');
+ issueTypeText[3] = localStrings.getString('issue-crashes');
+ issueTypeText[4] = localStrings.getString('issue-page-formatting');
+ issueTypeText[5] = localStrings.getString('issue-extensions');
+ issueTypeText[6] = localStrings.getString('issue-standby');
+ issueTypeText[7] = localStrings.getString('issue-phishing');
+ issueTypeText[8] = localStrings.getString('issue-other');
+</if>
+ // Add all the issues to the selection box.
+ for (var i = 0; i < issueTypeText.length; i++) {
+ var option = document.createElement('option');
+ option.className = 'bug-report-text';
+ option.textContent = issueTypeText[i];
+ $('issue-with-combo').add(option);
+ }
+
+ chrome.send('getDialogDefaults', []);
+ chrome.send('refreshScreenshots', []);
+};
+
+function setupScreenshots(screenshots) {
+ if (screenshots.length == 1) {
+ addScreenshot('current-screenshots', screenshots[0]);
+ } else {
+ // We're in Chromium OS.
+ currentScreenshot = screenshots[0];
+ addScreenshot('current-screenshots', currentScreenshot);
+
+ savedScreenshots = screenshots[1];
+ if (savedScreenshots.length == 0) {
+ $('saved-screenshots').disabled = true;
+ return;
+ }
+ for (i = 0; i < savedScreenshots.length; ++i)
+ addScreenshot('saved-screenshots', savedScreenshots[i]);
+ }
+}
+
+function setupDialogDefaults(defaults) {
+ if (defaults.length > 0) {
+ $('page-url-text').value = defaults[0];
+ if (defaults.length > 2) {
+ // We're in Chromium OS.
+ $('user-email-text').value = defaults[2];
+ }
+ }
+}
+
+window.addEventListener('DOMContentLoaded', load);
+</script>
+</head>
+<body>
+<div>
+ <div id="main-panel">
+ <div class="formpane">
+ <table>
+ <!-- Issue type dropdown -->
+ <tr>
+ <th id="issue-with" class="bug-report-label" i18n-content="issue-with">
+ </th>
+ </tr>
+ <tr>
+ <td>
+ <select id="issue-with-combo" class="bug-report-text">
+ </select>
+ </td>
+ </tr>
+ <!-- Page URL text box -->
+ <tr>
+ <th colspan="2" id="page-url" class="bug-report-label"
+ i18n-content="page-url">
+ </th>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <input id='page-url-text' maxlength=200 class="bug-report-text">
+ </td>
+ </tr>
+ <!-- Description -->
+ <tr>
+ <th id="description" colspan="2" class="bug-report-label"
+ i18n-content="description">
+ </th>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <textarea id='description-text' rows="10" class="bug-report-text">
+ </textarea>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div class="formpane">
+ <table>
+<if expr="pp_ifdef('chromeos')">
+ <!-- Page URL text box -->
+ <tr>
+ <th id="user-email" class="bug-report-label" i18n-content="user-email">
+ </th>
+ </tr>
+ <tr>
+ <td>
+ <input id='user-email-text' maxlength=200 class="bug-report-text">
+ </td>
+ </tr>
+ <!-- System Information checkbox -->
+ <tr>
+ <td>
+ <input id="sys-info-checkbox" type="checkbox" value="sysinfo" checked>
+ <span id="sysinfo-label"></span>
+ <a id="sysinfo-url" href="#" >
+ <span i18n-content="sysinfo"></span>
+ </a>
+ </td>
+ </tr>
+</if>
+ <!-- Screenshot radio buttons -->
+ <tr>
+ <th id="screenshot" class="bug-report-label" i18n-content="screenshot">
+ </th>
+ </tr>
+ <tr>
+ <td>
+ <input id="no-screenshot" type="radio" name="screenshot-group"
+ value="none" onclick="noneSelected()">
+ <br>
+<if expr="pp_ifdef('chromeos')">
+ <input id="saved-screenshot" type="radio" name="screenshot-group"
+ value="saved" onclick="savedSelected()">
+ <br>
+ <div id="saved-screenshots" style="display: none;"
+ class="thumbnail-list">
+ </div>
+</if>
+ <input id="current-screenshot" type="radio" name="screenshot-group"
+ value="current" checked onclick="currentSelected()">
+ <br>
+ <div id="current-screenshots" class="thumbnail-list">
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+</div>
+<div id="buttons">
+ <!-- Buttons -->
+ <input id='send-report-button' type="submit" class="bug-report-button"
+ i18n-values="value:send-report" onclick="sendReport()">
+ <input id='cancel-button' type="submit" class="bug-report-button"
+ i18n-values="value:cancel" onclick="cancel()">
+</div>
+</body>
+</html>
diff --git a/chrome/browser/resources/bug_report.js b/chrome/browser/resources/bug_report.js
index 64f37d0..dbd1241 100755..100644
--- a/chrome/browser/resources/bug_report.js
+++ b/chrome/browser/resources/bug_report.js
@@ -52,18 +52,22 @@ function addScreenshot(divId, screenshot) {
};
var innerDiv = document.createElement('div');
- if (divId == 'current-screenshots')
- innerDiv.className = 'image-thumbnail-current';
- else
- innerDiv.className = 'image-thumbnail';
+ 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();
+ thumbnail.src = screenshot + "?" + Date.now();
innerDiv.appendChild(thumbnail);
+ var largeImage = document.createElement('img');
+ largeImage.src = screenshot + "?" + Date.now();
+
+ var popupDiv = document.createElement('div');
+ popupDiv.appendChild(largeImage);
+ innerDiv.appendChild(popupDiv);
+
thumbnailDiv.appendChild(innerDiv);
$(divId).appendChild(thumbnailDiv);
@@ -80,31 +84,20 @@ function sendReport() {
if (!$('issue-with-combo').selectedIndex) {
alert(localStrings.getString('no-issue-selected'));
return false;
- } else if ($('description-text').value.length == 0) {
- alert(localStrings.getString('no-description'));
- return false;
}
var imagePath = '';
if (selectedThumbnailId)
imagePath = $(selectedThumbnailId + '-image').src;
- // Note, categories are based from 1 in our protocol buffers, so no
- // adjustment is needed on selectedIndex.
- var pageUrl = $('page-url-text').value;
- if (!$('page-url-checkbox').checked)
- pageUrl = '';
var reportArray = [String($('issue-with-combo').selectedIndex),
- pageUrl,
+ $('page-url-text').value,
$('description-text').value,
imagePath];
- // Add chromeos data if it exists.
- if ($('user-email-text') && $('sys-info-checkbox')) {
- var userEmail= $('user-email-text').textContent;
- if (!$('user-email-checkbox').checked)
- userEmail = '';
- reportArray = reportArray.concat([userEmail,
+ // Add chromeos data if it exists.
+ if ($('user-email-text') && $('sys-info-checkbox')) {
+ reportArray = reportArray.concat([$('user-email-text').value,
String($('sys-info-checkbox').checked)]);
}
@@ -124,7 +117,6 @@ function cancel() {
* selected when we had this div open previously.
*/
function currentSelected() {
- // TODO(rkc): Change this to use a class instead.
$('current-screenshots').style.display = 'block';
if ($('saved-screenshots'))
$('saved-screenshots').style.display = 'none';
@@ -139,49 +131,26 @@ function currentSelected() {
/**
* Select the saved screenshots div, restoring the image that was
* selected when we had this div open previously.
- */
-function savedSelected() {
+ */
+function savedSelected() {
$('current-screenshots').style.display = 'none';
+ $('saved-screenshots').style.display = 'block';
- if ($('saved-screenshots').childElementCount == 0) {
- // setupSavedScreenshots will take care of changing visibility
- chrome.send('refreshSavedScreenshots', []);
- } else {
- $('saved-screenshots').style.display = 'block';
- if (selectedThumbnailDivId != 'saved-screenshots')
- selectImage('saved-screenshots', savedThumbnailIds['saved-screenshots']);
- }
+ if (selectedThumbnailDivId != 'saved-screenshots')
+ selectImage('saved-screenshots', savedThumbnailIds['saved-screenshots']);
return true;
}
-
/**
- * Change the type of screenshot we're showing to the user from
- * the current screenshot to saved screenshots
+ * Unselect all screenshots divs.
*/
-function changeToSaved() {
- $('screenshot-label-current').style.display = 'none';
- $('screenshot-label-saved').style.display = 'inline';
-
- // Change the link to say "go to original"
- $('screenshot-link-tosaved').style.display = 'none';
- $('screenshot-link-tocurrent').style.display = 'inline';
-
- savedSelected();
-}
+function noneSelected() {
+ $('current-screenshots').style.display = 'none';
+ if ($('saved-screenshots'))
+ $('saved-screenshots').style.display = 'none';
-/**
- * Change the type of screenshot we're showing to the user from
- * the saved screenshots to the current screenshots
- */
-function changeToCurrent() {
- $('screenshot-label-current').style.display = 'inline';
- $('screenshot-label-saved').style.display = 'none';
-
- // Change the link to say "go to original"
- $('screenshot-link-tosaved').style.display = 'inline';
- $('screenshot-link-tocurrent').style.display = 'none';
-
- currentSelected();
+ selectedThumbnailDivId = '';
+ selectedThumbnailId = '';
+ return true;
}