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

Side by Side Diff: chrome/browser/bug_report_util.cc

Issue 8375039: Create a content::UrlFetcher interface that lives in content/public/common and convert users to i... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: review comments Created 9 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "chrome/browser/bug_report_util.h" 5 #include "chrome/browser/bug_report_util.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 81
82 82
83 // Simple content::URLFetcherDelegate to clean up URLFetcher on completion. 83 // Simple content::URLFetcherDelegate to clean up URLFetcher on completion.
84 class BugReportUtil::PostCleanup : public content::URLFetcherDelegate { 84 class BugReportUtil::PostCleanup : public content::URLFetcherDelegate {
85 public: 85 public:
86 PostCleanup(Profile* profile, std::string* post_body, 86 PostCleanup(Profile* profile, std::string* post_body,
87 int64 previous_delay) : profile_(profile), 87 int64 previous_delay) : profile_(profile),
88 post_body_(post_body), 88 post_body_(post_body),
89 previous_delay_(previous_delay) { } 89 previous_delay_(previous_delay) { }
90 // Overridden from content::URLFetcherDelegate. 90 // Overridden from content::URLFetcherDelegate.
91 virtual void OnURLFetchComplete(const URLFetcher* source); 91 virtual void OnURLFetchComplete(const content::URLFetcher* source);
92 92
93 protected: 93 protected:
94 virtual ~PostCleanup() {} 94 virtual ~PostCleanup() {}
95 95
96 private: 96 private:
97 Profile* profile_; 97 Profile* profile_;
98 std::string* post_body_; 98 std::string* post_body_;
99 int64 previous_delay_; 99 int64 previous_delay_;
100 100
101 DISALLOW_COPY_AND_ASSIGN(PostCleanup); 101 DISALLOW_COPY_AND_ASSIGN(PostCleanup);
102 }; 102 };
103 103
104 // Don't use the data parameter, instead use the pointer we pass into every 104 // Don't use the data parameter, instead use the pointer we pass into every
105 // post cleanup object - that pointer will be deleted and deleted only on a 105 // post cleanup object - that pointer will be deleted and deleted only on a
106 // successful post to the feedback server. 106 // successful post to the feedback server.
107 void BugReportUtil::PostCleanup::OnURLFetchComplete(const URLFetcher* source) { 107 void BugReportUtil::PostCleanup::OnURLFetchComplete(
108 108 const content::URLFetcher* source) {
109 std::stringstream error_stream; 109 std::stringstream error_stream;
110 int response_code = source->response_code(); 110 int response_code = source->GetResponseCode();
111 if (response_code == kHttpPostSuccessNoContent) { 111 if (response_code == kHttpPostSuccessNoContent) {
112 // We've sent our report, delete the report data 112 // We've sent our report, delete the report data
113 delete post_body_; 113 delete post_body_;
114 114
115 error_stream << "Success"; 115 error_stream << "Success";
116 } else { 116 } else {
117 // Uh oh, feedback failed, send it off to retry 117 // Uh oh, feedback failed, send it off to retry
118 if (previous_delay_) { 118 if (previous_delay_) {
119 if (previous_delay_ < kRetryDelayLimit) 119 if (previous_delay_ < kRetryDelayLimit)
120 previous_delay_ *= kRetryDelayIncreaseFactor; 120 previous_delay_ *= kRetryDelayIncreaseFactor;
121 } else { 121 } else {
122 previous_delay_ = kInitialRetryDelay; 122 previous_delay_ = kInitialRetryDelay;
123 } 123 }
124 BugReportUtil::DispatchFeedback(profile_, post_body_, previous_delay_); 124 BugReportUtil::DispatchFeedback(profile_, post_body_, previous_delay_);
125 125
126 // Process the error for debug output 126 // Process the error for debug output
127 if (response_code == kHttpPostFailNoConnection) { 127 if (response_code == kHttpPostFailNoConnection) {
128 error_stream << "No connection to server."; 128 error_stream << "No connection to server.";
129 } else if ((response_code > kHttpPostFailClientError) && 129 } else if ((response_code > kHttpPostFailClientError) &&
130 (response_code < kHttpPostFailServerError)) { 130 (response_code < kHttpPostFailServerError)) {
131 error_stream << "Client error: HTTP response code " << response_code; 131 error_stream << "Client error: HTTP response code " << response_code;
132 } else if (response_code > kHttpPostFailServerError) { 132 } else if (response_code > kHttpPostFailServerError) {
133 error_stream << "Server error: HTTP response code " << response_code; 133 error_stream << "Server error: HTTP response code " << response_code;
134 } else { 134 } else {
135 error_stream << "Unknown error: HTTP response code " << response_code; 135 error_stream << "Unknown error: HTTP response code " << response_code;
136 } 136 }
137 } 137 }
138 138
139 LOG(WARNING) << "FEEDBACK: Submission to feedback server (" << source->url() 139 LOG(WARNING) << "FEEDBACK: Submission to feedback server (" <<
140 << ") status: " << error_stream.str(); 140 source->GetUrl() << ") status: " << error_stream.str();
141 141
142 // Delete the URLFetcher. 142 // Delete the URLFetcher.
143 delete source; 143 delete source;
144 // And then delete ourselves. 144 // And then delete ourselves.
145 delete this; 145 delete this;
146 } 146 }
147 147
148 // static 148 // static
149 void BugReportUtil::SetOSVersion(std::string* os_version) { 149 void BugReportUtil::SetOSVersion(std::string* os_version) {
150 #if defined(OS_WIN) 150 #if defined(OS_WIN)
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 HasSwitch(switches::kFeedbackServer)) 185 HasSwitch(switches::kFeedbackServer))
186 post_url = GURL(CommandLine::ForCurrentProcess()-> 186 post_url = GURL(CommandLine::ForCurrentProcess()->
187 GetSwitchValueASCII(switches::kFeedbackServer)); 187 GetSwitchValueASCII(switches::kFeedbackServer));
188 else 188 else
189 post_url = GURL(kBugReportPostUrl); 189 post_url = GURL(kBugReportPostUrl);
190 190
191 URLFetcher* fetcher = new URLFetcher(post_url, URLFetcher::POST, 191 URLFetcher* fetcher = new URLFetcher(post_url, URLFetcher::POST,
192 new BugReportUtil::PostCleanup(profile, 192 new BugReportUtil::PostCleanup(profile,
193 post_body, 193 post_body,
194 previous_delay)); 194 previous_delay));
195 fetcher->set_request_context(profile->GetRequestContext()); 195 fetcher->SetRequestContext(profile->GetRequestContext());
196 196
197 fetcher->set_upload_data(std::string(kProtBufMimeType), *post_body); 197 fetcher->SetUploadData(std::string(kProtBufMimeType), *post_body);
198 fetcher->Start(); 198 fetcher->Start();
199 } 199 }
200 200
201 201
202 // static 202 // static
203 void BugReportUtil::AddFeedbackData( 203 void BugReportUtil::AddFeedbackData(
204 userfeedback::ExternalExtensionSubmit* feedback_data, 204 userfeedback::ExternalExtensionSubmit* feedback_data,
205 const std::string& key, const std::string& value) { 205 const std::string& key, const std::string& value) {
206 // Don't bother with empty keys or values 206 // Don't bother with empty keys or values
207 if (key=="" || value == "") return; 207 if (key=="" || value == "") return;
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 if (screenshot_size == NULL) 394 if (screenshot_size == NULL)
395 screenshot_size = new gfx::Rect(); 395 screenshot_size = new gfx::Rect();
396 return *screenshot_size; 396 return *screenshot_size;
397 } 397 }
398 398
399 // static 399 // static
400 void BugReportUtil::SetScreenshotSize(const gfx::Rect& rect) { 400 void BugReportUtil::SetScreenshotSize(const gfx::Rect& rect) {
401 gfx::Rect& screen_size = GetScreenshotSize(); 401 gfx::Rect& screen_size = GetScreenshotSize();
402 screen_size = rect; 402 screen_size = rect;
403 } 403 }
OLDNEW
« no previous file with comments | « chrome/browser/autofill/autofill_download_unittest.cc ('k') | chrome/browser/chromeos/customization_document.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698