Index: chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc |
diff --git a/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc b/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc |
index 9a650bf4c4adb8718645cd30d06435887fadf8f5..3fc968934143fc105747102ac84e82b0946eb138 100644 |
--- a/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc |
+++ b/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc |
@@ -42,11 +42,13 @@ SigninViewControllerDelegateViews::SigninViewControllerDelegateViews( |
SigninViewController* signin_view_controller, |
std::unique_ptr<views::WebView> content_view, |
Browser* browser, |
+ DialogModalType dialog_modal_type_, |
bool wait_for_size) |
: SigninViewControllerDelegate(signin_view_controller, |
content_view->GetWebContents()), |
content_view_(content_view.release()), |
modal_signin_widget_(nullptr), |
+ dialog_modal_type_(dialog_modal_type_), |
wait_for_size_(wait_for_size), |
browser_(browser) { |
DCHECK(browser_); |
@@ -78,7 +80,14 @@ void SigninViewControllerDelegateViews::DeleteDelegate() { |
} |
ui::ModalType SigninViewControllerDelegateViews::GetModalType() const { |
- return ui::MODAL_TYPE_WINDOW; |
+ switch (dialog_modal_type_) { |
+ case TAB_MODAL: |
+ return ui::MODAL_TYPE_CHILD; |
+ case WINDOW_MODAL: |
+ return ui::MODAL_TYPE_WINDOW; |
Peter Kasting
2017/01/11 01:24:45
Why not just use these values directly everywhere,
msarda
2017/01/11 09:54:25
I hesitated to do that because we only support 2 v
|
+ } |
+ NOTREACHED(); |
+ return ui::MODAL_TYPE_CHILD; |
} |
bool SigninViewControllerDelegateViews::ShouldShowCloseButton() const { |
@@ -121,9 +130,18 @@ void SigninViewControllerDelegateViews::DisplayModal() { |
return; |
gfx::NativeWindow window = host_web_contents->GetTopLevelNativeWindow(); |
- modal_signin_widget_ = |
- constrained_window::CreateBrowserModalDialogViews(this, window); |
- modal_signin_widget_->Show(); |
+ switch (dialog_modal_type_) { |
+ case WINDOW_MODAL: |
+ modal_signin_widget_ = |
+ constrained_window::CreateBrowserModalDialogViews(this, window); |
+ modal_signin_widget_->Show(); |
+ break; |
+ case TAB_MODAL: |
+ modal_signin_widget_ = constrained_window::ShowWebModalDialogViews( |
+ this, browser_->tab_strip_model()->GetActiveWebContents()); |
+ break; |
+ } |
+ content_view_->RequestFocus(); |
} |
// static |
@@ -206,7 +224,7 @@ SigninViewControllerDelegate::CreateModalSigninDelegate( |
signin_view_controller, |
SigninViewControllerDelegateViews::CreateGaiaWebView( |
nullptr, mode, browser, access_point), |
- browser, false); |
+ browser, SigninViewControllerDelegateViews::TAB_MODAL, false); |
} |
SigninViewControllerDelegate* |
@@ -216,7 +234,7 @@ SigninViewControllerDelegate::CreateSyncConfirmationDelegate( |
return new SigninViewControllerDelegateViews( |
signin_view_controller, |
SigninViewControllerDelegateViews::CreateSyncConfirmationWebView(browser), |
- browser, true); |
+ browser, SigninViewControllerDelegateViews::WINDOW_MODAL, true); |
} |
SigninViewControllerDelegate* |
@@ -226,5 +244,5 @@ SigninViewControllerDelegate::CreateSigninErrorDelegate( |
return new SigninViewControllerDelegateViews( |
signin_view_controller, |
SigninViewControllerDelegateViews::CreateSigninErrorWebView(browser), |
- browser, true); |
+ browser, SigninViewControllerDelegateViews::WINDOW_MODAL, true); |
} |