Index: chrome/browser/chrome_content_browser_client.cc |
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc |
index 260c28e23b0541928285fb393f15dd3911d183e2..435d13dd779a66eb855026066695e4048213b842 100644 |
--- a/chrome/browser/chrome_content_browser_client.cc |
+++ b/chrome/browser/chrome_content_browser_client.cc |
@@ -97,6 +97,7 @@ |
#include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" |
#include "chrome/browser/ui/webui/log_web_ui_url.h" |
#include "chrome/browser/usb/usb_tab_helper.h" |
+#include "chrome/browser/webauth/authenticator_web_contents_manager.h" |
#include "chrome/common/channel_info.h" |
#include "chrome/common/chrome_constants.h" |
#include "chrome/common/chrome_features.h" |
@@ -892,6 +893,19 @@ void GetGuestViewDefaultContentSettingRules( |
} |
#endif // BUILDFLAG(ENABLE_EXTENSIONS) |
+void CreateAuthenticatorForWebContents( |
+ content::RenderFrameHost* render_frame_host, |
+ mojo::InterfaceRequest<webauth::mojom::Authenticator> request) { |
+ content::WebContents* web_contents = |
+ content::WebContents::FromRenderFrameHost(render_frame_host); |
+ if (!web_contents) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ AuthenticatorWebContentsManager::GetOrCreateForWebContents(web_contents) |
+ ->CreateAuthenticator(render_frame_host, std::move(request)); |
+} |
+ |
void CreateUsbDeviceManager( |
RenderFrameHost* render_frame_host, |
mojo::InterfaceRequest<device::usb::DeviceManager> request) { |
@@ -3219,6 +3233,12 @@ void ChromeContentBrowserClient::RegisterRenderFrameMojoInterfaces( |
} |
#endif |
+ if (AreExperimentalWebPlatformFeaturesEnabled() && |
+ base::FeatureList::IsEnabled(features::kWebAuth)) { |
+ registry->AddInterface( |
+ base::Bind(&CreateAuthenticatorForWebContents, render_frame_host)); |
+ } |
+ |
#if defined(OS_LINUX) || defined(OS_WIN) |
if (!ChromeOriginTrialPolicy().IsFeatureDisabled("WebShare")) { |
registry->AddInterface(base::Bind(&ShareServiceImpl::Create)); |