| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "base/trace_event/memory_infra_background_whitelist.h" | 5 #include "base/trace_event/memory_infra_background_whitelist.h" |
| 6 | 6 |
| 7 #include <ctype.h> | 7 #include <ctype.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 "Skia", | 33 "Skia", |
| 34 "Sql", | 34 "Sql", |
| 35 "URLRequestContext", | 35 "URLRequestContext", |
| 36 "V8Isolate", | 36 "V8Isolate", |
| 37 "WinHeap", | 37 "WinHeap", |
| 38 "SyncDirectory", | 38 "SyncDirectory", |
| 39 "TabRestoreServiceHelper", | 39 "TabRestoreServiceHelper", |
| 40 nullptr // End of list marker. | 40 nullptr // End of list marker. |
| 41 }; | 41 }; |
| 42 | 42 |
| 43 // The names of dump providers whitelisted for summary tracing. |
| 44 const char* const kDumpProviderSummaryWhitelist[] = { |
| 45 "Malloc", "PartitionAlloc", "ProcessMemoryMetrics", "V8Isolate", |
| 46 nullptr // End of list marker. |
| 47 }; |
| 48 |
| 43 // A list of string names that are allowed for the memory allocator dumps in | 49 // A list of string names that are allowed for the memory allocator dumps in |
| 44 // background mode. | 50 // background mode. |
| 45 const char* const kAllocatorDumpNameWhitelist[] = { | 51 const char* const kAllocatorDumpNameWhitelist[] = { |
| 46 "blink_gc", | 52 "blink_gc", |
| 47 "blink_gc/allocated_objects", | 53 "blink_gc/allocated_objects", |
| 48 "discardable", | 54 "discardable", |
| 49 "discardable/child_0x?", | 55 "discardable/child_0x?", |
| 50 "dom_storage/0x?/cache_size", | 56 "dom_storage/0x?/cache_size", |
| 51 "dom_storage/session_storage_0x?", | 57 "dom_storage/session_storage_0x?", |
| 52 "java_heap", | 58 "java_heap", |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 "sync/0x?/model_type/TYPED_URL", | 204 "sync/0x?/model_type/TYPED_URL", |
| 199 "sync/0x?/model_type/WALLET_METADATA", | 205 "sync/0x?/model_type/WALLET_METADATA", |
| 200 "sync/0x?/model_type/WIFI_CREDENTIAL", | 206 "sync/0x?/model_type/WIFI_CREDENTIAL", |
| 201 "tab_restore/service_helper_0x?/entries", | 207 "tab_restore/service_helper_0x?/entries", |
| 202 "tab_restore/service_helper_0x?/entries/tab_0x?", | 208 "tab_restore/service_helper_0x?/entries/tab_0x?", |
| 203 "tab_restore/service_helper_0x?/entries/window_0x?", | 209 "tab_restore/service_helper_0x?/entries/window_0x?", |
| 204 nullptr // End of list marker. | 210 nullptr // End of list marker. |
| 205 }; | 211 }; |
| 206 | 212 |
| 207 const char* const* g_dump_provider_whitelist = kDumpProviderWhitelist; | 213 const char* const* g_dump_provider_whitelist = kDumpProviderWhitelist; |
| 214 const char* const* g_dump_provider_whitelist_for_summary = |
| 215 kDumpProviderSummaryWhitelist; |
| 208 const char* const* g_allocator_dump_name_whitelist = | 216 const char* const* g_allocator_dump_name_whitelist = |
| 209 kAllocatorDumpNameWhitelist; | 217 kAllocatorDumpNameWhitelist; |
| 210 | 218 |
| 211 } // namespace | 219 bool IsMemoryDumpProviderInList(const char* mdp_name, const char* const* list) { |
| 212 | 220 for (size_t i = 0; list[i] != nullptr; ++i) { |
| 213 bool IsMemoryDumpProviderWhitelisted(const char* mdp_name) { | 221 if (strcmp(mdp_name, list[i]) == 0) |
| 214 for (size_t i = 0; g_dump_provider_whitelist[i] != nullptr; ++i) { | |
| 215 if (strcmp(mdp_name, g_dump_provider_whitelist[i]) == 0) | |
| 216 return true; | 222 return true; |
| 217 } | 223 } |
| 218 return false; | 224 return false; |
| 219 } | 225 } |
| 220 | 226 |
| 227 } // namespace |
| 228 |
| 229 bool IsMemoryDumpProviderWhitelisted(const char* mdp_name) { |
| 230 return IsMemoryDumpProviderInList(mdp_name, g_dump_provider_whitelist); |
| 231 } |
| 232 |
| 233 bool IsMemoryDumpProviderWhitelistedForSummary(const char* mdp_name) { |
| 234 return IsMemoryDumpProviderInList(mdp_name, |
| 235 g_dump_provider_whitelist_for_summary); |
| 236 } |
| 237 |
| 221 bool IsMemoryAllocatorDumpNameWhitelisted(const std::string& name) { | 238 bool IsMemoryAllocatorDumpNameWhitelisted(const std::string& name) { |
| 222 // Remove special characters, numbers (including hexadecimal which are marked | 239 // Remove special characters, numbers (including hexadecimal which are marked |
| 223 // by '0x') from the given string. | 240 // by '0x') from the given string. |
| 224 const size_t length = name.size(); | 241 const size_t length = name.size(); |
| 225 std::string stripped_str; | 242 std::string stripped_str; |
| 226 stripped_str.reserve(length); | 243 stripped_str.reserve(length); |
| 227 bool parsing_hex = false; | 244 bool parsing_hex = false; |
| 228 for (size_t i = 0; i < length; ++i) { | 245 for (size_t i = 0; i < length; ++i) { |
| 229 if (parsing_hex && isxdigit(name[i])) | 246 if (parsing_hex && isxdigit(name[i])) |
| 230 continue; | 247 continue; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 243 return true; | 260 return true; |
| 244 } | 261 } |
| 245 } | 262 } |
| 246 return false; | 263 return false; |
| 247 } | 264 } |
| 248 | 265 |
| 249 void SetDumpProviderWhitelistForTesting(const char* const* list) { | 266 void SetDumpProviderWhitelistForTesting(const char* const* list) { |
| 250 g_dump_provider_whitelist = list; | 267 g_dump_provider_whitelist = list; |
| 251 } | 268 } |
| 252 | 269 |
| 270 void SetDumpProviderSummaryWhitelistForTesting(const char* const* list) { |
| 271 g_dump_provider_whitelist_for_summary = list; |
| 272 } |
| 273 |
| 253 void SetAllocatorDumpNameWhitelistForTesting(const char* const* list) { | 274 void SetAllocatorDumpNameWhitelistForTesting(const char* const* list) { |
| 254 g_allocator_dump_name_whitelist = list; | 275 g_allocator_dump_name_whitelist = list; |
| 255 } | 276 } |
| 256 | 277 |
| 257 } // namespace trace_event | 278 } // namespace trace_event |
| 258 } // namespace base | 279 } // namespace base |
| OLD | NEW |