Commit 5babe2dd authored by Justin Cohen's avatar Justin Cohen Committed by Commit Bot

[ios] Don't trigger initial load when deserializing webStateList.

Don't trigger the initial load for restored WebStates since the number
of WKWebViews is unbounded and may lead to an OOM crash. Instead,
disable and re-enable WebUsageEnabler SetTriggersInitialLoad

Bug: 1018337
Change-Id: Iaccecc3c0a1e68465b31b8503eee7b6d061d4f58
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1879205Reviewed-by: default avatarRohit Rao <rohitrao@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#709903}
parent 120545cc
......@@ -576,11 +576,20 @@ void RecordMainFrameNavigationMetric(web::WebState* web_state) {
_webStateList->PerformBatchOperation(
base::BindOnce(^(WebStateList* web_state_list) {
// Don't trigger the initial load for these restored WebStates since the
// number of WKWebViews is unbounded and may lead to an OOM crash.
WebStateListWebUsageEnabler* webUsageEnabler =
WebStateListWebUsageEnablerFactory::GetInstance()
->GetForBrowserState(_browserState);
const bool wasTriggersInitialLoadSet =
webUsageEnabler->TriggersInitialLoad();
webUsageEnabler->SetTriggersInitialLoad(false);
web::WebState::CreateParams createParams(_browserState);
DeserializeWebStateList(
web_state_list, window,
base::BindRepeating(&web::WebState::CreateWithStorageSession,
createParams));
webUsageEnabler->SetTriggersInitialLoad(wasTriggersInitialLoadSet);
}));
DCHECK_GT(_webStateList->count(), oldCount);
......
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