Index: content/browser/loader/throttling_resource_handler.cc |
diff --git a/content/browser/loader/throttling_resource_handler.cc b/content/browser/loader/throttling_resource_handler.cc |
index 7095b090b99d471e05c0cb4776df80c06b72d181..6238ebb4d93319ffc0eabf51e79f9b13cd0c6fa8 100644 |
--- a/content/browser/loader/throttling_resource_handler.cc |
+++ b/content/browser/loader/throttling_resource_handler.cc |
@@ -7,7 +7,6 @@ |
#include <utility> |
#include "content/browser/loader/resource_controller.h" |
-#include "content/browser/loader/resource_request_info_impl.h" |
#include "content/public/common/resource_response.h" |
#include "net/url_request/url_request.h" |
@@ -123,7 +122,12 @@ void ThrottlingResourceHandler::CancelWithError(int error_code) { |
} |
void ThrottlingResourceHandler::Resume() { |
- DCHECK(!cancelled_by_resource_throttle_); |
+ // Throttles expect to be able to cancel requests out-of-band, so just do |
+ // nothing if one request resumes after another cancels. Can't even recognize |
+ // out-of-band cancels and for synchronous teardown, since don't know if the |
+ // currently active throttle called Cancel() or if it was another one. |
Randy Smith (Not in Mondays)
2016/12/20 22:16:41
I'd really like to understand this use case better
mmenke
2017/01/04 22:02:29
I was wrong about NavigationResourceThrottle (It's
mmenke
2017/01/05 18:50:00
Sorry, I was wrong.
For the problematic case, hav
Randy Smith (Not in Mondays)
2017/01/11 19:57:15
Oh, what a mess. Ok.
* For purposes of this CL,
|
+ if (cancelled_by_resource_throttle_) |
+ return; |
DeferredStage last_deferred_stage = deferred_stage_; |
deferred_stage_ = DEFERRED_NONE; |