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

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

Issue 7562001: Add memory usage info to SyslogsProvider, and clean up bug report screenshot data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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_data.h" 5 #include "chrome/browser/bug_report_data.h"
6 6
7 #include "chrome/browser/bug_report_util.h"
8 #include "content/browser/browser_thread.h"
9
7 #if defined(OS_CHROMEOS) 10 #if defined(OS_CHROMEOS)
8 #include "chrome/browser/chromeos/notifications/system_notification.h" 11 #include "chrome/browser/chromeos/notifications/system_notification.h"
9 #endif 12 #endif
10 13
11 BugReportData::BugReportData() 14 BugReportData::BugReportData()
12 : profile_(NULL), 15 : profile_(NULL),
13 problem_type_(0) 16 problem_type_(0)
14 #if defined(OS_CHROMEOS) 17 #if defined(OS_CHROMEOS)
15 , sys_info_(NULL) 18 , sys_info_(NULL)
16 , zip_content_(NULL) 19 , zip_content_(NULL)
(...skipping 10 matching lines...) Expand all
27 const int problem_type, 30 const int problem_type,
28 const std::string& page_url, 31 const std::string& page_url,
29 const std::string& description, 32 const std::string& description,
30 const std::vector<unsigned char>& image 33 const std::vector<unsigned char>& image
31 #if defined(OS_CHROMEOS) 34 #if defined(OS_CHROMEOS)
32 , const std::string& user_email 35 , const std::string& user_email
33 , const bool send_sys_info 36 , const bool send_sys_info
34 , const bool sent_report 37 , const bool sent_report
35 #endif 38 #endif
36 ) { 39 ) {
40 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
37 profile_ = profile; 41 profile_ = profile;
38 target_tab_url_ = target_tab_url; 42 target_tab_url_ = target_tab_url;
39 problem_type_ = problem_type; 43 problem_type_ = problem_type;
40 page_url_ = page_url; 44 page_url_ = page_url;
41 description_ = description; 45 description_ = description;
42 image_ = image; 46 image_ = image;
43 #if defined(OS_CHROMEOS) 47 #if defined(OS_CHROMEOS)
44 user_email_ = user_email; 48 user_email_ = user_email;
45 send_sys_info_ = send_sys_info; 49 send_sys_info_ = send_sys_info;
46 sent_report_ = sent_report; 50 sent_report_ = sent_report;
47 #endif 51 #endif
48 } 52 }
49 53
54 void BugReportData::SendReport() {
stevenjb 2011/08/03 01:55:20 Moved from bug_report_ui.cc
55 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
56 #if defined(OS_CHROMEOS)
57 if (sent_report_)
58 return; // We already received the syslogs and sent the report.
59
60 // Set send_report_ to ensure that we only send one report.
61 sent_report_ = true;
62 #endif
63
64 int image_data_size = image_.size();
65 char* image_data = image_data_size ?
66 reinterpret_cast<char*>(&(image_.front())) : NULL;
67 gfx::Rect& screen_size = BugReportUtil::GetScreenshotSize();
68 BugReportUtil::SendReport(profile_
69 , problem_type_
70 , page_url_
71 , description_
72 , image_data
73 , image_data_size
74 , screen_size.width()
75 , screen_size.height()
76 #if defined(OS_CHROMEOS)
77 , user_email_
78 , zip_content_ ? zip_content_->c_str() : NULL
79 , zip_content_ ? zip_content_->length() : 0
80 , send_sys_info_ ? sys_info_ : NULL
81 #endif
82 );
50 83
51 #if defined(OS_CHROMEOS) 84 #if defined(OS_CHROMEOS)
52 // Called from the same thread as HandleGetDialogDefaults, i.e. the UI thread. 85 if (sys_info_) {
James Cook 2011/08/03 17:06:49 Don't need to check if pointer is non-null, just c
stevenjb 2011/08/03 19:11:39 True, but since we are also setting variables to N
86 delete sys_info_;
87 sys_info_ = NULL;
88 }
89 if (zip_content_) {
90 delete zip_content_;
91 zip_content_ = NULL;
92 }
93 #endif
94
95 // Delete this object once the report has been sent.
96 delete this;
97 }
98
99 #if defined(OS_CHROMEOS)
100 // SyslogsComplete may be called before UpdateData, in which case, we do not
101 // want to delete the logs that were gathered, and we do not want to send the
102 // report either. Instead simply populate |sys_info_| and |zip_content_|.
53 void BugReportData::SyslogsComplete(chromeos::system::LogDictionaryType* logs, 103 void BugReportData::SyslogsComplete(chromeos::system::LogDictionaryType* logs,
54 std::string* zip_content) { 104 std::string* zip_content) {
105 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
55 if (sent_report_) { 106 if (sent_report_) {
56 // We already sent the report, just delete the data. 107 // We already sent the report, just delete the data.
57 if (logs) 108 if (logs)
58 delete logs; 109 delete logs;
59 if (zip_content) 110 if (zip_content)
60 delete zip_content; 111 delete zip_content;
61 } else { 112 } else {
62 zip_content_ = zip_content; 113 zip_content_ = zip_content;
63 sys_info_ = logs; // Will get deleted when SendReport() is called. 114 sys_info_ = logs; // Will get deleted when SendReport() is called.
64 if (send_sys_info_) { 115 if (send_sys_info_) {
65 // We already prepared the report, send it now. 116 // We already prepared the report, send it now.
66 this->SendReport(); 117 this->SendReport();
67 } 118 }
68 } 119 }
69 } 120 }
70 #endif 121 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698