[Display Cutout] Pull out WebContentsObserver
Remove WebContentsObserver from DisplayCutoutHostImpl
BUG=859241
Change-Id: Icd79a7ae476afe5c5b1e4a778a93b7f411d512cf
Reviewed-on: https://chromium-review.googlesource.com/1130224
Reviewed-by: Bo <[email protected]>
Commit-Queue: Becca Hughes <[email protected]>
Cr-Commit-Position: refs/heads/master@{#579439}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index ccde2311..904109b0 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -572,11 +572,8 @@
#endif // !defined(OS_ANDROID)
#if defined(OS_ANDROID)
- if (base::FeatureList::IsEnabled(features::kDisplayCutoutAPI)) {
- display_cutout_host_impl_ = std::make_unique<DisplayCutoutHostImpl>(
- this, base::BindRepeating(&WebContentsImpl::NotifyViewportFitChanged,
- base::Unretained(this)));
- }
+ if (base::FeatureList::IsEnabled(features::kDisplayCutoutAPI))
+ display_cutout_host_impl_ = std::make_unique<DisplayCutoutHostImpl>(this);
#endif
registry_.AddInterface(base::BindRepeating(
@@ -684,6 +681,9 @@
for (auto& observer : observers_)
observer.WebContentsDestroyed();
+ if (display_cutout_host_impl_)
+ display_cutout_host_impl_->WebContentsDestroyed();
+
for (auto& observer : observers_)
observer.ResetWebContents();
@@ -2330,6 +2330,9 @@
observer.DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab(),
will_cause_resize);
}
+
+ if (display_cutout_host_impl_)
+ display_cutout_host_impl_->DidExitFullscreen();
}
void WebContentsImpl::FullscreenStateChanged(RenderFrameHost* rfh,
@@ -2394,6 +2397,9 @@
for (auto& observer : observers_)
observer.DidAcquireFullscreen(max_depth_rfh);
+
+ if (display_cutout_host_impl_)
+ display_cutout_host_impl_->DidAcquireFullscreen(max_depth_rfh);
} else if (fullscreen_frame_tree_nodes_.size() == 0) {
current_fullscreen_frame_tree_node_id_ =
RenderFrameHost::kNoFrameTreeNodeId;
@@ -4026,6 +4032,9 @@
"navigation_handle", navigation_handle);
for (auto& observer : observers_)
observer.DidStartNavigation(navigation_handle);
+
+ if (display_cutout_host_impl_)
+ display_cutout_host_impl_->DidStartNavigation(navigation_handle);
}
void WebContentsImpl::DidRedirectNavigation(
@@ -4093,6 +4102,9 @@
for (auto& observer : observers_)
observer.DidFinishNavigation(navigation_handle);
+ if (display_cutout_host_impl_)
+ display_cutout_host_impl_->DidFinishNavigation(navigation_handle);
+
if (navigation_handle->HasCommitted()) {
BrowserAccessibilityManager* manager =
static_cast<RenderFrameHostImpl*>(
@@ -4991,6 +5003,9 @@
observer.RenderFrameCreated(render_frame_host);
UpdateAccessibilityModeOnFrame(render_frame_host);
+ if (display_cutout_host_impl_)
+ display_cutout_host_impl_->RenderFrameCreated(render_frame_host);
+
if (!render_frame_host->IsRenderFrameLive() || render_frame_host->GetParent())
return;
@@ -5011,6 +5026,9 @@
pepper_playback_observer_->RenderFrameDeleted(render_frame_host);
#endif
+ if (display_cutout_host_impl_)
+ display_cutout_host_impl_->RenderFrameDeleted(render_frame_host);
+
// Remove any fullscreen state that the frame has stored.
FullscreenStateChanged(render_frame_host, false /* is_fullscreen */);
}