Commit 5bbf7a67 authored by W. James MacLean's avatar W. James MacLean Committed by Commit Bot

Avoid calling member fcn after possible delf-deletion.

If RemoveFrameContainerForReason() successfully removes a frame, the
|this| pointer will become invalid. This CL removes a member function
invocation that occurs when |this| might be invalid.

Bug: 1088187
Change-Id: I5abc6f03ff326ebbcfb696205deb5058ec977c78
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2250580
Commit-Queue: James MacLean <wjmaclean@chromium.org>
Reviewed-by: default avatarAlex Moshchuk <alexmos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#780009}
parent 3504572b
...@@ -270,6 +270,8 @@ void MimeHandlerViewContainerManager::RemoveFrameContainerForReason( ...@@ -270,6 +270,8 @@ void MimeHandlerViewContainerManager::RemoveFrameContainerForReason(
bool retain_manager) { bool retain_manager) {
if (!RemoveFrameContainer(frame_container, retain_manager)) if (!RemoveFrameContainer(frame_container, retain_manager))
return; return;
// At this point |this| may be invalid, but it's still OK to call
// RecordInteraction() as it's declared static.
RecordInteraction(event); RecordInteraction(event);
} }
...@@ -298,6 +300,7 @@ void MimeHandlerViewContainerManager::SetShowBeforeUnloadDialog( ...@@ -298,6 +300,7 @@ void MimeHandlerViewContainerManager::SetShowBeforeUnloadDialog(
std::move(callback).Run(); std::move(callback).Run();
} }
// static
void MimeHandlerViewContainerManager::RecordInteraction(UMAType type) { void MimeHandlerViewContainerManager::RecordInteraction(UMAType type) {
base::UmaHistogramEnumeration(MimeHandlerViewUMATypes::kUMAName, type); base::UmaHistogramEnumeration(MimeHandlerViewUMATypes::kUMAName, type);
} }
......
...@@ -111,6 +111,9 @@ class MimeHandlerViewContainerManager ...@@ -111,6 +111,9 @@ class MimeHandlerViewContainerManager
const GURL& resource_url) override; const GURL& resource_url) override;
private: private:
// Static so it can be called after self-deletion.
static void RecordInteraction(MimeHandlerViewUMATypes::Type type);
// PostMessageSupport::Delegate overrides. // PostMessageSupport::Delegate overrides.
blink::WebLocalFrame* GetSourceFrame() override; blink::WebLocalFrame* GetSourceFrame() override;
blink::WebFrame* GetTargetFrame() override; blink::WebFrame* GetTargetFrame() override;
...@@ -126,8 +129,6 @@ class MimeHandlerViewContainerManager ...@@ -126,8 +129,6 @@ class MimeHandlerViewContainerManager
bool show_dialog, bool show_dialog,
SetShowBeforeUnloadDialogCallback callback) override; SetShowBeforeUnloadDialogCallback callback) override;
void RecordInteraction(MimeHandlerViewUMATypes::Type type);
// Returns true if the |element| is managed by // Returns true if the |element| is managed by
// MimeHandlerViewContainerManager; this would be the element that is added by // MimeHandlerViewContainerManager; this would be the element that is added by
// the HTML string injected at MimeHandlerViewAttachHelper. // the HTML string injected at MimeHandlerViewAttachHelper.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment