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 e2b73c38a060c4aeb46459088db05be9bb3de5f9..8da4603ec98707655cc9ade992eef6e6cd4ea16a 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 |
| @@ -10,9 +10,11 @@ |
| #include "chrome/browser/signin/signin_promo.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| +#include "chrome/browser/ui/views/frame/browser_view.h" |
| #include "chrome/common/url_constants.h" |
| #include "components/constrained_window/constrained_window_views.h" |
| #include "components/signin/core/common/profile_management_switches.h" |
| +#include "components/web_modal/web_contents_modal_dialog_host.h" |
| #include "content/public/browser/render_widget_host_view.h" |
| #include "content/public/browser/web_contents.h" |
| #include "ui/views/controls/webview/webview.h" |
| @@ -76,7 +78,12 @@ void SigninViewControllerDelegateViews::PerformClose() { |
| } |
| void SigninViewControllerDelegateViews::ResizeNativeView(int height) { |
| - content_view_->SetPreferredSize(gfx::Size(kModalDialogWidth, height)); |
| + auto max_height = browser_ |
| + ->window() |
| + ->GetWebContentsModalDialogHost() |
| + ->GetMaximumDialogSize().height(); |
| + content_view_->SetPreferredSize( |
| + gfx::Size(kModalDialogWidth, std::min(height, max_height))); |
| content_view_->Layout(); |
| if (wait_for_size_) { |
| @@ -96,18 +103,24 @@ void SigninViewControllerDelegateViews::DisplayModal() { |
| views::WebView* SigninViewControllerDelegateViews::CreateGaiaWebView( |
| content::WebContentsDelegate* delegate, |
| profiles::BubbleViewMode mode, |
| - Profile* profile, |
| + Browser* browser, |
| signin_metrics::AccessPoint access_point) { |
| GURL url = |
| - signin::GetSigninURLFromBubbleViewMode(profile, mode, access_point); |
| + signin::GetSigninURLFromBubbleViewMode( |
| + browser->profile(), mode, access_point); |
| + auto max_height = browser |
| + ->window() |
| + ->GetWebContentsModalDialogHost() |
| + ->GetMaximumDialogSize().height(); |
| // Adds Gaia signin webview. |
| const gfx::Size pref_size = |
| switches::UsePasswordSeparatedSigninFlow() |
| - ? gfx::Size(kModalDialogWidth, kFixedGaiaViewHeight) |
| + ? gfx::Size(kModalDialogWidth, |
| + std::min(kFixedGaiaViewHeight, max_height)) |
| : gfx::Size(kPasswordCombinedFixedGaiaViewWidth, |
| kPasswordCombinedFixedGaiaViewHeight); |
| - views::WebView* web_view = new views::WebView(profile); |
| + views::WebView* web_view = new views::WebView(browser->profile()); |
| web_view->LoadInitialURL(url); |
| if (delegate) |
| @@ -124,11 +137,17 @@ views::WebView* SigninViewControllerDelegateViews::CreateGaiaWebView( |
| views::WebView* |
| SigninViewControllerDelegateViews::CreateSyncConfirmationWebView( |
| - Profile* profile) { |
| - views::WebView* web_view = new views::WebView(profile); |
| + Browser* browser) { |
| + views::WebView* web_view = new views::WebView(browser->profile()); |
| web_view->LoadInitialURL(GURL(chrome::kChromeUISyncConfirmationURL)); |
| + |
| + auto max_height = browser |
|
sky
2016/06/16 16:13:28
'int' is one character shorter than 'auto' and is
anthonyvd
2016/06/17 18:51:49
Done.
|
| + ->window() |
| + ->GetWebContentsModalDialogHost() |
| + ->GetMaximumDialogSize().height(); |
|
sky
2016/06/16 16:13:28
Using Browser here means I have to think about lif
anthonyvd
2016/06/17 18:51:49
This class already uses Browser for many other thi
|
| web_view->SetPreferredSize( |
| - gfx::Size(kModalDialogWidth, kSyncConfirmationDialogHeight)); |
| + gfx::Size(kModalDialogWidth, |
| + std::min(kSyncConfirmationDialogHeight, max_height))); |
| return web_view; |
| } |
| @@ -142,7 +161,7 @@ SigninViewControllerDelegate::CreateModalSigninDelegate( |
| return new SigninViewControllerDelegateViews( |
| signin_view_controller, |
| SigninViewControllerDelegateViews::CreateGaiaWebView( |
| - nullptr, mode, browser->profile(), access_point), |
| + nullptr, mode, browser, access_point), |
| browser, false); |
| } |
| @@ -152,7 +171,6 @@ SigninViewControllerDelegate::CreateSyncConfirmationDelegate( |
| Browser* browser) { |
| return new SigninViewControllerDelegateViews( |
| signin_view_controller, |
| - SigninViewControllerDelegateViews::CreateSyncConfirmationWebView( |
| - browser->profile()), |
| + SigninViewControllerDelegateViews::CreateSyncConfirmationWebView(browser), |
| browser, true); |
| } |