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 094ad36d1d50d83749d9d5bfccd19cdb8e1cf1c6..1720cb44df05ce9e2848c8e7a28c7d61f73124f5 100644 |
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
@@ -526,8 +526,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) |