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

Side by Side Diff: chrome/common/child_process_logging_posix.cc

Issue 23471007: Set active extension IDs for crash reports using the crash key logging system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 7 years, 3 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
« no previous file with comments | « chrome/common/child_process_logging_mac.mm ('k') | chrome/common/child_process_logging_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/common/child_process_logging.h" 5 #include "chrome/common/child_process_logging.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/format_macros.h" 8 #include "base/format_macros.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
(...skipping 11 matching lines...) Expand all
22 // We use static strings to hold the most recent active url and the client 22 // We use static strings to hold the most recent active url and the client
23 // identifier. If we crash, the crash handler code will send the contents of 23 // identifier. If we crash, the crash handler code will send the contents of
24 // these strings to the browser. 24 // these strings to the browser.
25 char g_client_id[kClientIdSize]; 25 char g_client_id[kClientIdSize];
26 26
27 char g_channel[kChannelSize] = ""; 27 char g_channel[kChannelSize] = "";
28 28
29 char g_printer_info[kPrinterInfoStrLen * kMaxReportedPrinterRecords + 1] = ""; 29 char g_printer_info[kPrinterInfoStrLen * kMaxReportedPrinterRecords + 1] = "";
30 30
31 static const size_t kNumSize = 32; 31 static const size_t kNumSize = 32;
32 char g_num_extensions[kNumSize] = "";
33 char g_num_switches[kNumSize] = ""; 32 char g_num_switches[kNumSize] = "";
34 char g_num_variations[kNumSize] = ""; 33 char g_num_variations[kNumSize] = "";
35 char g_num_views[kNumSize] = ""; 34 char g_num_views[kNumSize] = "";
36 35
37 static const size_t kMaxExtensionSize =
38 kExtensionLen * kMaxReportedActiveExtensions + 1;
39 char g_extension_ids[kMaxExtensionSize] = "";
40
41 // Assume command line switches are less than 64 chars. 36 // Assume command line switches are less than 64 chars.
42 static const size_t kMaxSwitchesSize = kSwitchLen * kMaxSwitches + 1; 37 static const size_t kMaxSwitchesSize = kSwitchLen * kMaxSwitches + 1;
43 char g_switches[kMaxSwitchesSize] = ""; 38 char g_switches[kMaxSwitchesSize] = "";
44 39
45 static const size_t kMaxVariationChunksSize = 40 static const size_t kMaxVariationChunksSize =
46 kMaxVariationChunkSize * kMaxReportedVariationChunks + 1; 41 kMaxVariationChunkSize * kMaxReportedVariationChunks + 1;
47 char g_variation_chunks[kMaxVariationChunksSize] = ""; 42 char g_variation_chunks[kMaxVariationChunksSize] = "";
48 43
49 void SetClientId(const std::string& client_id) { 44 void SetClientId(const std::string& client_id) {
50 std::string str(client_id); 45 std::string str(client_id);
51 ReplaceSubstringsAfterOffset(&str, 0, "-", std::string()); 46 ReplaceSubstringsAfterOffset(&str, 0, "-", std::string());
52 47
53 if (str.empty()) 48 if (str.empty())
54 return; 49 return;
55 50
56 base::strlcpy(g_client_id, str.c_str(), kClientIdSize); 51 base::strlcpy(g_client_id, str.c_str(), kClientIdSize);
57 std::wstring wstr = ASCIIToWide(str); 52 std::wstring wstr = ASCIIToWide(str);
58 GoogleUpdateSettings::SetMetricsId(wstr); 53 GoogleUpdateSettings::SetMetricsId(wstr);
59 } 54 }
60 55
61 std::string GetClientId() { 56 std::string GetClientId() {
62 return std::string(g_client_id); 57 return std::string(g_client_id);
63 } 58 }
64 59
65 void SetActiveExtensions(const std::set<std::string>& extension_ids) {
66 snprintf(g_num_extensions, arraysize(g_num_extensions), "%" PRIuS,
67 extension_ids.size());
68
69 std::string extension_str;
70 std::set<std::string>::const_iterator iter = extension_ids.begin();
71 for (size_t i = 0;
72 i < kMaxReportedActiveExtensions && iter != extension_ids.end();
73 ++i, ++iter) {
74 extension_str += *iter;
75 }
76 base::strlcpy(g_extension_ids, extension_str.c_str(),
77 arraysize(g_extension_ids));
78 }
79
80 void SetPrinterInfo(const char* printer_info) { 60 void SetPrinterInfo(const char* printer_info) {
81 std::string printer_info_str; 61 std::string printer_info_str;
82 std::vector<std::string> info; 62 std::vector<std::string> info;
83 base::SplitString(printer_info, L';', &info); 63 base::SplitString(printer_info, L';', &info);
84 DCHECK_LE(info.size(), kMaxReportedPrinterRecords); 64 DCHECK_LE(info.size(), kMaxReportedPrinterRecords);
85 for (size_t i = 0; i < info.size(); ++i) { 65 for (size_t i = 0; i < info.size(); ++i) {
86 printer_info_str += info[i]; 66 printer_info_str += info[i];
87 // Truncate long switches, align short ones with spaces to be trimmed later. 67 // Truncate long switches, align short ones with spaces to be trimmed later.
88 printer_info_str.resize((i + 1) * kPrinterInfoStrLen, ' '); 68 printer_info_str.resize((i + 1) * kPrinterInfoStrLen, ' ');
89 } 69 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 // simultaneously. 114 // simultaneously.
135 snprintf(g_num_variations, arraysize(g_num_variations), "%" PRIuS, 115 snprintf(g_num_variations, arraysize(g_num_variations), "%" PRIuS,
136 experiments.size()); 116 experiments.size());
137 } 117 }
138 118
139 void SetChannel(const std::string& channel) { 119 void SetChannel(const std::string& channel) {
140 base::strlcpy(g_channel, channel.c_str(), arraysize(g_channel)); 120 base::strlcpy(g_channel, channel.c_str(), arraysize(g_channel));
141 } 121 }
142 122
143 } // namespace child_process_logging 123 } // namespace child_process_logging
OLDNEW
« no previous file with comments | « chrome/common/child_process_logging_mac.mm ('k') | chrome/common/child_process_logging_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698