| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/autofill/autofill_dialog_views.h" | 5 #include "chrome/browser/ui/views/autofill/autofill_dialog_views.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 #include "ui/views/controls/webview/webview.h" | 60 #include "ui/views/controls/webview/webview.h" |
| 61 #include "ui/views/layout/box_layout.h" | 61 #include "ui/views/layout/box_layout.h" |
| 62 #include "ui/views/layout/fill_layout.h" | 62 #include "ui/views/layout/fill_layout.h" |
| 63 #include "ui/views/layout/grid_layout.h" | 63 #include "ui/views/layout/grid_layout.h" |
| 64 #include "ui/views/layout/layout_constants.h" | 64 #include "ui/views/layout/layout_constants.h" |
| 65 #include "ui/views/painter.h" | 65 #include "ui/views/painter.h" |
| 66 #include "ui/views/widget/widget.h" | 66 #include "ui/views/widget/widget.h" |
| 67 #include "ui/views/window/dialog_client_view.h" | 67 #include "ui/views/window/dialog_client_view.h" |
| 68 #include "ui/views/window/non_client_view.h" | 68 #include "ui/views/window/non_client_view.h" |
| 69 | 69 |
| 70 using web_modal::WebContentsModalDialogManager; | |
| 71 using web_modal::WebContentsModalDialogManagerDelegate; | |
| 72 | |
| 73 namespace autofill { | 70 namespace autofill { |
| 74 | 71 |
| 75 namespace { | 72 namespace { |
| 76 | 73 |
| 77 // The width for the section container. | 74 // The width for the section container. |
| 78 const int kSectionContainerWidth = 440; | 75 const int kSectionContainerWidth = 440; |
| 79 | 76 |
| 80 // The minimum useful height of the contents area of the dialog. | 77 // The minimum useful height of the contents area of the dialog. |
| 81 const int kMinimumContentsHeight = 101; | 78 const int kMinimumContentsHeight = 101; |
| 82 | 79 |
| (...skipping 1151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1234 HideErrorBubble(); | 1231 HideErrorBubble(); |
| 1235 DCHECK(!window_); | 1232 DCHECK(!window_); |
| 1236 } | 1233 } |
| 1237 | 1234 |
| 1238 void AutofillDialogViews::Show() { | 1235 void AutofillDialogViews::Show() { |
| 1239 InitChildViews(); | 1236 InitChildViews(); |
| 1240 UpdateAccountChooser(); | 1237 UpdateAccountChooser(); |
| 1241 UpdateNotificationArea(); | 1238 UpdateNotificationArea(); |
| 1242 UpdateButtonStripExtraView(); | 1239 UpdateButtonStripExtraView(); |
| 1243 | 1240 |
| 1244 // Ownership of |contents_| is handed off by this call. The widget will take | 1241 window_ = ShowWebModalDialogViews(this, delegate_->GetWebContents()); |
| 1245 // care of deleting itself after calling DeleteDelegate(). | |
| 1246 WebContentsModalDialogManager* web_contents_modal_dialog_manager = | |
| 1247 WebContentsModalDialogManager::FromWebContents( | |
| 1248 delegate_->GetWebContents()); | |
| 1249 WebContentsModalDialogManagerDelegate* modal_delegate = | |
| 1250 web_contents_modal_dialog_manager->delegate(); | |
| 1251 DCHECK(modal_delegate); | |
| 1252 window_ = views::Widget::CreateWindowAsFramelessChild( | |
| 1253 this, modal_delegate->GetWebContentsModalDialogHost()->GetHostView()); | |
| 1254 web_contents_modal_dialog_manager->ShowModalDialog( | |
| 1255 window_->GetNativeView()); | |
| 1256 focus_manager_ = window_->GetFocusManager(); | 1242 focus_manager_ = window_->GetFocusManager(); |
| 1257 focus_manager_->AddFocusChangeListener(this); | 1243 focus_manager_->AddFocusChangeListener(this); |
| 1258 | 1244 |
| 1259 ShowDialogInMode(DETAIL_INPUT); | 1245 ShowDialogInMode(DETAIL_INPUT); |
| 1260 | 1246 |
| 1261 // Listen for size changes on the browser. | 1247 // Listen for size changes on the browser. |
| 1262 views::Widget* browser_widget = | 1248 views::Widget* browser_widget = |
| 1263 views::Widget::GetTopLevelWidgetForNativeView( | 1249 views::Widget::GetTopLevelWidgetForNativeView( |
| 1264 delegate_->GetWebContents()->GetNativeView()); | 1250 delegate_->GetWebContents()->GetNativeView()); |
| 1265 observer_.Add(browser_widget); | 1251 observer_.Add(browser_widget); |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1529 | 1515 |
| 1530 // NOTE: This color may change because of |auto_color_readability|, set on | 1516 // NOTE: This color may change because of |auto_color_readability|, set on |
| 1531 // |legal_document_view_|. | 1517 // |legal_document_view_|. |
| 1532 views::StyledLabel::RangeStyleInfo default_style; | 1518 views::StyledLabel::RangeStyleInfo default_style; |
| 1533 default_style.color = | 1519 default_style.color = |
| 1534 theme->GetSystemColor(ui::NativeTheme::kColorId_LabelDisabledColor); | 1520 theme->GetSystemColor(ui::NativeTheme::kColorId_LabelDisabledColor); |
| 1535 | 1521 |
| 1536 legal_document_view_->SetDefaultStyle(default_style); | 1522 legal_document_view_->SetDefaultStyle(default_style); |
| 1537 } | 1523 } |
| 1538 | 1524 |
| 1525 ui::ModalType AutofillDialogViews::GetModalType() const { |
| 1526 return ui::MODAL_TYPE_CHILD; |
| 1527 } |
| 1528 |
| 1539 base::string16 AutofillDialogViews::GetWindowTitle() const { | 1529 base::string16 AutofillDialogViews::GetWindowTitle() const { |
| 1540 base::string16 title = delegate_->DialogTitle(); | 1530 base::string16 title = delegate_->DialogTitle(); |
| 1541 // Hack alert: we don't want the dialog to jiggle when a title is added or | 1531 // Hack alert: we don't want the dialog to jiggle when a title is added or |
| 1542 // removed. Setting a non-empty string here keeps the dialog's title bar the | 1532 // removed. Setting a non-empty string here keeps the dialog's title bar the |
| 1543 // same size. | 1533 // same size. |
| 1544 return title.empty() ? base::ASCIIToUTF16(" ") : title; | 1534 return title.empty() ? base::ASCIIToUTF16(" ") : title; |
| 1545 } | 1535 } |
| 1546 | 1536 |
| 1547 void AutofillDialogViews::WindowClosing() { | 1537 void AutofillDialogViews::WindowClosing() { |
| 1548 focus_manager_->RemoveFocusChangeListener(this); | 1538 focus_manager_->RemoveFocusChangeListener(this); |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1801 return gfx::Size(width + insets.width(), height + insets.height()); | 1791 return gfx::Size(width + insets.width(), height + insets.height()); |
| 1802 } | 1792 } |
| 1803 | 1793 |
| 1804 gfx::Size AutofillDialogViews::GetMinimumSignInViewSize() const { | 1794 gfx::Size AutofillDialogViews::GetMinimumSignInViewSize() const { |
| 1805 return gfx::Size(GetDialogClientView()->size().width() - GetInsets().width(), | 1795 return gfx::Size(GetDialogClientView()->size().width() - GetInsets().width(), |
| 1806 kMinimumContentsHeight); | 1796 kMinimumContentsHeight); |
| 1807 } | 1797 } |
| 1808 | 1798 |
| 1809 gfx::Size AutofillDialogViews::GetMaximumSignInViewSize() const { | 1799 gfx::Size AutofillDialogViews::GetMaximumSignInViewSize() const { |
| 1810 web_modal::WebContentsModalDialogHost* dialog_host = | 1800 web_modal::WebContentsModalDialogHost* dialog_host = |
| 1811 WebContentsModalDialogManager::FromWebContents( | 1801 web_modal::WebContentsModalDialogManager::FromWebContents( |
| 1812 delegate_->GetWebContents())->delegate()-> | 1802 delegate_->GetWebContents())->delegate()-> |
| 1813 GetWebContentsModalDialogHost(); | 1803 GetWebContentsModalDialogHost(); |
| 1814 | 1804 |
| 1815 // Inset the maximum dialog height to get the maximum content height. | 1805 // Inset the maximum dialog height to get the maximum content height. |
| 1816 int height = dialog_host->GetMaximumDialogSize().height(); | 1806 int height = dialog_host->GetMaximumDialogSize().height(); |
| 1817 const int non_client_height = GetWidget()->non_client_view()->height(); | 1807 const int non_client_height = GetWidget()->non_client_view()->height(); |
| 1818 const int client_height = GetWidget()->client_view()->height(); | 1808 const int client_height = GetWidget()->client_view()->height(); |
| 1819 // TODO(msw): Resolve the 12 pixel discrepancy; is that the bubble border? | 1809 // TODO(msw): Resolve the 12 pixel discrepancy; is that the bubble border? |
| 1820 height -= non_client_height - client_height - 12; | 1810 height -= non_client_height - client_height - 12; |
| 1821 height = std::max(height, kMinimumContentsHeight); | 1811 height = std::max(height, kMinimumContentsHeight); |
| (...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2323 if (updates_scope_ != 0) { | 2313 if (updates_scope_ != 0) { |
| 2324 needs_update_ = true; | 2314 needs_update_ = true; |
| 2325 return; | 2315 return; |
| 2326 } | 2316 } |
| 2327 | 2317 |
| 2328 preferred_size_ = gfx::Size(); | 2318 preferred_size_ = gfx::Size(); |
| 2329 | 2319 |
| 2330 if (GetWidget() && delegate_ && delegate_->GetWebContents()) { | 2320 if (GetWidget() && delegate_ && delegate_->GetWebContents()) { |
| 2331 UpdateWebContentsModalDialogPosition( | 2321 UpdateWebContentsModalDialogPosition( |
| 2332 GetWidget(), | 2322 GetWidget(), |
| 2333 WebContentsModalDialogManager::FromWebContents( | 2323 web_modal::WebContentsModalDialogManager::FromWebContents( |
| 2334 delegate_->GetWebContents())->delegate()-> | 2324 delegate_->GetWebContents())->delegate()-> |
| 2335 GetWebContentsModalDialogHost()); | 2325 GetWebContentsModalDialogHost()); |
| 2336 SetBoundsRect(bounds()); | 2326 SetBoundsRect(bounds()); |
| 2337 } | 2327 } |
| 2338 } | 2328 } |
| 2339 | 2329 |
| 2340 AutofillDialogViews::DetailsGroup* AutofillDialogViews::GroupForSection( | 2330 AutofillDialogViews::DetailsGroup* AutofillDialogViews::GroupForSection( |
| 2341 DialogSection section) { | 2331 DialogSection section) { |
| 2342 return &detail_groups_.find(section)->second; | 2332 return &detail_groups_.find(section)->second; |
| 2343 } | 2333 } |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2512 AutofillDialogViews::DetailsGroup::DetailsGroup(DialogSection section) | 2502 AutofillDialogViews::DetailsGroup::DetailsGroup(DialogSection section) |
| 2513 : section(section), | 2503 : section(section), |
| 2514 container(NULL), | 2504 container(NULL), |
| 2515 manual_input(NULL), | 2505 manual_input(NULL), |
| 2516 suggested_info(NULL), | 2506 suggested_info(NULL), |
| 2517 suggested_button(NULL) {} | 2507 suggested_button(NULL) {} |
| 2518 | 2508 |
| 2519 AutofillDialogViews::DetailsGroup::~DetailsGroup() {} | 2509 AutofillDialogViews::DetailsGroup::~DetailsGroup() {} |
| 2520 | 2510 |
| 2521 } // namespace autofill | 2511 } // namespace autofill |
| OLD | NEW |