blob: 6fdca6be255ff4aab6abaeb719ba5c6b7f659d4f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
// Copyright 2014 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.
#include "components/feedback/feedback_uploader_delegate.h"
#include <sstream>
#include "base/logging.h"
#include "net/url_request/url_fetcher.h"
namespace feedback {
namespace {
const int kHttpPostSuccessNoContent = 204;
const int kHttpPostFailNoConnection = -1;
const int kHttpPostFailClientError = 400;
const int kHttpPostFailServerError = 500;
} // namespace
FeedbackUploaderDelegate::FeedbackUploaderDelegate(
const std::string& post_body,
const base::Closure& success_callback,
const ReportDataCallback& error_callback)
: post_body_(post_body),
success_callback_(success_callback),
error_callback_(error_callback) {
}
FeedbackUploaderDelegate::~FeedbackUploaderDelegate() {}
void FeedbackUploaderDelegate::OnURLFetchComplete(
const net::URLFetcher* source) {
scoped_ptr<const net::URLFetcher> source_scoper(source);
std::stringstream error_stream;
int response_code = source->GetResponseCode();
if (response_code == kHttpPostSuccessNoContent) {
error_stream << "Success";
success_callback_.Run();
} else {
// Process the error for debug output
if (response_code == kHttpPostFailNoConnection) {
error_stream << "No connection to server.";
} else if ((response_code > kHttpPostFailClientError) &&
(response_code < kHttpPostFailServerError)) {
error_stream << "Client error: HTTP response code " << response_code;
} else if (response_code > kHttpPostFailServerError) {
error_stream << "Server error: HTTP response code " << response_code;
} else {
error_stream << "Unknown error: HTTP response code " << response_code;
}
error_callback_.Run(post_body_);
}
LOG(WARNING) << "FEEDBACK: Submission to feedback server ("
<< source->GetURL() << ") status: " << error_stream.str();
// This instance won't be used for anything else, delete us.
delete this;
}
} // namespace feedback
|