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

Unified Diff: android_webview/common/crash_reporter/crash_keys.cc

Issue 2717223003: Add WebView-specific whitelist for crash keys. (Closed)
Patch Set: Use non-allocating whitelist implementation. Add instrumentation tests. Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: android_webview/common/crash_reporter/crash_keys.cc
diff --git a/android_webview/common/crash_reporter/crash_keys.cc b/android_webview/common/crash_reporter/crash_keys.cc
index cd82afc34bb68a402c48d870c89d9344f8e29f08..5ed8ca7f3f890c6724f7bac5027d9eec62a88a48 100644
--- a/android_webview/common/crash_reporter/crash_keys.cc
+++ b/android_webview/common/crash_reporter/crash_keys.cc
@@ -5,6 +5,8 @@
#include "android_webview/common/crash_reporter/crash_keys.h"
#include "base/debug/crash_logging.h"
+#include "base/format_macros.h"
+#include "base/strings/string_util.h"
#include "components/crash/core/common/crash_keys.h"
using namespace crash_keys;
@@ -12,32 +14,183 @@ using namespace crash_keys;
namespace android_webview {
namespace crash_keys {
+const char kActiveURL[] = "url-chunk";
+
+const char kFontKeyName[] = "font_key_name";
+
+const size_t kExtensionIDMaxCount = 10;
+const char kExtensionID[] = "extension-%" PRIuS;
+const char kNumExtensionsCount[] = "num-extensions";
+
+const char kShutdownType[] = "shutdown-type";
+const char kBrowserUnpinTrace[] = "browser-unpin-trace";
+
const char kGPUDriverVersion[] = "gpu-driver";
const char kGPUPixelShaderVersion[] = "gpu-psver";
const char kGPUVertexShaderVersion[] = "gpu-vsver";
const char kGPUVendor[] = "gpu-gl-vendor";
const char kGPURenderer[] = "gpu-gl-renderer";
+const char kInputEventFilterSendFailure[] = "input-event-filter-send-failure";
+
+const char kPrinterInfo[] = "prn-info-%" PRIuS;
+
+const char kViewCount[] = "view-count";
+
+const char kZeroEncodeDetails[] = "zero-encode-details";
+
size_t RegisterWebViewCrashKeys() {
+ // TODO these are never used?
+ // Register the printer info.
+ //{
+ // static char formatted_keys[kPrinterInfoCount][sizeof(kPrinterInfo) + 1] =
+ // {{ 0 }};
+ // const size_t formatted_key_len = sizeof(formatted_keys[0]);
+ // for (size_t i = 0; i < kPrinterInfoCount; ++i) {
+ // // Key names are 1-indexed.
+ // int n = base::snprintf(
+ // formatted_keys[i], formatted_key_len, kPrinterInfo, i + 1);
+ // DCHECK_GT(n, 0);
+ // base::debug::CrashKey crash_key = { formatted_keys[i], kSmallSize };
+ // keys.push_back(crash_key);
+ // }
+ //}
+ std::vector<base::debug::CrashKey> keys = GetWebViewCrashKeysToRegister();
+ return base::debug::InitCrashKeys(&keys.at(0), keys.size(), kChunkMaxLength);
+}
+
+std::vector<base::debug::CrashKey> GetWebViewCrashKeysToRegister() {
base::debug::CrashKey fixed_keys[] = {
- { kGPUDriverVersion, kSmallSize },
- { kGPUPixelShaderVersion, kSmallSize },
- { kGPUVertexShaderVersion, kSmallSize },
- { kGPUVendor, kSmallSize },
- { kGPURenderer, kSmallSize },
-
- // content/:
- { "bad_message_reason", kSmallSize },
- { "discardable-memory-allocated", kSmallSize },
- { "discardable-memory-free", kSmallSize },
- { "mojo-message-error", kMediumSize },
- { "total-discardable-memory-allocated", kSmallSize },
+ {"AW_WHITELISTED_DEBUG_KEY", kSmallSize},
+ {"AW_NONWHITELISTED_DEBUG_KEY", kSmallSize},
+ {kClientId, kSmallSize},
+ {kChannel, kSmallSize},
+ {kActiveURL, kLargeSize},
+ {kNumVariations, kSmallSize},
+ {kVariations, kHugeSize},
+ {kNumExtensionsCount, kSmallSize},
+ {kShutdownType, kSmallSize},
+ {kBrowserUnpinTrace, kMediumSize},
+ {kGPUDriverVersion, kSmallSize},
+ {kGPUPixelShaderVersion, kSmallSize},
+ {kGPUVertexShaderVersion, kSmallSize},
+ {kGPUVendor, kSmallSize},
+ {kGPURenderer, kSmallSize},
+
+ // content/:
+ {"bad_message_reason", kSmallSize},
+ {"discardable-memory-allocated", kSmallSize},
+ {"discardable-memory-free", kSmallSize},
+ {kFontKeyName, kSmallSize},
+ {"mojo-message-error", kMediumSize},
+ {"ppapi_path", kMediumSize},
+ {"subresource_url", kLargeSize},
+ {"total-discardable-memory-allocated", kSmallSize},
+ {kInputEventFilterSendFailure, kSmallSize},
+ {kBug464926CrashKey, kSmallSize},
+ {kViewCount, kSmallSize},
+
+ // media/:
+ {kZeroEncodeDetails, kSmallSize},
+
+ // gin/:
+ {"v8-ignition", kSmallSize},
+
+ // sandbox/:
+ {"seccomp-sigsys", kMediumSize},
+
+ // Temporary for http://crbug.com/575245.
+ {"swapout_frame_id", kSmallSize},
+ {"swapout_proxy_id", kSmallSize},
+ {"swapout_view_id", kSmallSize},
+ {"commit_frame_id", kSmallSize},
+ {"commit_proxy_id", kSmallSize},
+ {"commit_view_id", kSmallSize},
+ {"commit_main_render_frame_id", kSmallSize},
+ {"newproxy_proxy_id", kSmallSize},
+ {"newproxy_view_id", kSmallSize},
+ {"newproxy_opener_id", kSmallSize},
+ {"newproxy_parent_id", kSmallSize},
+ {"rvinit_view_id", kSmallSize},
+ {"rvinit_proxy_id", kSmallSize},
+ {"rvinit_main_frame_id", kSmallSize},
+ {"initrf_frame_id", kSmallSize},
+ {"initrf_proxy_id", kSmallSize},
+ {"initrf_view_id", kSmallSize},
+ {"initrf_main_frame_id", kSmallSize},
+ {"initrf_view_is_live", kSmallSize},
+
+ // Temporary for https://crbug.com/591478.
+ {"initrf_parent_proxy_exists", kSmallSize},
+ {"initrf_render_view_is_live", kSmallSize},
+ {"initrf_parent_is_in_same_site_instance", kSmallSize},
+ {"initrf_parent_process_is_live", kSmallSize},
+ {"initrf_root_is_in_same_site_instance", kSmallSize},
+ {"initrf_root_is_in_same_site_instance_as_parent", kSmallSize},
+ {"initrf_root_process_is_live", kSmallSize},
+ {"initrf_root_proxy_is_live", kSmallSize},
+
+ // Temporary for https://crbug.com/626802.
+ {"newframe_routing_id", kSmallSize},
+ {"newframe_proxy_id", kSmallSize},
+ {"newframe_opener_id", kSmallSize},
+ {"newframe_parent_id", kSmallSize},
+ {"newframe_widget_id", kSmallSize},
+ {"newframe_widget_hidden", kSmallSize},
+ {"newframe_replicated_origin", kSmallSize},
+ {"newframe_oopifs_possible", kSmallSize},
+
+ // Temporary for https://crbug.com/630103.
+ {"origin_mismatch_url", kLargeSize},
+ {"origin_mismatch_origin", kMediumSize},
+ {"origin_mismatch_transition", kSmallSize},
+ {"origin_mismatch_redirects", kSmallSize},
+ {"origin_mismatch_same_page", kSmallSize},
+
+ // Temporary for https://crbug.com/612711.
+ {"aci_wrong_sp_extension_id", kSmallSize},
+
+ // Temporary for https://crbug.com/668633.
+ {"swdh_set_hosted_version_worker_pid", kSmallSize},
+ {"swdh_set_hosted_version_host_pid", kSmallSize},
+ {"swdh_set_hosted_version_is_new_process", kSmallSize},
+ {"swdh_set_hosted_version_restart_count", kSmallSize},
};
+ // This dynamic set of keys is used for sets of key value pairs when gathering
+ // a collection of data, like command line switches or extension IDs.
std::vector<base::debug::CrashKey> keys(fixed_keys,
fixed_keys + arraysize(fixed_keys));
- return base::debug::InitCrashKeys(&keys.at(0), keys.size(), kChunkMaxLength);
+ GetCrashKeysForCommandLineSwitches(&keys);
+
+ // 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
+ {
+ static char formatted_keys[kExtensionIDMaxCount][sizeof(kExtensionID) + 1] =
+ {{0}};
+ const size_t formatted_key_len = sizeof(formatted_keys[0]);
+ for (size_t i = 0; i < kExtensionIDMaxCount; ++i) {
+ int n = base::snprintf(formatted_keys[i], formatted_key_len, kExtensionID,
+ i + 1);
+ DCHECK_GT(n, 0);
+ base::debug::CrashKey crash_key = {formatted_keys[i], kSmallSize};
+ keys.push_back(crash_key);
+ }
+ }
+ return keys;
+}
+
+std::vector<const char*> GetWhiteListedWebViewCrashKeys() {
+ return std::vector<const char*>{
+ "AW_WHITELISTED_DEBUG_KEY", kGPUDriverVersion, kGPUPixelShaderVersion,
+ kGPUVertexShaderVersion, kGPUVendor, kGPURenderer,
+
+ // content/:
+ "bad_message_reason", "discardable-memory-allocated",
+ "discardable-memory-free", "mojo-message-error-1", "mojo-message-error-2",
+ "mojo-message-error-3", "mojo-message-error-4",
+ "total-discardable-memory-allocated",
+ };
}
}

Powered by Google App Engine
This is Rietveld 408576698