Index: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
index cbccea389687ba2bf3b19ea9876b0f3f3d778a53..fae7d1eb702d0d684cdcd3026ecbf43a5467eefc 100644 |
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
@@ -511,8 +511,13 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( |
ui::PageTransition page_transition, |
bool has_user_gesture) { |
#if defined(ENABLE_EXTENSIONS) |
- if (extensions::WebViewRendererState::GetInstance()->IsGuest(child_id)) |
+ // External protocols are disabled for guests. An exception is made for the |
+ // "mailto" protocol, so that pages that utilize it work properly in a |
+ // WebView. |
+ if (extensions::WebViewRendererState::GetInstance()->IsGuest(child_id) && |
+ !url.SchemeIs(url::kMailToScheme)) { |
return false; |
+ } |
#endif // defined(ENABLE_EXTENSIONS) |
#if defined(OS_ANDROID) |