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

Unified Diff: chrome/browser/ui/webui/feedback_ui.cc

Issue 9104030: Include a timestamp with and add a keyboard shortcut for Feedback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 11 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/feedback_ui.cc
diff --git a/chrome/browser/ui/webui/feedback_ui.cc b/chrome/browser/ui/webui/feedback_ui.cc
index 3df6669fa07add079f54ddfb1e12fe66adbda333..44aae9ea67f6fdafb962a0c0f13e7e0fbadcb444 100644
--- a/chrome/browser/ui/webui/feedback_ui.cc
+++ b/chrome/browser/ui/webui/feedback_ui.cc
@@ -12,7 +12,9 @@
#include "base/memory/weak_ptr.h"
#include "base/message_loop.h"
#include "base/string_number_conversions.h"
+#include "base/string_util.h"
#include "base/utf_string_conversions.h"
+#include "base/time.h"
#include "base/values.h"
#include "chrome/browser/feedback/feedback_data.h"
#include "chrome/browser/feedback/feedback_util.h"
@@ -56,10 +58,16 @@ namespace {
const char kScreenshotBaseUrl[] = "chrome://screenshots/";
const char kCurrentScreenshotUrl[] = "chrome://screenshots/current";
+
+const char kCategoryTagParameter[] = "categoryTag=";
+const char kDescriptionParameter[] = "description=";
+
#if defined(OS_CHROMEOS)
const char kSavedScreenshotsUrl[] = "chrome://screenshots/saved/";
const char kScreenshotPattern[] = "screenshot-*.png";
+const char kTimestampParameter[] = "timestamp=";
+
const size_t kMaxSavedScreenshots = 2;
#endif
@@ -130,6 +138,13 @@ namespace browser {
void ShowHtmlFeedbackView(Browser* browser,
const std::string& description_template,
const std::string& category_tag) {
+#if defined(OS_CHROMEOS)
+ // Grab the timestamp before we do anything else - this is crucial to help
+ // diagnose some hardware issues.
+ base::Time now = base::Time::Now();
+ std::string timestamp = base::DoubleToString(now.ToDoubleT());
zel 2012/01/31 16:38:03 format this to string where you really need the st
rkc 2012/01/31 18:16:45 Same reason as given in the other comment.
+#endif
+
// First check if we're already open (we cannot depend on ShowSingletonTab
// for this functionality since we need to make *sure* we never get
// instantiated again while we are open - with singleton tabs, that can
@@ -153,9 +168,15 @@ void ShowHtmlFeedbackView(Browser* browser,
FeedbackUtil::SetScreenshotSize(success ? snapshot_bounds : gfx::Rect());
std::string feedback_url = std::string(chrome::kChromeUIFeedbackURL) +
- "#" + base::IntToString(browser->active_index()) +
- "?description=" + net::EscapeUrlEncodedData(description_template, false) +
- "&categoryTag=" + net::EscapeUrlEncodedData(category_tag, false);
+ "#" + base::IntToString(browser->active_index()) + "?" +
+ kDescriptionParameter +
+ net::EscapeUrlEncodedData(description_template, false) + "&" +
+ kCategoryTagParameter + net::EscapeUrlEncodedData(category_tag, false);
+
+#if defined(OS_CHROMEOS)
+ feedback_url = feedback_url + "&" + kTimestampParameter +
+ net::EscapeUrlEncodedData(timestamp, false);
+#endif
browser->ShowSingletonTab(GURL(feedback_url));
}
@@ -199,6 +220,9 @@ class FeedbackHandler : public WebUIMessageHandler,
// Variables to track SyslogsProvider::RequestSyslogs callback.
chromeos::system::SyslogsProvider::Handle syslogs_handle_;
CancelableRequestConsumer syslogs_consumer_;
+
+ // Timestamp of when the feedback request was initiated
+ std::string timestamp_;
#endif
DISALLOW_COPY_AND_ASSIGN(FeedbackHandler);
@@ -304,22 +328,38 @@ bool FeedbackHandler::Init() {
page_url = tab_->GetController().GetActiveEntry()->GetURL().spec();
}
- std::string params = page_url.substr(strlen(chrome::kChromeUIFeedbackURL));
- // Erase the # - the first character.
- if (params.length())
- params.erase(params.begin(), params.begin() + 1);
+ url_parse::Parsed parts;
+ ParseStandardURL(page_url.c_str(), page_url.length(), &parts);
- size_t additional_params_pos = params.find('?');
- if (additional_params_pos != std::string::npos)
- params.erase(params.begin() + additional_params_pos, params.end());
+ size_t params_start = page_url.find("?");
+ std::string index_str = page_url.substr(parts.ref.begin,
+ params_start - parts.ref.begin);
+ std::string query = page_url.substr(params_start + 1);
int index = 0;
- if (!base::StringToInt(params, &index))
+ if (!base::StringToInt(index_str, &index))
return false;
+#if defined(OS_CHROMEOS)
+ std::vector<std::string> params;
+ if (Tokenize(query, std::string("&"), &params)) {
+ for (std::vector<std::string>::iterator it = params.begin();
+ it != params.end(); ++it) {
+ if (StartsWithASCII(*it, std::string(kTimestampParameter), true)) {
+ timestamp_ = *it;
+ ReplaceFirstSubstringAfterOffset(&timestamp_,
+ 0,
+ kTimestampParameter,
+ "");
+ break;
+ }
+ }
+ }
+#endif
+
Browser* browser = BrowserList::GetLastActive();
// Sanity checks.
- if (((index == 0) && (params != "0")) || !browser ||
+ if (((index == 0) && (index_str != "0")) || !browser ||
index >= browser->tab_count()) {
return false;
}
@@ -469,6 +509,7 @@ void FeedbackHandler::HandleSendReport(const ListValue* list_value) {
, user_email
, send_sys_info
, false // sent_report
+ , timestamp_
#endif
);
« chrome/browser/feedback/feedback_data.h ('K') | « chrome/browser/ui/views/accelerator_table.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698