refactor: make InitWithWebContents and InspectableWebContents take a unique_ptr (#30920)

* refactor: make InitWithWebContents take a unique_ptr

Signed-off-by: Darshan Sen <darshan.sen@postman.com>

* refactor: make InspectableWebContents take a unique_ptr

Signed-off-by: Darshan Sen <darshan.sen@postman.com>
This commit is contained in:
Darshan Sen 2021-09-20 00:34:11 +00:00 committed by GitHub
parent 6fdf350bea
commit efa70131e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 20 deletions

View file

@ -784,10 +784,7 @@ void WebContents::InitWithSessionAndOptions(
gin::Handle<api::Session> session, gin::Handle<api::Session> session,
const gin_helper::Dictionary& options) { const gin_helper::Dictionary& options) {
Observe(owned_web_contents.get()); Observe(owned_web_contents.get());
// TODO(zcbenz): Make InitWithWebContents take unique_ptr. InitWithWebContents(std::move(owned_web_contents), session->browser_context(),
// At the time of writing we are going through a refactoring and I don't want
// to make other people's work harder.
InitWithWebContents(owned_web_contents.release(), session->browser_context(),
IsGuest()); IsGuest());
inspectable_web_contents_->GetView()->SetDelegate(this); inspectable_web_contents_->GetView()->SetDelegate(this);
@ -884,36 +881,39 @@ void WebContents::InitWithExtensionView(v8::Isolate* isolate,
// Allow toggling DevTools for background pages // Allow toggling DevTools for background pages
Observe(web_contents); Observe(web_contents);
InitWithWebContents(web_contents, GetBrowserContext(), IsGuest()); InitWithWebContents(std::unique_ptr<content::WebContents>(web_contents),
GetBrowserContext(), IsGuest());
inspectable_web_contents_->GetView()->SetDelegate(this); inspectable_web_contents_->GetView()->SetDelegate(this);
} }
#endif #endif
void WebContents::InitWithWebContents(content::WebContents* web_contents, void WebContents::InitWithWebContents(
std::unique_ptr<content::WebContents> web_contents,
ElectronBrowserContext* browser_context, ElectronBrowserContext* browser_context,
bool is_guest) { bool is_guest) {
browser_context_ = browser_context; browser_context_ = browser_context;
web_contents->SetDelegate(this); web_contents->SetDelegate(this);
#if BUILDFLAG(ENABLE_PRINTING) #if BUILDFLAG(ENABLE_PRINTING)
PrintPreviewMessageHandler::CreateForWebContents(web_contents); PrintPreviewMessageHandler::CreateForWebContents(web_contents.get());
PrintViewManagerElectron::CreateForWebContents(web_contents); PrintViewManagerElectron::CreateForWebContents(web_contents.get());
printing::CreateCompositeClientIfNeeded(web_contents, printing::CreateCompositeClientIfNeeded(web_contents.get(),
browser_context->GetUserAgent()); browser_context->GetUserAgent());
#endif #endif
#if BUILDFLAG(ENABLE_PDF_VIEWER) #if BUILDFLAG(ENABLE_PDF_VIEWER)
pdf::PDFWebContentsHelper::CreateForWebContentsWithClient( pdf::PDFWebContentsHelper::CreateForWebContentsWithClient(
web_contents, std::make_unique<ElectronPDFWebContentsHelperClient>()); web_contents.get(),
std::make_unique<ElectronPDFWebContentsHelperClient>());
#endif #endif
// Determine whether the WebContents is offscreen. // Determine whether the WebContents is offscreen.
auto* web_preferences = WebContentsPreferences::From(web_contents); auto* web_preferences = WebContentsPreferences::From(web_contents.get());
offscreen_ = web_preferences && web_preferences->IsOffscreen(); offscreen_ = web_preferences && web_preferences->IsOffscreen();
// Create InspectableWebContents. // Create InspectableWebContents.
inspectable_web_contents_ = std::make_unique<InspectableWebContents>( inspectable_web_contents_ = std::make_unique<InspectableWebContents>(
web_contents, browser_context->prefs(), is_guest); std::move(web_contents), browser_context->prefs(), is_guest);
inspectable_web_contents_->SetDelegate(this); inspectable_web_contents_->SetDelegate(this);
} }

View file

@ -432,7 +432,7 @@ class WebContents : public gin::Wrappable<WebContents>,
// Creates a InspectableWebContents object and takes ownership of // Creates a InspectableWebContents object and takes ownership of
// |web_contents|. // |web_contents|.
void InitWithWebContents(content::WebContents* web_contents, void InitWithWebContents(std::unique_ptr<content::WebContents> web_contents,
ElectronBrowserContext* browser_context, ElectronBrowserContext* browser_context,
bool is_guest); bool is_guest);

View file

@ -339,11 +339,11 @@ void InspectableWebContents::RegisterPrefs(PrefRegistrySimple* registry) {
} }
InspectableWebContents::InspectableWebContents( InspectableWebContents::InspectableWebContents(
content::WebContents* web_contents, std::unique_ptr<content::WebContents> web_contents,
PrefService* pref_service, PrefService* pref_service,
bool is_guest) bool is_guest)
: pref_service_(pref_service), : pref_service_(pref_service),
web_contents_(web_contents), web_contents_(std::move(web_contents)),
is_guest_(is_guest), is_guest_(is_guest),
view_(CreateInspectableContentsView(this)) { view_(CreateInspectableContentsView(this)) {
const base::Value* bounds_dict = pref_service_->Get(kDevToolsBoundsPref); const base::Value* bounds_dict = pref_service_->Get(kDevToolsBoundsPref);
@ -356,9 +356,9 @@ InspectableWebContents::InspectableWebContents(
} }
if (!IsPointInScreen(devtools_bounds_.origin())) { if (!IsPointInScreen(devtools_bounds_.origin())) {
gfx::Rect display; gfx::Rect display;
if (!is_guest && web_contents->GetNativeView()) { if (!is_guest && web_contents_->GetNativeView()) {
display = display::Screen::GetScreen() display = display::Screen::GetScreen()
->GetDisplayNearestView(web_contents->GetNativeView()) ->GetDisplayNearestView(web_contents_->GetNativeView())
.bounds(); .bounds();
} else { } else {
display = display::Screen::GetScreen()->GetPrimaryDisplay().bounds(); display = display::Screen::GetScreen()->GetPrimaryDisplay().bounds();

View file

@ -44,7 +44,7 @@ class InspectableWebContents
static const List& GetAll(); static const List& GetAll();
static void RegisterPrefs(PrefRegistrySimple* pref_registry); static void RegisterPrefs(PrefRegistrySimple* pref_registry);
InspectableWebContents(content::WebContents* web_contents, InspectableWebContents(std::unique_ptr<content::WebContents> web_contents,
PrefService* pref_service, PrefService* pref_service,
bool is_guest); bool is_guest);
~InspectableWebContents() override; ~InspectableWebContents() override;