Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 1115f80527d5811b2a518473947ab65682847fd5..069f57dfcf379965038604939fe59511559b28f6 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -108,6 +108,7 @@ |
#include "content/renderer/internal_document_state_data.h" |
#include "content/renderer/manifest/manifest_manager.h" |
#include "content/renderer/media/audio_device_factory.h" |
+#include "content/renderer/media/media_devices_listener_impl.h" |
#include "content/renderer/media/media_permission_dispatcher.h" |
#include "content/renderer/media/media_stream_dispatcher.h" |
#include "content/renderer/media/media_stream_renderer_factory_impl.h" |
@@ -5049,6 +5050,13 @@ void RenderFrameImpl::OnFailedNavigation( |
return; |
} |
+ // On load failure, a frame can ask its owner to render fallback content. |
+ // When that happens, don't load an error page. |
+ if (frame_->maybeRenderFallbackContent(error)) { |
+ browser_side_navigation_pending_ = false; |
+ return; |
+ } |
+ |
// Make sure errors are not shown in view source mode. |
frame_->enableViewSourceMode(false); |
@@ -5964,6 +5972,8 @@ void RenderFrameImpl::InitializeUserMediaClient() { |
web_user_media_client_ = new UserMediaClientImpl( |
this, RenderThreadImpl::current()->GetPeerConnectionDependencyFactory(), |
base::MakeUnique<MediaStreamDispatcher>(this)); |
+ GetInterfaceRegistry()->AddInterface( |
+ base::Bind(&MediaDevicesListenerImpl::Create, GetRoutingID())); |
#endif |
} |