Remove now obsolete checkdeps copy
[chromium-blink-merge.git] / components / feedback / feedback_data.h
blob68821d9d3d875eae9fe50025aa356627d2e92833
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_FEEDBACK_FEEDBACK_DATA_H_
6 #define COMPONENTS_FEEDBACK_FEEDBACK_DATA_H_
8 #include <map>
9 #include <string>
10 #include <vector>
12 #include "base/memory/ref_counted.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "url/gurl.h"
16 namespace base {
17 class FilePath;
18 class RefCountedString;
20 namespace content {
21 class BrowserContext;
24 namespace feedback {
26 class FeedbackData : public base::RefCountedThreadSafe<FeedbackData> {
27 public:
28 typedef std::map<std::string, std::string> SystemLogsMap;
30 // Determine if the given feedback value is small enough to not need to
31 // be compressed.
32 static bool BelowCompressionThreshold(const std::string& content);
34 FeedbackData();
36 // Called once we've updated all the data from the feedback page.
37 void OnFeedbackPageDataComplete();
39 // Sets the system information for this instance and kicks off its
40 // compression.
41 void SetAndCompressSystemInfo(scoped_ptr<SystemLogsMap> sys_info);
43 // Sets the histograms for this instance and kicks off its
44 // compression.
45 void SetAndCompressHistograms(scoped_ptr<std::string> histograms);
47 // Sets the attached file data and kicks off its compression.
48 void AttachAndCompressFileData(scoped_ptr<std::string> attached_filedata);
50 // Called once we have compressed our system logs.
51 void OnCompressLogsComplete(scoped_ptr<std::string> compressed_logs);
53 // Called once we have compressed our histograms.
54 void OnCompressHistogramsComplete(
55 scoped_ptr<std::string> compressed_histograms);
57 // Called once we have compressed our attached file.
58 void OnCompressFileComplete(scoped_ptr<std::string> compressed_file);
60 // Returns true if we've completed all the tasks needed before we can send
61 // feedback - at this time this is includes getting the feedback page data
62 // and compressing the system logs.
63 bool IsDataComplete();
65 // Sends the feedback report if we have all our data complete.
66 void SendReport();
68 // Getters
69 content::BrowserContext* context() const { return context_; }
70 const std::string& category_tag() const { return category_tag_; }
71 const std::string& page_url() const { return page_url_; }
72 const std::string& description() const { return description_; }
73 const std::string& user_email() const { return user_email_; }
74 std::string* image() const { return image_.get(); }
75 const std::string attached_filename() const { return attached_filename_; }
76 const std::string attached_file_uuid() const { return attached_file_uuid_; }
77 std::string* attached_filedata() const { return attached_filedata_.get(); }
78 const std::string screenshot_uuid() const { return screenshot_uuid_; }
79 int trace_id() const { return trace_id_; }
80 SystemLogsMap* sys_info() const { return sys_info_.get(); }
81 std::string* compressed_logs() const { return compressed_logs_.get(); }
82 std::string* histograms() const { return histograms_.get(); }
83 std::string* compressed_histograms() const {
84 return compressed_histograms_.get();
86 std::string user_agent() const { return user_agent_; }
87 std::string locale() const { return locale_; }
89 // Setters
90 void set_context(content::BrowserContext* context) { context_ = context; }
91 void set_category_tag(const std::string& category_tag) {
92 category_tag_ = category_tag;
94 void set_page_url(const std::string& page_url) { page_url_ = page_url; }
95 void set_description(const std::string& description) {
96 description_ = description;
98 void set_user_email(const std::string& user_email) {
99 user_email_ = user_email;
101 void set_image(scoped_ptr<std::string> image) { image_ = image.Pass(); }
102 void set_attached_filename(const std::string& attached_filename) {
103 attached_filename_ = attached_filename;
105 void set_attached_file_uuid(const std::string& uuid) {
106 attached_file_uuid_ = uuid;
108 void set_screenshot_uuid(const std::string& uuid) {
109 screenshot_uuid_ = uuid;
111 void set_trace_id(int trace_id) { trace_id_ = trace_id; }
112 void set_user_agent(const std::string& user_agent) {
113 user_agent_ = user_agent;
115 void set_locale(const std::string& locale) { locale_ = locale; }
117 private:
118 friend class base::RefCountedThreadSafe<FeedbackData>;
120 virtual ~FeedbackData();
122 void OnGetTraceData(int trace_id,
123 scoped_refptr<base::RefCountedString> trace_data);
125 content::BrowserContext* context_;
127 std::string category_tag_;
128 std::string page_url_;
129 std::string description_;
130 std::string user_email_;
131 scoped_ptr<std::string> image_;
132 std::string attached_filename_;
133 scoped_ptr<std::string> attached_filedata_;
134 std::string user_agent_;
135 std::string locale_;
137 std::string attached_file_uuid_;
138 std::string screenshot_uuid_;
140 int trace_id_;
142 scoped_ptr<SystemLogsMap> sys_info_;
143 scoped_ptr<std::string> compressed_logs_;
145 scoped_ptr<std::string> histograms_;
146 scoped_ptr<std::string> compressed_histograms_;
148 // TODO(rkc): Refactor compressing logic into a simpler common implementation.
149 bool feedback_page_data_complete_;
150 bool syslogs_compression_complete_;
151 bool histograms_compression_complete_;
152 bool attached_file_compression_complete_;
153 bool report_sent_;
155 DISALLOW_COPY_AND_ASSIGN(FeedbackData);
158 } // namespace feedback
160 #endif // COMPONENTS_FEEDBACK_FEEDBACK_DATA_H_