Index: content/browser/media/cdm/browser_cdm_manager.cc |
diff --git a/content/browser/media/cdm/browser_cdm_manager.cc b/content/browser/media/cdm/browser_cdm_manager.cc |
index 99c763d9360e33824b37a267274d3dc0fa8b0027..92720d3d11f3ed81a1a9f724bd85366bb0c1da57 100644 |
--- a/content/browser/media/cdm/browser_cdm_manager.cc |
+++ b/content/browser/media/cdm/browser_cdm_manager.cc |
@@ -81,7 +81,11 @@ BrowserCdmManager::~BrowserCdmManager() { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
DCHECK(g_browser_cdm_manager_map.Get().count(render_process_id_)); |
- g_browser_cdm_manager_map.Get().erase(render_process_id_); |
+ // If an entry of |render_process_id| was overwritten, we shouldn't remove |
+ // the entry. For example, see FrameTreeBrowserTest.FrameTreeAfterCrash test, |
+ // and http://crbug.com/430251. |
+ if (g_browser_cdm_manager_map.Get()[render_process_id_] == this) |
+ g_browser_cdm_manager_map.Get().erase(render_process_id_); |
} |
// Makes sure BrowserCdmManager is always deleted on the Browser UI thread. |