Commit ae2840da authored by Ben Kelly's avatar Ben Kelly Committed by Commit Bot

CacheStorage: Fix crash when eager reading is enabled.

Bug: 1014486,1010624
Change-Id: I175e6390cb67be4acff89caebee33c86d07230c5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1863230Reviewed-by: default avatarMarijn Kruisselbrink <mek@chromium.org>
Commit-Queue: Ben Kelly <wanderview@chromium.org>
Cr-Commit-Position: refs/heads/master@{#706012}
parent 28dc646f
...@@ -700,19 +700,26 @@ ScriptPromise Cache::MatchImpl(ScriptState* script_state, ...@@ -700,19 +700,26 @@ ScriptPromise Cache::MatchImpl(ScriptState* script_state,
break; break;
} }
} else { } else {
TRACE_EVENT_WITH_FLOW1(
"CacheStorage", "Cache::MatchImpl::Callback",
TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_IN,
"response", CacheStorageTracedValue(result->get_response()));
UMA_HISTOGRAM_LONG_TIMES( UMA_HISTOGRAM_LONG_TIMES(
"ServiceWorkerCache.Cache.Renderer.Match.Hit", elapsed); "ServiceWorkerCache.Cache.Renderer.Match.Hit", elapsed);
ScriptState::Scope scope(resolver->GetScriptState()); ScriptState::Scope scope(resolver->GetScriptState());
if (result->is_eager_response()) { if (result->is_eager_response()) {
TRACE_EVENT_WITH_FLOW1(
"CacheStorage", "Cache::MatchImpl::Callback",
TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_IN,
"eager_response",
CacheStorageTracedValue(
result->get_eager_response()->response));
resolver->Resolve( resolver->Resolve(
CreateEagerResponse(resolver->GetScriptState(), CreateEagerResponse(resolver->GetScriptState(),
std::move(result->get_eager_response()), std::move(result->get_eager_response()),
self->blob_client_list_)); self->blob_client_list_));
} else { } else {
TRACE_EVENT_WITH_FLOW1(
"CacheStorage", "Cache::MatchImpl::Callback",
TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_IN,
"response",
CacheStorageTracedValue(result->get_response()));
resolver->Resolve(Response::Create(resolver->GetScriptState(), resolver->Resolve(Response::Create(resolver->GetScriptState(),
*result->get_response())); *result->get_response()));
} }
......
...@@ -428,17 +428,24 @@ ScriptPromise CacheStorage::MatchImpl(ScriptState* script_state, ...@@ -428,17 +428,24 @@ ScriptPromise CacheStorage::MatchImpl(ScriptState* script_state,
break; break;
} }
} else { } else {
ScriptState::Scope scope(resolver->GetScriptState());
if (result->is_eager_response()) {
TRACE_EVENT_WITH_FLOW1( TRACE_EVENT_WITH_FLOW1(
"CacheStorage", "CacheStorage::MatchImpl::Callback", "CacheStorage", "CacheStorage::MatchImpl::Callback",
TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_IN, TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_IN,
"response", CacheStorageTracedValue(result->get_response())); "eager_response",
ScriptState::Scope scope(resolver->GetScriptState()); CacheStorageTracedValue(
if (result->is_eager_response()) { result->get_eager_response()->response));
resolver->Resolve( resolver->Resolve(
CreateEagerResponse(resolver->GetScriptState(), CreateEagerResponse(resolver->GetScriptState(),
std::move(result->get_eager_response()), std::move(result->get_eager_response()),
self->blob_client_list_)); self->blob_client_list_));
} else { } else {
TRACE_EVENT_WITH_FLOW1(
"CacheStorage", "CacheStorage::MatchImpl::Callback",
TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_IN,
"response",
CacheStorageTracedValue(result->get_response()));
resolver->Resolve(Response::Create(resolver->GetScriptState(), resolver->Resolve(Response::Create(resolver->GetScriptState(),
*result->get_response())); *result->get_response()));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment