Index: extensions/browser/api/web_request/web_request_api.cc |
diff --git a/extensions/browser/api/web_request/web_request_api.cc b/extensions/browser/api/web_request/web_request_api.cc |
index 40b9db7ddf0c080438019823b180f00b6bd38c03..3d9b9beac30bbf54f1dd883df795bf84ee699ede 100644 |
--- a/extensions/browser/api/web_request/web_request_api.cc |
+++ b/extensions/browser/api/web_request/web_request_api.cc |
@@ -8,6 +8,7 @@ |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
+#include "base/debug/alias.h" |
#include "base/json/json_writer.h" |
#include "base/lazy_instance.h" |
#include "base/macros.h" |
@@ -1226,6 +1227,20 @@ void ExtensionWebRequestEventRouter::OnURLRequestDestroyed( |
base::Time::Now()); |
} |
+void ExtensionWebRequestEventRouter::OnURLRequestJobOrphaned( |
+ void* browser_context, |
+ const net::URLRequest* request) { |
+ // See https://crbug.com/289715. While a URLRequest is blocking on an |
+ // extension, it may not orphan jobs unless OnURLRequestDestroyed is called |
+ // first. |
+ // |
+ // TODO(davidben): Remove this when the crash has been diagnosed. |
+ char url_buf[128]; |
+ base::strlcpy(url_buf, request->url().spec().c_str(), arraysize(url_buf)); |
+ base::debug::Alias(url_buf); |
+ CHECK_EQ(0u, blocked_requests_.count(request->identifier())); |
+} |
+ |
void ExtensionWebRequestEventRouter::ClearPendingCallbacks( |
const net::URLRequest* request) { |
blocked_requests_.erase(request->identifier()); |