Chromium Code Reviews| 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); |
| } |