Index: extensions/browser/web_ui_user_script_loader.cc |
diff --git a/extensions/browser/web_ui_user_script_loader.cc b/extensions/browser/web_ui_user_script_loader.cc |
index facbadb0ee2ed8f91890418bdd723eb0550b02aa..1ef9b755c79727b0577a0274de43032d72118daf 100644 |
--- a/extensions/browser/web_ui_user_script_loader.cc |
+++ b/extensions/browser/web_ui_user_script_loader.cc |
@@ -86,14 +86,22 @@ void WebUIUserScriptLoader::LoadScripts( |
int render_process_id = iter->second.render_process_id; |
int render_frame_id = iter->second.render_frame_id; |
- content::BrowserContext* browser_context = |
- content::RenderProcessHost::FromID(render_process_id) |
- ->GetBrowserContext(); |
- |
- CreateWebUIURLFetchers(script->js_scripts(), browser_context, |
- render_process_id, render_frame_id); |
- CreateWebUIURLFetchers(script->css_scripts(), browser_context, |
- render_process_id, render_frame_id); |
+ content::RenderProcessHost* render_process_host = |
+ content::RenderProcessHost::FromID(render_process_id); |
+ |
+ // LoadScripts may not be synchronous with AddScripts. Hence the |
+ // |render_process_host| may no longer be alive. This should fix |
+ // crbug.com/720331. TODO(karandeepb): Investigate if there are any side |
+ // effects of the render process host no longer being alive and add a test. |
+ if (render_process_host) { |
+ content::BrowserContext* browser_context = |
+ render_process_host->GetBrowserContext(); |
+ |
+ CreateWebUIURLFetchers(script->js_scripts(), browser_context, |
+ render_process_id, render_frame_id); |
+ CreateWebUIURLFetchers(script->css_scripts(), browser_context, |
+ render_process_id, render_frame_id); |
+ } |
script_render_info_map_.erase(script->id()); |
} |