0

[ios] Remove WebStateActivatedAt() from WebStateUpdateBrowserAgent

This CL updates WebStateUpdateBrowserAgent to handle the activation of WebState in WebStateListDidChange().

Bug: 1442546
Change-Id: Ic8f6dd11238bcd91639275e4162c7a3ef89a44a6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4705544
Reviewed-by: Federica Germinario <fedegermi@google.com>
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
Commit-Queue: Asami Doi <asamidoi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1174188}
This commit is contained in:
Asami Doi
2023-07-24 14:10:52 +00:00
committed by Chromium LUCI CQ
parent 662cf35e26
commit 10080947c0
2 changed files with 18 additions and 44 deletions

@ -41,11 +41,6 @@ class WebStateUpdateBrowserAgent
void WebStateListDidChange(WebStateList* web_state_list,
const WebStateListChange& change,
const WebStateListStatus& status) override;
void WebStateActivatedAt(WebStateList* web_state_list,
web::WebState* old_web_state,
web::WebState* new_web_state,
int active_index,
ActiveWebStateChangeReason reason) override;
void WebStateListDestroyed(WebStateList* web_state_list) override;

@ -49,48 +49,27 @@ void WebStateUpdateBrowserAgent::WebStateListDidChange(
WebStateList* web_state_list,
const WebStateListChange& change,
const WebStateListStatus& status) {
switch (change.type()) {
case WebStateListChange::Type::kStatusOnly:
// TODO(crbug.com/1442546): Move the implementation from
// WebStateActivatedAt() to here. Note that here is reachable only when
// `reason` == ActiveWebStateChangeReason::Activated.
break;
case WebStateListChange::Type::kDetach: {
// Inform the detached web state that it is no longer visible.
const WebStateListChangeDetach& detach_change =
change.As<WebStateListChangeDetach>();
web::WebState* detached_web_state = detach_change.detached_web_state();
if (detached_web_state->IsRealized()) {
detached_web_state->WasHidden();
detached_web_state->SetKeepRenderProcessAlive(false);
}
break;
if (change.type() == WebStateListChange::Type::kDetach) {
// Inform the detached web state that it is no longer visible.
const WebStateListChangeDetach& detach_change =
change.As<WebStateListChangeDetach>();
web::WebState* detached_web_state = detach_change.detached_web_state();
if (detached_web_state->IsRealized()) {
detached_web_state->WasHidden();
detached_web_state->SetKeepRenderProcessAlive(false);
}
case WebStateListChange::Type::kMove:
// Do nothing when a WebState is moved.
break;
case WebStateListChange::Type::kReplace:
// Do nothing when a WebState is replaced.
break;
case WebStateListChange::Type::kInsert:
// Do nothing when a WebState is inserted.
break;
}
}
void WebStateUpdateBrowserAgent::WebStateActivatedAt(
WebStateList* web_state_list,
web::WebState* old_web_state,
web::WebState* new_web_state,
int active_index,
ActiveWebStateChangeReason reason) {
// Inform the old web state that it is no longer visible.
if (old_web_state) {
old_web_state->WasHidden();
old_web_state->SetKeepRenderProcessAlive(false);
}
if (new_web_state) {
new_web_state->GetWebViewProxy().scrollViewProxy.clipsToBounds = NO;
if (status.active_web_state_change()) {
// Inform the old web state that it is no longer visible.
if (status.old_active_web_state) {
status.old_active_web_state->WasHidden();
status.old_active_web_state->SetKeepRenderProcessAlive(false);
}
if (status.new_active_web_state) {
status.new_active_web_state->GetWebViewProxy()
.scrollViewProxy.clipsToBounds = NO;
}
}
}