From 42f138282f0ad314f5748a6a73e5edaae0220d39 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 20 Mar 2020 15:41:41 +0900 Subject: [PATCH] refactor: move set_owned_by_client calls to base View (#22739) * refactor: move set_owned_by_client() to WebContentsView * refactor: do set_owned_by_client() in View --- shell/browser/api/electron_api_view.cc | 6 +++--- shell/browser/api/electron_api_web_contents_view.cc | 10 ++++------ shell/browser/api/views/electron_api_button.cc | 1 - shell/browser/api/views/electron_api_resize_area.cc | 4 +--- shell/browser/api/views/electron_api_text_field.cc | 4 +--- .../ui/views/inspectable_web_contents_view_views.cc | 2 -- 6 files changed, 9 insertions(+), 18 deletions(-) diff --git a/shell/browser/api/electron_api_view.cc b/shell/browser/api/electron_api_view.cc index 0d228c8995963..d36aabd83cc6d 100644 --- a/shell/browser/api/electron_api_view.cc +++ b/shell/browser/api/electron_api_view.cc @@ -12,12 +12,12 @@ namespace electron { namespace api { -View::View(views::View* view) : view_(view) {} - -View::View() : view_(new views::View()) { +View::View(views::View* view) : view_(view) { view_->set_owned_by_client(); } +View::View() : View(new views::View()) {} + View::~View() { if (delete_view_) delete view_; diff --git a/shell/browser/api/electron_api_web_contents_view.cc b/shell/browser/api/electron_api_web_contents_view.cc index 6002ecb1ae768..26ddf61e3cdad 100644 --- a/shell/browser/api/electron_api_web_contents_view.cc +++ b/shell/browser/api/electron_api_web_contents_view.cc @@ -53,12 +53,10 @@ WebContentsView::WebContentsView(v8::Isolate* isolate, #endif web_contents_(isolate, web_contents->GetWrapper()), api_web_contents_(web_contents.get()) { -#if defined(OS_MACOSX) - // On macOS a View is created to wrap the NSView, and its lifetime is managed - // by us. - view()->set_owned_by_client(); -#else - // On other platforms the View is managed by InspectableWebContents. +#if !defined(OS_MACOSX) + // On macOS the View is a newly-created |DelayedNativeViewHost| and it is our + // responsibility to delete it. On other platforms the View is created and + // managed by InspectableWebContents. set_delete_view(false); #endif WebContentsViewRelay::CreateForWebContents(web_contents->web_contents()); diff --git a/shell/browser/api/views/electron_api_button.cc b/shell/browser/api/views/electron_api_button.cc index 6f9c5685b1da6..19427ac8e027b 100644 --- a/shell/browser/api/views/electron_api_button.cc +++ b/shell/browser/api/views/electron_api_button.cc @@ -13,7 +13,6 @@ namespace electron { namespace api { Button::Button(views::Button* impl) : View(impl) { - view()->set_owned_by_client(); // Make the button focusable as per the platform. button()->SetFocusForPlatform(); } diff --git a/shell/browser/api/views/electron_api_resize_area.cc b/shell/browser/api/views/electron_api_resize_area.cc index ff7f52cc9ad88..71883a24b6899 100644 --- a/shell/browser/api/views/electron_api_resize_area.cc +++ b/shell/browser/api/views/electron_api_resize_area.cc @@ -12,9 +12,7 @@ namespace electron { namespace api { -ResizeArea::ResizeArea() : View(new views::ResizeArea(this)) { - view()->set_owned_by_client(); -} +ResizeArea::ResizeArea() : View(new views::ResizeArea(this)) {} ResizeArea::~ResizeArea() {} diff --git a/shell/browser/api/views/electron_api_text_field.cc b/shell/browser/api/views/electron_api_text_field.cc index 3727280424c06..85d7029344bbd 100644 --- a/shell/browser/api/views/electron_api_text_field.cc +++ b/shell/browser/api/views/electron_api_text_field.cc @@ -13,9 +13,7 @@ namespace electron { namespace api { -TextField::TextField() : View(new views::Textfield()) { - view()->set_owned_by_client(); -} +TextField::TextField() : View(new views::Textfield()) {} TextField::~TextField() {} diff --git a/shell/browser/ui/views/inspectable_web_contents_view_views.cc b/shell/browser/ui/views/inspectable_web_contents_view_views.cc index d6321c8ff1c4b..62770dcbe88fa 100644 --- a/shell/browser/ui/views/inspectable_web_contents_view_views.cc +++ b/shell/browser/ui/views/inspectable_web_contents_view_views.cc @@ -87,8 +87,6 @@ InspectableWebContentsViewViews::InspectableWebContentsViewViews( devtools_visible_(false), devtools_window_delegate_(nullptr), title_(base::ASCIIToUTF16("Developer Tools")) { - set_owned_by_client(); - if (!inspectable_web_contents_->IsGuest() && inspectable_web_contents_->GetWebContents()->GetNativeView()) { views::WebView* contents_web_view = new views::WebView(nullptr);