chore: Move draggable regions implementation from NativeBrowserView into InspectableWebContentsView (#35007)

* hore: Move draggable regions implementation from NativeBrowserView into InspectableWebContentsView

The draggable regions implementation is related to WebView, so
InspectableWebContentsView is a more appropriate place to put it there.
Also, this refactoring will allow the subsequent extension of the
WebContentsView API, which will eventually replace BrowserView API.

* fix: Lint error

* fix: Adjusted owner-window
This commit is contained in:
Daniel Kocielinski 2022-10-17 11:10:07 -04:00 committed by GitHub
parent f2c341b655
commit 23d4a252c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 397 additions and 360 deletions

View file

@ -105,7 +105,16 @@ void BrowserView::SetOwnerWindow(BaseWindow* window) {
if (web_contents())
web_contents()->SetOwnerWindow(window ? window->window() : nullptr);
if (owner_window_.get()) {
owner_window_->window()->remove_inspectable_view(
view_->GetInspectableWebContentsView());
}
owner_window_ = window ? window->GetWeakPtr() : nullptr;
if (owner_window_.get() && view_->GetInspectableWebContentsView())
owner_window_->window()->add_inspectable_view(
view_->GetInspectableWebContentsView());
}
BrowserView::~BrowserView() {
@ -123,7 +132,10 @@ void BrowserView::WebContentsDestroyed() {
void BrowserView::OnDraggableRegionsUpdated(
const std::vector<mojom::DraggableRegionPtr>& regions) {
view_->UpdateDraggableRegions(regions);
InspectableWebContentsView* iwc_view = view_->GetInspectableWebContentsView();
if (!iwc_view)
return;
iwc_view->UpdateDraggableRegions(regions);
}
// static

View file

@ -215,8 +215,8 @@ void BrowserWindow::OnCloseButtonClicked(bool* prevent_default) {
api_web_contents_->NotifyUserActivation();
// Trigger beforeunload events for associated BrowserViews.
for (NativeBrowserView* view : window_->browser_views()) {
auto* vwc = view->web_contents();
for (InspectableWebContentsView* view : window_->inspectable_views()) {
auto* vwc = view->inspectable_web_contents()->GetWebContents();
auto* api_web_contents = api::WebContents::From(vwc);
// Required to make beforeunload handler work.