Index: chrome/renderer/chrome_content_renderer_client.cc |
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc |
index caa538279512bf270964417c5d867533e231f46c..0238bda5f6c3766afb498cdb15dd3b6d7f26ff58 100644 |
--- a/chrome/renderer/chrome_content_renderer_client.cc |
+++ b/chrome/renderer/chrome_content_renderer_client.cc |
@@ -756,6 +756,16 @@ bool ChromeContentRendererClient::CrossesExtensionExtents( |
const Extension* new_url_extension = extensions::GetNonBookmarkAppExtension( |
*extensions, ExtensionURLInfo(new_url)); |
+ // If this is a reload, check whether it has the wrong process type. We |
+ // should send it to the browser if it's an extension URL (e.g., hosted app) |
+ // in a normal process, or if it's a process for an extension that has been |
+ // uninstalled. |
+ if (old_url == new_url) { |
darin (slow to review)
2012/01/27 19:34:11
This condition isn't necessarily limited to a relo
nasko
2012/01/27 20:14:56
Hitting enter in the location bar is handled by th
darin (slow to review)
2012/01/27 23:58:35
^^^ what about this last point? is this really th
nasko
2012/01/28 01:43:12
It could be moved to the function that calls this,
|
+ bool is_extension_url = !!new_url_extension; |
+ if (is_extension_url != extension_dispatcher_->is_extension_process()) |
+ return true; |
darin (slow to review)
2012/01/27 23:58:35
what about the reverse case? what if the app is u
nasko
2012/01/28 01:43:12
Yes, if the process "type" mismatches with the cur
|
+ } |
+ |
// If old_url is still empty and this is an initial navigation, then this is |
// a window.open operation. We should look at the opener URL. |
if (is_initial_navigation && old_url.is_empty() && frame->opener()) { |