0

PdfViewWebPlugin: Clear dangling

Enabling MiraclePtr in the renderer process surfaced a transient
dangling pointer between two members of `PdfViewWebPlugin`.

This can be seen by running the `browser_tests` suite on
`linux-chromeos-rel` in these two tests:

*   `PrintBrowserTest.MultipagePrint`

*   `SitePerProcessPrintBrowserTest.MultipagePrint`

Bug: 1444624
Change-Id: I4b16db941f7f46276f605927dcc287f7534defe0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4918733
Reviewed-by: Nigi <nigi@chromium.org>
Commit-Queue: Kalvin Lee <kdlee@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1207453}
This commit is contained in:
Kalvin Lee
2023-10-10 04:33:21 +00:00
committed by Chromium LUCI CQ
parent 16fa408e4f
commit 712b3f65f6

@ -2290,6 +2290,12 @@ void PdfViewWebPlugin::LoadAvailablePreviewPage() {
void PdfViewWebPlugin::DidOpenPreview(std::unique_ptr<UrlLoader> loader,
int32_t result) {
DCHECK_EQ(result, kSuccess);
// `preview_engine_` holds a `raw_ptr` to `preview_client_`.
// We need to explicitly destroy it before clobbering
// `preview_client_` to dodge lifetime issues.
preview_engine_.reset();
preview_client_ = std::make_unique<PreviewModeClient>(this);
preview_engine_ = client_->CreateEngine(
preview_client_.get(), PDFiumFormFiller::ScriptOption::kNoJavaScript);