mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-11 01:20:44 +01:00
Mac: Fix flaky ResourceRequestHandlerTest failures
The AbortAfterCreated and AbortBeforeBrowse tests were flaking due to a race between request handling and browser close. The tests would fail if the request handling completed first.
This commit is contained in:
parent
3c0a4410ad
commit
5a622c22b5
@ -801,7 +801,7 @@ class BasicResponseTest : public TestHandler {
|
|||||||
|
|
||||||
VerifyState(kOnResourceLoadComplete, request, response);
|
VerifyState(kOnResourceLoadComplete, request, response);
|
||||||
|
|
||||||
if (unhandled_ || IsIncomplete() || IsAborted()) {
|
if (unhandled_ || IsIncomplete() || (IsAborted() && status == UR_FAILED)) {
|
||||||
EXPECT_EQ(UR_FAILED, status);
|
EXPECT_EQ(UR_FAILED, status);
|
||||||
EXPECT_EQ(0, received_content_length);
|
EXPECT_EQ(0, received_content_length);
|
||||||
} else {
|
} else {
|
||||||
@ -945,43 +945,40 @@ class BasicResponseTest : public TestHandler {
|
|||||||
}
|
}
|
||||||
} else if (IsAborted()) {
|
} else if (IsAborted()) {
|
||||||
EXPECT_EQ(1, on_before_browse_ct_);
|
EXPECT_EQ(1, on_before_browse_ct_);
|
||||||
if (custom_scheme_) {
|
// The callbacks executed may vary based on timing.
|
||||||
EXPECT_EQ(0, get_resource_request_handler_ct_);
|
EXPECT_NEAR(0, get_resource_request_handler_ct_, 1);
|
||||||
EXPECT_EQ(0, get_cookie_access_filter_ct_);
|
EXPECT_NEAR(0, get_cookie_access_filter_ct_, 1);
|
||||||
} else {
|
EXPECT_NEAR(0, on_before_resource_load_ct_, 1);
|
||||||
// The callbacks executed for standard schemes may vary based on timing.
|
EXPECT_NEAR(0, get_resource_handler_ct_, 1);
|
||||||
}
|
EXPECT_NEAR(0, get_resource_response_filter_ct_, 1);
|
||||||
EXPECT_EQ(0, on_before_resource_load_ct_);
|
EXPECT_NEAR(0, on_resource_response_ct_, 1);
|
||||||
EXPECT_EQ(0, get_resource_handler_ct_);
|
|
||||||
EXPECT_EQ(0, on_resource_redirect_ct_);
|
EXPECT_EQ(0, on_resource_redirect_ct_);
|
||||||
EXPECT_EQ(0, get_resource_response_filter_ct_);
|
|
||||||
EXPECT_EQ(0, on_resource_response_ct_);
|
|
||||||
} else {
|
} else {
|
||||||
NOTREACHED();
|
NOTREACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPECT_EQ(resource_handler_created_ct_, resource_handler_destroyed_ct_);
|
|
||||||
|
|
||||||
if (IsAborted()) {
|
if (IsAborted()) {
|
||||||
if (IsChromeRuntimeEnabled()) {
|
// The callbacks executed may vary based on timing.
|
||||||
// Using the Chrome runtime OnResourceLoadComplete may be called with
|
EXPECT_NEAR(0, on_load_end_ct_, 1);
|
||||||
// UR_FAILED.
|
EXPECT_NEAR(resource_handler_created_ct_, resource_handler_destroyed_ct_,
|
||||||
EXPECT_NEAR(0, on_resource_load_complete_ct_, 1);
|
1);
|
||||||
} else {
|
EXPECT_NEAR(0, on_resource_load_complete_ct_, 1);
|
||||||
EXPECT_EQ(0, on_resource_load_complete_ct_);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
|
EXPECT_EQ(resource_handler_created_ct_, resource_handler_destroyed_ct_);
|
||||||
EXPECT_EQ(1, on_resource_load_complete_ct_);
|
EXPECT_EQ(1, on_resource_load_complete_ct_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsIncomplete() || IsAborted()) {
|
if (IsIncomplete()) {
|
||||||
EXPECT_EQ(0, on_load_end_ct_);
|
EXPECT_EQ(0, on_load_end_ct_);
|
||||||
} else {
|
} else if (!IsAborted()) {
|
||||||
EXPECT_EQ(1, on_load_end_ct_);
|
EXPECT_EQ(1, on_load_end_ct_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (custom_scheme_ && unhandled_ && !(IsIncomplete() || IsAborted())) {
|
if (custom_scheme_ && unhandled_ && !(IsIncomplete() || IsAborted())) {
|
||||||
EXPECT_EQ(1, on_protocol_execution_ct_);
|
EXPECT_EQ(1, on_protocol_execution_ct_);
|
||||||
|
} else if (IsAborted()) {
|
||||||
|
// The callbacks executed may vary based on timing.
|
||||||
|
EXPECT_NEAR(0, on_protocol_execution_ct_, 1);
|
||||||
} else {
|
} else {
|
||||||
EXPECT_EQ(0, on_protocol_execution_ct_);
|
EXPECT_EQ(0, on_protocol_execution_ct_);
|
||||||
}
|
}
|
||||||
@ -1263,6 +1260,8 @@ class BasicResponseTest : public TestHandler {
|
|||||||
|
|
||||||
void VerifyOKResponse(Callback callback,
|
void VerifyOKResponse(Callback callback,
|
||||||
CefRefPtr<CefResponse> response) const {
|
CefRefPtr<CefResponse> response) const {
|
||||||
|
const auto error_code = response->GetError();
|
||||||
|
|
||||||
// True for the first response in cases where we're redirecting/restarting
|
// True for the first response in cases where we're redirecting/restarting
|
||||||
// from inside OnResourceResponse (e.g. the first response always succeeds).
|
// from inside OnResourceResponse (e.g. the first response always succeeds).
|
||||||
const bool override_unhandled = unhandled_ &&
|
const bool override_unhandled = unhandled_ &&
|
||||||
@ -1275,14 +1274,12 @@ class BasicResponseTest : public TestHandler {
|
|||||||
const bool incomplete_unhandled =
|
const bool incomplete_unhandled =
|
||||||
(mode_ == INCOMPLETE_BEFORE_RESOURCE_LOAD ||
|
(mode_ == INCOMPLETE_BEFORE_RESOURCE_LOAD ||
|
||||||
mode_ == INCOMPLETE_REQUEST_HANDLER_OPEN ||
|
mode_ == INCOMPLETE_REQUEST_HANDLER_OPEN ||
|
||||||
(IsAborted() && !custom_scheme_));
|
(IsAborted() && !custom_scheme_ && error_code != ERR_NONE));
|
||||||
|
|
||||||
if ((unhandled_ && !override_unhandled) || incomplete_unhandled) {
|
if ((unhandled_ && !override_unhandled) || incomplete_unhandled) {
|
||||||
if (incomplete_unhandled) {
|
EXPECT_TRUE(ERR_ABORTED == error_code ||
|
||||||
EXPECT_EQ(ERR_ABORTED, response->GetError()) << callback;
|
ERR_UNKNOWN_URL_SCHEME == error_code)
|
||||||
} else {
|
<< callback << error_code;
|
||||||
EXPECT_EQ(ERR_UNKNOWN_URL_SCHEME, response->GetError()) << callback;
|
|
||||||
}
|
|
||||||
EXPECT_EQ(0, response->GetStatus()) << callback;
|
EXPECT_EQ(0, response->GetStatus()) << callback;
|
||||||
EXPECT_STREQ("", response->GetStatusText().ToString().c_str())
|
EXPECT_STREQ("", response->GetStatusText().ToString().c_str())
|
||||||
<< callback;
|
<< callback;
|
||||||
@ -1291,7 +1288,8 @@ class BasicResponseTest : public TestHandler {
|
|||||||
EXPECT_STREQ("", response->GetCharset().ToString().c_str()) << callback;
|
EXPECT_STREQ("", response->GetCharset().ToString().c_str()) << callback;
|
||||||
} else {
|
} else {
|
||||||
if ((mode_ == INCOMPLETE_REQUEST_HANDLER_READ || IsAborted()) &&
|
if ((mode_ == INCOMPLETE_REQUEST_HANDLER_READ || IsAborted()) &&
|
||||||
callback == kOnResourceLoadComplete) {
|
callback == kOnResourceLoadComplete &&
|
||||||
|
response->GetError() != ERR_NONE) {
|
||||||
// We got a response, but we also got aborted.
|
// We got a response, but we also got aborted.
|
||||||
EXPECT_EQ(ERR_ABORTED, response->GetError()) << callback;
|
EXPECT_EQ(ERR_ABORTED, response->GetError()) << callback;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user