Commit cd4b0faf authored by Quan Nguyen's avatar Quan Nguyen Committed by Commit Bot

cros: Implement media access permissions in OOBE dialog.

In order to enable webcam-based login (e.g. QR code signin), the OOBE web dialog now implements RequestMediaAccessPermission and CheckMediaAccessPermission.

Bug: 868188
Change-Id: I4de25b3b194d2ecc207ca9ff1866809ad357b55c
Reviewed-on: https://chromium-review.googlesource.com/1178111Reviewed-by: default avatarJacob Dufault <jdufault@chromium.org>
Commit-Queue: Quan Nguyen <qnnguyen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583759}
parent 0d423099
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "chrome/browser/chromeos/login/ui/login_display_host_mojo.h" #include "chrome/browser/chromeos/login/ui/login_display_host_mojo.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
#include "chrome/browser/ui/ash/ash_util.h" #include "chrome/browser/ui/ash/ash_util.h"
#include "chrome/browser/ui/ash/login_screen_client.h" #include "chrome/browser/ui/ash/login_screen_client.h"
#include "chrome/browser/ui/ash/tablet_mode_client.h" #include "chrome/browser/ui/ash/tablet_mode_client.h"
...@@ -36,6 +37,31 @@ constexpr char kCancel[] = "cancel"; ...@@ -36,6 +37,31 @@ constexpr char kCancel[] = "cancel";
} // namespace } // namespace
class OobeWebDialogView : public views::WebDialogView {
public:
OobeWebDialogView(content::BrowserContext* context,
ui::WebDialogDelegate* delegate,
WebContentsHandler* handler)
: views::WebDialogView(context, delegate, handler) {}
// views::WebDialogView:
void RequestMediaAccessPermission(
content::WebContents* web_contents,
const content::MediaStreamRequest& request,
content::MediaResponseCallback callback) override {
// This is required for accessing the camera for SAML logins.
MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest(
web_contents, request, std::move(callback), nullptr /* extension */);
}
bool CheckMediaAccessPermission(content::RenderFrameHost* render_frame_host,
const GURL& security_origin,
content::MediaStreamType type) override {
return MediaCaptureDevicesDispatcher::GetInstance()
->CheckMediaAccessPermission(render_frame_host, security_origin, type);
}
};
OobeUIDialogDelegate::OobeUIDialogDelegate( OobeUIDialogDelegate::OobeUIDialogDelegate(
base::WeakPtr<LoginDisplayHostMojo> controller) base::WeakPtr<LoginDisplayHostMojo> controller)
: controller_(controller), : controller_(controller),
...@@ -62,8 +88,8 @@ OobeUIDialogDelegate::OobeUIDialogDelegate( ...@@ -62,8 +88,8 @@ OobeUIDialogDelegate::OobeUIDialogDelegate(
// Widget owns a root view which has |dialog_view_| as its child view. // Widget owns a root view which has |dialog_view_| as its child view.
// Before the widget is destroyed, it will clean up the view hierarchy // Before the widget is destroyed, it will clean up the view hierarchy
// starting from root view. // starting from root view.
dialog_view_ = new views::WebDialogView(ProfileHelper::GetSigninProfile(), dialog_view_ = new OobeWebDialogView(ProfileHelper::GetSigninProfile(), this,
this, new ChromeWebContentsHandler); new ChromeWebContentsHandler);
views::Widget::InitParams params( views::Widget::InitParams params(
views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
params.delegate = dialog_view_; params.delegate = dialog_view_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment