OLD | NEW |
---|---|
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "android_webview/common/crash_reporter/crash_keys.h" | 5 #include "android_webview/common/crash_reporter/crash_keys.h" |
6 | 6 |
7 #include "base/debug/crash_logging.h" | 7 #include "base/debug/crash_logging.h" |
8 #include "base/format_macros.h" | |
9 #include "base/strings/string_util.h" | |
8 #include "components/crash/core/common/crash_keys.h" | 10 #include "components/crash/core/common/crash_keys.h" |
9 | 11 |
10 using namespace crash_keys; | 12 using namespace crash_keys; |
11 | 13 |
12 namespace android_webview { | 14 namespace android_webview { |
13 namespace crash_keys { | 15 namespace crash_keys { |
14 | 16 |
17 const char kActiveURL[] = "url-chunk"; | |
18 | |
19 const char kFontKeyName[] = "font_key_name"; | |
20 | |
21 const size_t kExtensionIDMaxCount = 10; | |
22 const char kExtensionID[] = "extension-%" PRIuS; | |
23 const char kNumExtensionsCount[] = "num-extensions"; | |
24 | |
25 const char kShutdownType[] = "shutdown-type"; | |
26 const char kBrowserUnpinTrace[] = "browser-unpin-trace"; | |
27 | |
15 const char kGPUDriverVersion[] = "gpu-driver"; | 28 const char kGPUDriverVersion[] = "gpu-driver"; |
16 const char kGPUPixelShaderVersion[] = "gpu-psver"; | 29 const char kGPUPixelShaderVersion[] = "gpu-psver"; |
17 const char kGPUVertexShaderVersion[] = "gpu-vsver"; | 30 const char kGPUVertexShaderVersion[] = "gpu-vsver"; |
18 const char kGPUVendor[] = "gpu-gl-vendor"; | 31 const char kGPUVendor[] = "gpu-gl-vendor"; |
19 const char kGPURenderer[] = "gpu-gl-renderer"; | 32 const char kGPURenderer[] = "gpu-gl-renderer"; |
20 | 33 |
34 const char kInputEventFilterSendFailure[] = "input-event-filter-send-failure"; | |
35 | |
36 const char kPrinterInfo[] = "prn-info-%" PRIuS; | |
37 | |
38 const char kViewCount[] = "view-count"; | |
39 | |
40 const char kZeroEncodeDetails[] = "zero-encode-details"; | |
41 | |
21 size_t RegisterWebViewCrashKeys() { | 42 size_t RegisterWebViewCrashKeys() { |
43 // TODO these are never used? | |
44 // Register the printer info. | |
45 //{ | |
46 // static char formatted_keys[kPrinterInfoCount][sizeof(kPrinterInfo) + 1] = | |
47 // {{ 0 }}; | |
48 // const size_t formatted_key_len = sizeof(formatted_keys[0]); | |
49 // for (size_t i = 0; i < kPrinterInfoCount; ++i) { | |
50 // // Key names are 1-indexed. | |
51 // int n = base::snprintf( | |
52 // formatted_keys[i], formatted_key_len, kPrinterInfo, i + 1); | |
53 // DCHECK_GT(n, 0); | |
54 // base::debug::CrashKey crash_key = { formatted_keys[i], kSmallSize }; | |
55 // keys.push_back(crash_key); | |
56 // } | |
57 //} | |
58 std::vector<base::debug::CrashKey> keys = GetWebViewCrashKeysToRegister(); | |
59 return base::debug::InitCrashKeys(&keys.at(0), keys.size(), kChunkMaxLength); | |
60 } | |
61 | |
62 std::vector<base::debug::CrashKey> GetWebViewCrashKeysToRegister() { | |
22 base::debug::CrashKey fixed_keys[] = { | 63 base::debug::CrashKey fixed_keys[] = { |
23 { kGPUDriverVersion, kSmallSize }, | 64 {"AW_WHITELISTED_DEBUG_KEY", kSmallSize}, |
24 { kGPUPixelShaderVersion, kSmallSize }, | 65 {"AW_NONWHITELISTED_DEBUG_KEY", kSmallSize}, |
25 { kGPUVertexShaderVersion, kSmallSize }, | 66 {kClientId, kSmallSize}, |
26 { kGPUVendor, kSmallSize }, | 67 {kChannel, kSmallSize}, |
27 { kGPURenderer, kSmallSize }, | 68 {kActiveURL, kLargeSize}, |
69 {kNumVariations, kSmallSize}, | |
70 {kVariations, kHugeSize}, | |
71 {kNumExtensionsCount, kSmallSize}, | |
72 {kShutdownType, kSmallSize}, | |
73 {kBrowserUnpinTrace, kMediumSize}, | |
74 {kGPUDriverVersion, kSmallSize}, | |
75 {kGPUPixelShaderVersion, kSmallSize}, | |
76 {kGPUVertexShaderVersion, kSmallSize}, | |
77 {kGPUVendor, kSmallSize}, | |
78 {kGPURenderer, kSmallSize}, | |
28 | 79 |
29 // content/: | 80 // content/: |
30 { "bad_message_reason", kSmallSize }, | 81 {"bad_message_reason", kSmallSize}, |
31 { "discardable-memory-allocated", kSmallSize }, | 82 {"discardable-memory-allocated", kSmallSize}, |
32 { "discardable-memory-free", kSmallSize }, | 83 {"discardable-memory-free", kSmallSize}, |
33 { "mojo-message-error", kMediumSize }, | 84 {kFontKeyName, kSmallSize}, |
34 { "total-discardable-memory-allocated", kSmallSize }, | 85 {"mojo-message-error", kMediumSize}, |
86 {"ppapi_path", kMediumSize}, | |
87 {"subresource_url", kLargeSize}, | |
88 {"total-discardable-memory-allocated", kSmallSize}, | |
89 {kInputEventFilterSendFailure, kSmallSize}, | |
90 {kBug464926CrashKey, kSmallSize}, | |
91 {kViewCount, kSmallSize}, | |
92 | |
93 // media/: | |
94 {kZeroEncodeDetails, kSmallSize}, | |
95 | |
96 // gin/: | |
97 {"v8-ignition", kSmallSize}, | |
98 | |
99 // sandbox/: | |
100 {"seccomp-sigsys", kMediumSize}, | |
101 | |
102 // Temporary for http://crbug.com/575245. | |
103 {"swapout_frame_id", kSmallSize}, | |
104 {"swapout_proxy_id", kSmallSize}, | |
105 {"swapout_view_id", kSmallSize}, | |
106 {"commit_frame_id", kSmallSize}, | |
107 {"commit_proxy_id", kSmallSize}, | |
108 {"commit_view_id", kSmallSize}, | |
109 {"commit_main_render_frame_id", kSmallSize}, | |
110 {"newproxy_proxy_id", kSmallSize}, | |
111 {"newproxy_view_id", kSmallSize}, | |
112 {"newproxy_opener_id", kSmallSize}, | |
113 {"newproxy_parent_id", kSmallSize}, | |
114 {"rvinit_view_id", kSmallSize}, | |
115 {"rvinit_proxy_id", kSmallSize}, | |
116 {"rvinit_main_frame_id", kSmallSize}, | |
117 {"initrf_frame_id", kSmallSize}, | |
118 {"initrf_proxy_id", kSmallSize}, | |
119 {"initrf_view_id", kSmallSize}, | |
120 {"initrf_main_frame_id", kSmallSize}, | |
121 {"initrf_view_is_live", kSmallSize}, | |
122 | |
123 // Temporary for https://crbug.com/591478. | |
124 {"initrf_parent_proxy_exists", kSmallSize}, | |
125 {"initrf_render_view_is_live", kSmallSize}, | |
126 {"initrf_parent_is_in_same_site_instance", kSmallSize}, | |
127 {"initrf_parent_process_is_live", kSmallSize}, | |
128 {"initrf_root_is_in_same_site_instance", kSmallSize}, | |
129 {"initrf_root_is_in_same_site_instance_as_parent", kSmallSize}, | |
130 {"initrf_root_process_is_live", kSmallSize}, | |
131 {"initrf_root_proxy_is_live", kSmallSize}, | |
132 | |
133 // Temporary for https://crbug.com/626802. | |
134 {"newframe_routing_id", kSmallSize}, | |
135 {"newframe_proxy_id", kSmallSize}, | |
136 {"newframe_opener_id", kSmallSize}, | |
137 {"newframe_parent_id", kSmallSize}, | |
138 {"newframe_widget_id", kSmallSize}, | |
139 {"newframe_widget_hidden", kSmallSize}, | |
140 {"newframe_replicated_origin", kSmallSize}, | |
141 {"newframe_oopifs_possible", kSmallSize}, | |
142 | |
143 // Temporary for https://crbug.com/630103. | |
144 {"origin_mismatch_url", kLargeSize}, | |
145 {"origin_mismatch_origin", kMediumSize}, | |
146 {"origin_mismatch_transition", kSmallSize}, | |
147 {"origin_mismatch_redirects", kSmallSize}, | |
148 {"origin_mismatch_same_page", kSmallSize}, | |
149 | |
150 // Temporary for https://crbug.com/612711. | |
151 {"aci_wrong_sp_extension_id", kSmallSize}, | |
152 | |
153 // Temporary for https://crbug.com/668633. | |
154 {"swdh_set_hosted_version_worker_pid", kSmallSize}, | |
155 {"swdh_set_hosted_version_host_pid", kSmallSize}, | |
156 {"swdh_set_hosted_version_is_new_process", kSmallSize}, | |
157 {"swdh_set_hosted_version_restart_count", kSmallSize}, | |
35 }; | 158 }; |
36 | 159 |
160 // This dynamic set of keys is used for sets of key value pairs when gathering | |
161 // a collection of data, like command line switches or extension IDs. | |
37 std::vector<base::debug::CrashKey> keys(fixed_keys, | 162 std::vector<base::debug::CrashKey> keys(fixed_keys, |
38 fixed_keys + arraysize(fixed_keys)); | 163 fixed_keys + arraysize(fixed_keys)); |
39 | 164 |
40 return base::debug::InitCrashKeys(&keys.at(0), keys.size(), kChunkMaxLength); | 165 GetCrashKeysForCommandLineSwitches(&keys); |
166 | |
167 // Register the extension IDs. | |
Robert Sesek
2017/03/02 15:00:38
Why extensions? Isn't that a //chrome-level concep
gsennton
2017/03/02 16:18:01
Removed now (also removed the printer-id stuff sin
| |
168 { | |
169 static char formatted_keys[kExtensionIDMaxCount][sizeof(kExtensionID) + 1] = | |
170 {{0}}; | |
171 const size_t formatted_key_len = sizeof(formatted_keys[0]); | |
172 for (size_t i = 0; i < kExtensionIDMaxCount; ++i) { | |
173 int n = base::snprintf(formatted_keys[i], formatted_key_len, kExtensionID, | |
174 i + 1); | |
175 DCHECK_GT(n, 0); | |
176 base::debug::CrashKey crash_key = {formatted_keys[i], kSmallSize}; | |
177 keys.push_back(crash_key); | |
178 } | |
179 } | |
180 return keys; | |
181 } | |
182 | |
183 std::vector<const char*> GetWhiteListedWebViewCrashKeys() { | |
184 return std::vector<const char*>{ | |
185 "AW_WHITELISTED_DEBUG_KEY", kGPUDriverVersion, kGPUPixelShaderVersion, | |
186 kGPUVertexShaderVersion, kGPUVendor, kGPURenderer, | |
187 | |
188 // content/: | |
189 "bad_message_reason", "discardable-memory-allocated", | |
190 "discardable-memory-free", "mojo-message-error-1", "mojo-message-error-2", | |
191 "mojo-message-error-3", "mojo-message-error-4", | |
192 "total-discardable-memory-allocated", | |
193 }; | |
41 } | 194 } |
42 } | 195 } |
43 | 196 |
44 } // namespace crash_keys | 197 } // namespace crash_keys |
OLD | NEW |