Commit 4d82fad4 authored by rkc@chromium.org's avatar rkc@chromium.org

Add the user email field to Chrome.

Add the user email field for Chrome on all other platforms (ChromeOS already has it); also make the field editable.

R=estade@chromium.org
BUG=94149
TEST=Send feedback reports from all 4 platforms, from both incognito and regular modes, making sure that the user e-mail is populated correctly and reported to the Feedback server correctly.


Review URL: https://chromiumcodereview.appspot.com/10832078

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149346 0039d316-1c4b-4281-b951-d872f2087c98
parent 7980637b
...@@ -31,9 +31,9 @@ void FeedbackData::UpdateData(Profile* profile, ...@@ -31,9 +31,9 @@ void FeedbackData::UpdateData(Profile* profile,
const std::string& category_tag, const std::string& category_tag,
const std::string& page_url, const std::string& page_url,
const std::string& description, const std::string& description,
const std::string& user_email,
ScreenshotDataPtr image ScreenshotDataPtr image
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
, const std::string& user_email
, const bool send_sys_info , const bool send_sys_info
, const bool sent_report , const bool sent_report
, const std::string& timestamp , const std::string& timestamp
...@@ -45,9 +45,9 @@ void FeedbackData::UpdateData(Profile* profile, ...@@ -45,9 +45,9 @@ void FeedbackData::UpdateData(Profile* profile,
category_tag_ = category_tag; category_tag_ = category_tag;
page_url_ = page_url; page_url_ = page_url;
description_ = description; description_ = description;
user_email_ = user_email;
image_ = image; image_ = image;
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
user_email_ = user_email;
send_sys_info_ = send_sys_info; send_sys_info_ = send_sys_info;
sent_report_ = sent_report; sent_report_ = sent_report;
timestamp_ = timestamp; timestamp_ = timestamp;
...@@ -69,11 +69,11 @@ void FeedbackData::SendReport() { ...@@ -69,11 +69,11 @@ void FeedbackData::SendReport() {
, category_tag_ , category_tag_
, page_url_ , page_url_
, description_ , description_
, user_email_
, image_ , image_
, screen_size.width() , screen_size.width()
, screen_size.height() , screen_size.height()
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
, user_email_
, zip_content_ ? zip_content_->c_str() : NULL , zip_content_ ? zip_content_->c_str() : NULL
, zip_content_ ? zip_content_->length() : 0 , zip_content_ ? zip_content_->length() : 0
, send_sys_info_ ? sys_info_ : NULL , send_sys_info_ ? sys_info_ : NULL
......
...@@ -29,9 +29,9 @@ class FeedbackData { ...@@ -29,9 +29,9 @@ class FeedbackData {
const std::string& category_tag, const std::string& category_tag,
const std::string& page_url, const std::string& page_url,
const std::string& description, const std::string& description,
const std::string& user_email,
ScreenshotDataPtr image ScreenshotDataPtr image
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
, const std::string& user_email
, const bool send_sys_info , const bool send_sys_info
, const bool sent_report , const bool sent_report
, const std::string& timestamp , const std::string& timestamp
...@@ -48,9 +48,9 @@ class FeedbackData { ...@@ -48,9 +48,9 @@ class FeedbackData {
const std::string& category_tag() const { return category_tag_; } const std::string& category_tag() const { return category_tag_; }
const std::string& page_url() const { return page_url_; } const std::string& page_url() const { return page_url_; }
const std::string& description() const { return description_; } const std::string& description() const { return description_; }
const std::string& user_email() const { return user_email_; }
ScreenshotDataPtr image() const { return image_; } ScreenshotDataPtr image() const { return image_; }
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
const std::string& user_email() const { return user_email_; }
chromeos::system::LogDictionaryType* sys_info() const { return sys_info_; } chromeos::system::LogDictionaryType* sys_info() const { return sys_info_; }
bool send_sys_info() const { return send_sys_info_; } bool send_sys_info() const { return send_sys_info_; }
bool sent_report() const { return sent_report_; } bool sent_report() const { return sent_report_; }
...@@ -67,11 +67,11 @@ class FeedbackData { ...@@ -67,11 +67,11 @@ class FeedbackData {
std::string category_tag_; std::string category_tag_;
std::string page_url_; std::string page_url_;
std::string description_; std::string description_;
std::string user_email_;
ScreenshotDataPtr image_; ScreenshotDataPtr image_;
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
// Chromeos specific values for SendReport. // Chromeos specific values for SendReport.
std::string user_email_;
chromeos::system::LogDictionaryType* sys_info_; chromeos::system::LogDictionaryType* sys_info_;
// Content of the compressed system logs. // Content of the compressed system logs.
std::string* zip_content_; std::string* zip_content_;
......
...@@ -246,11 +246,11 @@ void FeedbackUtil::SendReport( ...@@ -246,11 +246,11 @@ void FeedbackUtil::SendReport(
, const std::string& category_tag , const std::string& category_tag
, const std::string& page_url_text , const std::string& page_url_text
, const std::string& description , const std::string& description
, const std::string& user_email_text
, ScreenshotDataPtr image_data_ptr , ScreenshotDataPtr image_data_ptr
, int png_width , int png_width
, int png_height , int png_height
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
, const std::string& user_email_text
, const char* zipped_logs_data , const char* zipped_logs_data
, int zipped_logs_length , int zipped_logs_length
, const chromeos::system::LogDictionaryType* const sys_info , const chromeos::system::LogDictionaryType* const sys_info
...@@ -271,10 +271,8 @@ void FeedbackUtil::SendReport( ...@@ -271,10 +271,8 @@ void FeedbackUtil::SendReport(
// they wish // they wish
common_data->set_gaia_id(0); common_data->set_gaia_id(0);
#if defined(OS_CHROMEOS)
// Add the user e-mail to the feedback object // Add the user e-mail to the feedback object
common_data->set_user_email(user_email_text); common_data->set_user_email(user_email_text);
#endif
// Add the description to the feedback object // Add the description to the feedback object
common_data->set_description(description); common_data->set_description(description);
......
...@@ -68,11 +68,11 @@ class FeedbackUtil { ...@@ -68,11 +68,11 @@ class FeedbackUtil {
, const std::string& category_tag , const std::string& category_tag
, const std::string& page_url_text , const std::string& page_url_text
, const std::string& description , const std::string& description
, const std::string& user_email_text
, ScreenshotDataPtr png_data , ScreenshotDataPtr png_data
, int png_width , int png_width
, int png_height , int png_height
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
, const std::string& user_email_text
, const char* zipped_logs_data , const char* zipped_logs_data
, int zipped_logs_length , int zipped_logs_length
, const chromeos::system::LogDictionaryType* const sys_info , const chromeos::system::LogDictionaryType* const sys_info
......
...@@ -30,23 +30,21 @@ ...@@ -30,23 +30,21 @@
width: 100%; width: 100%;
} }
#page-url { .input-text-container {
-webkit-box-align: baseline; -webkit-box-align: baseline;
display: -webkit-box; display: -webkit-box;
} }
#page-url-text { .input-text-container > label {
/* Don't push checkboxes out of alignment with bulky input. */
margin-bottom: -0.25em;
}
#page-url > label {
-webkit-margin-end: 1em; -webkit-margin-end: 1em;
width: 150px;
} }
#page-url-text { .input-text-container > input {
-webkit-box-flex: 1; -webkit-box-flex: 1;
display: block; display: block;
/* Don't push checkboxes out of alignment with bulky input. */
margin-bottom: -0.25em;
} }
.thumbnail-list { .thumbnail-list {
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<div id="content"> <div id="content">
<span id="description" colspan="2" i18n-content="description"></span> <span id="description" colspan="2" i18n-content="description"></span>
<textarea id="description-text" rows="10"></textarea> <textarea id="description-text" rows="10"></textarea>
<div id="page-url" class="checkbox"> <div id="page-url" class="input-text-container checkbox">
<label> <label>
<input id="page-url-checkbox" type="checkbox" <input id="page-url-checkbox" type="checkbox"
value="pageurl" checked> value="pageurl" checked>
...@@ -26,19 +26,17 @@ ...@@ -26,19 +26,17 @@
</label> </label>
<input id="page-url-text"> <input id="page-url-text">
</div> </div>
<if expr="pp_ifdef('chromeos')">
<!-- User e-mail --> <!-- User e-mail -->
<div id="user-email-table"> <div id="user-email" class="input-text-container checkbox">
<div class="checkbox"> <label>
<label> <input id="user-email-checkbox" type="checkbox" checked>
<input id="user-email-checkbox" type="checkbox" checked> <span id="user-email-label" i18n-content="user-email"></span>
<span id="user-email-label" i18n-content="user-email"></span> </label>
</label> <input id="user-email-text">
<span id="user-email-text"></span>
</div>
</div> </div>
<if expr="pp_ifdef('chromeos')">
<!-- System Information --> <!-- System Information -->
<div class="feedback-fieldlabel checkbox"> <div class="checkbox">
<label> <label>
<input id="sys-info-checkbox" type="checkbox" checked> <input id="sys-info-checkbox" type="checkbox" checked>
<span id="sysinfo-label"> <span id="sysinfo-label">
...@@ -49,7 +47,7 @@ ...@@ -49,7 +47,7 @@
</if> </if>
<!-- Screenshot --> <!-- Screenshot -->
<div id="screenshot-row" hidden> <div id="screenshot-row" hidden>
<div class="feedback-fieldlabel checkbox"> <div class="checkbox">
<label> <label>
<input id="screenshot-checkbox" type="checkbox"> <input id="screenshot-checkbox" type="checkbox">
<span id="screenshot-label-current" <span id="screenshot-label-current"
...@@ -59,7 +57,7 @@ ...@@ -59,7 +57,7 @@
i18n-content="saved-screenshot" hidden></span> i18n-content="saved-screenshot" hidden></span>
</label> </label>
<a id="screenshot-link-tosaved" href="#" <a id="screenshot-link-tosaved" href="#"
i18n-content="choose-different-screenshot"> i18n-content="choose-different-screenshot" hidden>
</a> </a>
<a id="screenshot-link-tocurrent" href="#" <a id="screenshot-link-tocurrent" href="#"
i18n-content="choose-original-screenshot" hidden> i18n-content="choose-original-screenshot" hidden>
......
...@@ -101,19 +101,19 @@ function sendReport() { ...@@ -101,19 +101,19 @@ function sendReport() {
var pageUrl = $('page-url-text').value; var pageUrl = $('page-url-text').value;
if (!$('page-url-checkbox').checked) if (!$('page-url-checkbox').checked)
pageUrl = ''; pageUrl = '';
var userEmail = $('user-email-text').value;
if (!$('user-email-checkbox').checked)
userEmail = '';
var reportArray = [pageUrl, var reportArray = [pageUrl,
categoryTag, categoryTag,
$('description-text').value, $('description-text').value,
userEmail,
imagePath]; imagePath];
// Add chromeos data if it exists. // Add chromeos data if it exists.
if ($('user-email-text') && $('sys-info-checkbox')) { if ($('sys-info-checkbox')) {
var userEmail = $('user-email-text').textContent; reportArray = reportArray.concat([String($('sys-info-checkbox').checked)]);
if (!$('user-email-checkbox').checked)
userEmail = '';
reportArray = reportArray.concat([userEmail,
String($('sys-info-checkbox').checked)]);
} }
// open the landing page in a new tab, sendReport will close this one. // open the landing page in a new tab, sendReport will close this one.
...@@ -282,23 +282,15 @@ function setupDialogDefaults(defaults) { ...@@ -282,23 +282,15 @@ function setupDialogDefaults(defaults) {
$('page-url-text').value = defaults.currentUrl; $('page-url-text').value = defaults.currentUrl;
if (defaults.currentUrl == '') if (defaults.currentUrl == '')
$('page-url-checkbox').checked = false; $('page-url-checkbox').checked = false;
// User e-mail.
$('user-email-text').value = defaults.userEmail;
// Are screenshots disabled? // Are screenshots disabled?
if (!defaults.disableScreenshots) if (!defaults.disableScreenshots)
enableScreenshots(); enableScreenshots();
// User e-mail. if (defaults.useSaved) {
if ($('user-email-text')) { $('screenshot-link-tosaved').hidden = false;
// We're in Chromium OS.
$('user-email-text').textContent = defaults.userEmail;
if (defaults.userEmail == '') {
// if we didn't get an e-mail address from cros,
// disable the user email display totally.
$('user-email-table').hidden = true;
// this also means we are in privacy mode, so no saved screenshots.
$('screenshot-link-tosaved').hidden = true;
}
} }
} }
......
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
#include "chrome/browser/feedback/feedback_util.h" #include "chrome/browser/feedback/feedback_util.h"
#include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/signin/signin_manager.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_tabstrip.h"
...@@ -114,6 +117,20 @@ std::string GetUserEmail() { ...@@ -114,6 +117,20 @@ std::string GetUserEmail() {
return manager->GetLoggedInUser().display_email(); return manager->GetLoggedInUser().display_email();
} }
#else
std::string GetUserEmail() {
Profile* profile = ProfileManager::GetLastUsedProfile();
if (!profile)
return std::string();
SigninManager* signin = SigninManagerFactory::GetForProfile(profile);
if (!signin)
return std::string();
return signin->GetAuthenticatedUsername();
}
#endif // OS_CHROMEOS #endif // OS_CHROMEOS
// Returns the index of the feedback tab if already open, -1 otherwise // Returns the index of the feedback tab if already open, -1 otherwise
...@@ -252,8 +269,9 @@ ChromeWebUIDataSource* CreateFeedbackUIHTMLSource(bool successful_init) { ...@@ -252,8 +269,9 @@ ChromeWebUIDataSource* CreateFeedbackUIHTMLSource(bool successful_init) {
IDS_FEEDBACK_SCREENSHOT_LABEL); IDS_FEEDBACK_SCREENSHOT_LABEL);
source->AddLocalizedString("saved-screenshot", source->AddLocalizedString("saved-screenshot",
IDS_FEEDBACK_SAVED_SCREENSHOT_LABEL); IDS_FEEDBACK_SAVED_SCREENSHOT_LABEL);
#if defined(OS_CHROMEOS)
source->AddLocalizedString("user-email", IDS_FEEDBACK_USER_EMAIL_LABEL); source->AddLocalizedString("user-email", IDS_FEEDBACK_USER_EMAIL_LABEL);
#if defined(OS_CHROMEOS)
source->AddLocalizedString("sysinfo", source->AddLocalizedString("sysinfo",
IDS_FEEDBACK_INCLUDE_SYSTEM_INFORMATION_CHKBOX); IDS_FEEDBACK_INCLUDE_SYSTEM_INFORMATION_CHKBOX);
source->AddLocalizedString("currentscreenshots", source->AddLocalizedString("currentscreenshots",
...@@ -453,6 +471,10 @@ void FeedbackHandler::HandleGetDialogDefaults(const ListValue*) { ...@@ -453,6 +471,10 @@ void FeedbackHandler::HandleGetDialogDefaults(const ListValue*) {
"disableScreenshots", "disableScreenshots",
g_browser_process->local_state()->GetBoolean(prefs::kDisableScreenshots)); g_browser_process->local_state()->GetBoolean(prefs::kDisableScreenshots));
// User e-mail
std::string user_email = GetUserEmail();
dialog_defaults.SetString("userEmail", user_email);
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
// Trigger the request for system information here. // Trigger the request for system information here.
chromeos::system::SyslogsProvider* provider = chromeos::system::SyslogsProvider* provider =
...@@ -465,8 +487,10 @@ void FeedbackHandler::HandleGetDialogDefaults(const ListValue*) { ...@@ -465,8 +487,10 @@ void FeedbackHandler::HandleGetDialogDefaults(const ListValue*) {
base::Bind(&FeedbackData::SyslogsComplete, base::Bind(&FeedbackData::SyslogsComplete,
base::Unretained(feedback_data_))); base::Unretained(feedback_data_)));
} }
// User e-mail
dialog_defaults.SetString("userEmail", GetUserEmail()); // On ChromeOS if the user's email is blank, it means we don't
// have a logged in user, hence don't use saved screenshots.
dialog_defaults.SetBoolean("useSaved", !user_email.empty());
#endif #endif
web_ui()->CallJavascriptFunction("setupDialogDefaults", dialog_defaults); web_ui()->CallJavascriptFunction("setupDialogDefaults", dialog_defaults);
...@@ -508,7 +532,7 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) { ...@@ -508,7 +532,7 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) {
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
if (list_value->GetSize() != 6) { if (list_value->GetSize() != 6) {
#else #else
if (list_value->GetSize() != 4) { if (list_value->GetSize() != 5) {
#endif #endif
LOG(ERROR) << "Feedback data corrupt! Feedback not sent."; LOG(ERROR) << "Feedback data corrupt! Feedback not sent.";
return; return;
...@@ -521,6 +545,8 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) { ...@@ -521,6 +545,8 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) {
(*i++)->GetAsString(&category_tag); (*i++)->GetAsString(&category_tag);
std::string description; std::string description;
(*i++)->GetAsString(&description); (*i++)->GetAsString(&description);
std::string user_email;
(*i++)->GetAsString(&user_email);
std::string screenshot_path; std::string screenshot_path;
(*i++)->GetAsString(&screenshot_path); (*i++)->GetAsString(&screenshot_path);
screenshot_path.erase(0, strlen(kScreenshotBaseUrl)); screenshot_path.erase(0, strlen(kScreenshotBaseUrl));
...@@ -531,8 +557,6 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) { ...@@ -531,8 +557,6 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) {
image_ptr = screenshot_source_->GetCachedScreenshot(screenshot_path); image_ptr = screenshot_source_->GetCachedScreenshot(screenshot_path);
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
std::string user_email;
(*i++)->GetAsString(&user_email);
std::string sys_info_checkbox; std::string sys_info_checkbox;
(*i++)->GetAsString(&sys_info_checkbox); (*i++)->GetAsString(&sys_info_checkbox);
bool send_sys_info = (sys_info_checkbox == "true"); bool send_sys_info = (sys_info_checkbox == "true");
...@@ -548,9 +572,9 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) { ...@@ -548,9 +572,9 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) {
, std::string() , std::string()
, page_url , page_url
, description , description
, user_email
, image_ptr , image_ptr
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
, user_email
, send_sys_info , send_sys_info
, false // sent_report , false // sent_report
, timestamp_ , timestamp_
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment