Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Unified Diff: chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc

Issue 2059363004: Gracefully handle extremely small windows in tab-modal sign in flow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change auto to int. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..7d95a666ff0b34aaf901aa5506d96d013f404bd0 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));
+ int 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);
+ int 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));
+
+ int max_height = browser
+ ->window()
+ ->GetWebContentsModalDialogHost()
+ ->GetMaximumDialogSize().height();
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);
}
« no previous file with comments | « chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698