Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: cherry-pick 728c6deeffe1 from chromium (#22981)
- Loading branch information
Showing
2 changed files
with
41 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
40 changes: 40 additions & 0 deletions
40
patches/chromium/speculative_fix_for_crashes_in_filechooserimpl.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Kent Tamura <tkent@chromium.org> | ||
Date: Tue, 25 Feb 2020 01:19:39 +0000 | ||
Subject: Speculative fix for crashes in ~FileChooserImpl() | ||
|
||
FileChooserImpl can outlive ListenerProxy. We should clear | ||
FileChooserImpl::proxy_ on ~ListenerProxy(). | ||
|
||
This CL has no tests. We don't know how to reproduce crashes. | ||
|
||
Bug: 1054260 | ||
Change-Id: I2be7a8957f2f725c51081961357ef09f6dabb823 | ||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2067819 | ||
Commit-Queue: Kent Tamura <tkent@chromium.org> | ||
Reviewed-by: Avi Drissman <avi@chromium.org> | ||
Reviewed-by: Matthew Denton <mpdenton@chromium.org> | ||
Cr-Commit-Position: refs/heads/master@{#744142} | ||
|
||
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc | ||
index a68e9246f5ec435becca41737cf73f6611970e88..e8b3b88be02cf45ea333b55b931676d80da826c8 100644 | ||
--- a/content/browser/frame_host/render_frame_host_impl.cc | ||
+++ b/content/browser/frame_host/render_frame_host_impl.cc | ||
@@ -675,6 +675,8 @@ class FileChooserImpl : public blink::mojom::FileChooser, | ||
std::move(callback_).Run(nullptr); | ||
} | ||
|
||
+ void ResetProxy() { proxy_ = nullptr; } | ||
+ | ||
private: | ||
class ListenerProxy : public content::FileSelectListener { | ||
public: | ||
@@ -685,6 +687,8 @@ class FileChooserImpl : public blink::mojom::FileChooser, | ||
<< "Should call either FileSelectListener::FileSelected() or " | ||
"FileSelectListener::FileSelectionCanceled()"; | ||
#endif | ||
+ if (owner_) | ||
+ owner_->ResetProxy(); | ||
} | ||
void ResetOwner() { owner_ = nullptr; } | ||
|