Index: extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container.cc |
diff --git a/extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container.cc b/extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container.cc |
index 9c502565f6f0bf0d19912e2bcaa86211f381395e..59f83407e3e02ac5ec5ccae451befb8a758af1e2 100644 |
--- a/extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container.cc |
+++ b/extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container.cc |
@@ -102,9 +102,11 @@ MimeHandlerViewContainer::~MimeHandlerViewContainer() { |
if (loader_) |
loader_->cancel(); |
- g_mime_handler_view_container_map.Get()[render_frame()].erase(this); |
- if (g_mime_handler_view_container_map.Get()[render_frame()].empty()) |
- g_mime_handler_view_container_map.Get().erase(render_frame()); |
+ if (render_frame()) { |
+ g_mime_handler_view_container_map.Get()[render_frame()].erase(this); |
+ if (g_mime_handler_view_container_map.Get()[render_frame()].empty()) |
+ g_mime_handler_view_container_map.Get().erase(render_frame()); |
+ } |
} |
// static |
@@ -119,6 +121,9 @@ MimeHandlerViewContainer::FromRenderFrame(content::RenderFrame* render_frame) { |
} |
void MimeHandlerViewContainer::Ready() { |
+ if (!render_frame()) |
+ return; |
+ |
blink::WebFrame* frame = render_frame()->GetWebFrame(); |
blink::WebURLLoaderOptions options; |
// The embedded plugin is allowed to be cross-origin. |
@@ -137,6 +142,10 @@ void MimeHandlerViewContainer::DidFinishLoading() { |
CreateMimeHandlerViewGuest(); |
} |
+void MimeHandlerViewContainer::OnRenderFrameDestroyed() { |
+ g_mime_handler_view_container_map.Get().erase(render_frame()); |
+} |
+ |
void MimeHandlerViewContainer::DidReceiveData(const char* data, |
int data_length) { |
view_id_ += std::string(data, data_length); |