mirror of
https://github.com/electron/electron.git
synced 2026-05-02 03:00:22 -04:00
fix: remove dangling raw_ptr api::WebContents::zoom_controller_ (#50812)
fix: remove dangling raw_ptr api::WebContents::zoom_controller_
This commit is contained in:
@@ -972,11 +972,12 @@ WebContents::WebContents(v8::Isolate* isolate,
|
||||
|
||||
void WebContents::InitZoomController(content::WebContents* web_contents,
|
||||
const gin_helper::Dictionary& options) {
|
||||
WebContentsZoomController::CreateForWebContents(web_contents);
|
||||
zoom_controller_ = WebContentsZoomController::FromWebContents(web_contents);
|
||||
WebContentsZoomController* const zoom_controller =
|
||||
WebContentsZoomController::GetOrCreateForWebContents(web_contents);
|
||||
|
||||
double zoom_factor;
|
||||
if (options.Get(options::kZoomFactor, &zoom_factor))
|
||||
zoom_controller_->SetDefaultZoomFactor(zoom_factor);
|
||||
zoom_controller->SetDefaultZoomFactor(zoom_factor);
|
||||
|
||||
// Nothing to do with ZoomController, but this function gets called in all
|
||||
// init cases!
|
||||
@@ -3867,12 +3868,16 @@ gfx::Size WebContents::GetSizeForNewRenderView(content::WebContents* wc) {
|
||||
return {};
|
||||
}
|
||||
|
||||
WebContentsZoomController* WebContents::GetZoomController() const {
|
||||
return WebContentsZoomController::FromWebContents(web_contents());
|
||||
}
|
||||
|
||||
void WebContents::SetZoomLevel(double level) {
|
||||
zoom_controller_->SetZoomLevel(level);
|
||||
GetZoomController()->SetZoomLevel(level);
|
||||
}
|
||||
|
||||
double WebContents::GetZoomLevel() const {
|
||||
return zoom_controller_->GetZoomLevel();
|
||||
return GetZoomController()->GetZoomLevel();
|
||||
}
|
||||
|
||||
void WebContents::SetZoomFactor(gin_helper::ErrorThrower thrower,
|
||||
@@ -3892,7 +3897,7 @@ double WebContents::GetZoomFactor() const {
|
||||
}
|
||||
|
||||
void WebContents::SetTemporaryZoomLevel(double level) {
|
||||
zoom_controller_->SetTemporaryZoomLevel(level);
|
||||
GetZoomController()->SetTemporaryZoomLevel(level);
|
||||
}
|
||||
|
||||
std::optional<PreloadScript> WebContents::GetPreloadScript() const {
|
||||
|
||||
@@ -380,7 +380,7 @@ class WebContents final : public ExclusiveAccessContext,
|
||||
content::RenderFrameHost* Opener();
|
||||
content::RenderFrameHost* FocusedFrame();
|
||||
|
||||
WebContentsZoomController* GetZoomController() { return zoom_controller_; }
|
||||
[[nodiscard]] WebContentsZoomController* GetZoomController() const;
|
||||
|
||||
void AddObserver(ExtendedWebContentsObserver* obs) {
|
||||
observers_.AddObserver(obs);
|
||||
@@ -858,11 +858,6 @@ class WebContents final : public ExclusiveAccessContext,
|
||||
// destroyed before dialog_manager_, otherwise a crash would happen.
|
||||
std::unique_ptr<InspectableWebContents> inspectable_web_contents_;
|
||||
|
||||
// The zoom controller for this webContents.
|
||||
// Note: owned by inspectable_web_contents_, so declare this *after*
|
||||
// that field to ensure the dtor destroys them in the right order.
|
||||
raw_ptr<WebContentsZoomController> zoom_controller_ = nullptr;
|
||||
|
||||
std::optional<GURL> pending_unload_url_ = std::nullopt;
|
||||
|
||||
// Maps url to file path, used by the file requests sent from devtools.
|
||||
|
||||
@@ -398,9 +398,7 @@ ExtensionFunction::ResponseAction TabsGetZoomFunction::Run() {
|
||||
if (!contents)
|
||||
return RespondNow(Error("No such tab"));
|
||||
|
||||
double zoom_level = contents->GetZoomController()->GetZoomLevel();
|
||||
double zoom_factor = blink::ZoomLevelToZoomFactor(zoom_level);
|
||||
|
||||
const double zoom_factor = contents->GetZoomFactor();
|
||||
return RespondNow(ArgumentList(tabs::GetZoom::Results::Create(zoom_factor)));
|
||||
}
|
||||
|
||||
@@ -414,9 +412,9 @@ ExtensionFunction::ResponseAction TabsGetZoomSettingsFunction::Run() {
|
||||
if (!contents)
|
||||
return RespondNow(Error("No such tab"));
|
||||
|
||||
auto* zoom_controller = contents->GetZoomController();
|
||||
WebContentsZoomController::ZoomMode zoom_mode =
|
||||
contents->GetZoomController()->zoom_mode();
|
||||
const auto* zoom_controller = contents->GetZoomController();
|
||||
const WebContentsZoomController::ZoomMode zoom_mode =
|
||||
zoom_controller->zoom_mode();
|
||||
tabs::ZoomSettings zoom_settings;
|
||||
ZoomModeToZoomSettings(zoom_mode, &zoom_settings);
|
||||
zoom_settings.default_zoom_factor =
|
||||
|
||||
Reference in New Issue
Block a user