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

Side by Side Diff: chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc

Issue 2907983002: Allow dialogs to use a custom View as their title. (Closed)
Patch Set: merge Created 3 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/passwords/manage_passwords_bubble_view.h" 5 #include "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/metrics/user_metrics.h" 8 #include "base/metrics/user_metrics.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/timer/timer.h" 10 #include "base/timer/timer.h"
(...skipping 15 matching lines...) Expand all
26 #include "chrome/grit/generated_resources.h" 26 #include "chrome/grit/generated_resources.h"
27 #include "components/password_manager/core/common/password_manager_features.h" 27 #include "components/password_manager/core/common/password_manager_features.h"
28 #include "components/strings/grit/components_strings.h" 28 #include "components/strings/grit/components_strings.h"
29 #include "ui/base/l10n/l10n_util.h" 29 #include "ui/base/l10n/l10n_util.h"
30 #include "ui/base/material_design/material_design_controller.h" 30 #include "ui/base/material_design/material_design_controller.h"
31 #include "ui/base/resource/resource_bundle.h" 31 #include "ui/base/resource/resource_bundle.h"
32 #include "ui/base/ui_features.h" 32 #include "ui/base/ui_features.h"
33 #include "ui/gfx/color_palette.h" 33 #include "ui/gfx/color_palette.h"
34 #include "ui/gfx/image/image_skia.h" 34 #include "ui/gfx/image/image_skia.h"
35 #include "ui/native_theme/native_theme.h" 35 #include "ui/native_theme/native_theme.h"
36 #include "ui/views/bubble/bubble_frame_view.h"
36 #include "ui/views/controls/button/blue_button.h" 37 #include "ui/views/controls/button/blue_button.h"
37 #include "ui/views/controls/button/md_text_button.h" 38 #include "ui/views/controls/button/md_text_button.h"
38 #include "ui/views/controls/link.h" 39 #include "ui/views/controls/link.h"
39 #include "ui/views/controls/link_listener.h" 40 #include "ui/views/controls/link_listener.h"
40 #include "ui/views/controls/separator.h" 41 #include "ui/views/controls/separator.h"
41 #include "ui/views/controls/styled_label.h" 42 #include "ui/views/controls/styled_label.h"
42 #include "ui/views/controls/styled_label_listener.h"
43 #include "ui/views/layout/fill_layout.h" 43 #include "ui/views/layout/fill_layout.h"
44 #include "ui/views/layout/grid_layout.h" 44 #include "ui/views/layout/grid_layout.h"
45 #include "ui/views/widget/widget.h" 45 #include "ui/views/widget/widget.h"
46 46
47 #if !defined(OS_MACOSX) || BUILDFLAG(MAC_VIEWS_BROWSER) 47 #if !defined(OS_MACOSX) || BUILDFLAG(MAC_VIEWS_BROWSER)
48 #include "chrome/browser/ui/views/frame/browser_view.h" 48 #include "chrome/browser/ui/views/frame/browser_view.h"
49 #endif 49 #endif
50 50
51 #if defined(OS_WIN) 51 #if defined(OS_WIN)
52 #include "chrome/browser/ui/views/desktop_ios_promotion/desktop_ios_promotion_bu bble_view.h" 52 #include "chrome/browser/ui/views/desktop_ios_promotion/desktop_ios_promotion_bu bble_view.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 break; 164 break;
165 } 165 }
166 } 166 }
167 167
168 views::StyledLabel::RangeStyleInfo GetLinkStyle() { 168 views::StyledLabel::RangeStyleInfo GetLinkStyle() {
169 auto result = views::StyledLabel::RangeStyleInfo::CreateForLink(); 169 auto result = views::StyledLabel::RangeStyleInfo::CreateForLink();
170 result.disable_line_wrapping = false; 170 result.disable_line_wrapping = false;
171 return result; 171 return result;
172 } 172 }
173 173
174 // If a special title is required (i.e. one that contains links), creates a
175 // title view and a row for it in |layout|.
176 // TODO(estade): this should be removed and a replaced by a normal title (via
177 // GetWindowTitle).
178 void AddTitleRowWithLink(views::GridLayout* layout,
179 ManagePasswordsBubbleModel* model,
180 views::StyledLabelListener* listener) {
181 if (model->title_brand_link_range().is_empty())
182 return;
183
184 views::StyledLabel* title_label =
185 new views::StyledLabel(model->title(), listener);
186 title_label->SetBaseFontList(views::style::GetFont(
187 views::style::CONTEXT_DIALOG_TITLE, views::style::STYLE_PRIMARY));
188 title_label->AddStyleRange(model->title_brand_link_range(), GetLinkStyle());
189 layout->StartRow(0, SINGLE_VIEW_COLUMN_SET);
190 layout->AddView(title_label);
191 layout->AddPaddingRow(0, ChromeLayoutProvider::Get()
192 ->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS)
193 .top());
194 }
195
196 } // namespace 174 } // namespace
197 175
198 // ManagePasswordsBubbleView::AutoSigninView ---------------------------------- 176 // ManagePasswordsBubbleView::AutoSigninView ----------------------------------
199 177
200 // A view containing just one credential that was used for for automatic signing 178 // A view containing just one credential that was used for for automatic signing
201 // in. 179 // in.
202 class ManagePasswordsBubbleView::AutoSigninView 180 class ManagePasswordsBubbleView::AutoSigninView
203 : public views::View, 181 : public views::View,
204 public views::ButtonListener, 182 public views::ButtonListener,
205 public views::WidgetObserver { 183 public views::WidgetObserver {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 void ManagePasswordsBubbleView::AutoSigninView::OnTimer() { 262 void ManagePasswordsBubbleView::AutoSigninView::OnTimer() {
285 parent_->model()->OnAutoSignInToastTimeout(); 263 parent_->model()->OnAutoSignInToastTimeout();
286 parent_->CloseBubble(); 264 parent_->CloseBubble();
287 } 265 }
288 266
289 // ManagePasswordsBubbleView::PendingView ------------------------------------- 267 // ManagePasswordsBubbleView::PendingView -------------------------------------
290 268
291 // A view offering the user the ability to save credentials. Contains a 269 // A view offering the user the ability to save credentials. Contains a
292 // single ManagePasswordItemsView, along with a "Save Passwords" button, 270 // single ManagePasswordItemsView, along with a "Save Passwords" button,
293 // a "Never" button and an "Edit" button to edit username field. 271 // a "Never" button and an "Edit" button to edit username field.
294 class ManagePasswordsBubbleView::PendingView 272 class ManagePasswordsBubbleView::PendingView : public views::View,
295 : public views::View, 273 public views::ButtonListener {
296 public views::ButtonListener,
297 public views::StyledLabelListener {
298 public: 274 public:
299 explicit PendingView(ManagePasswordsBubbleView* parent); 275 explicit PendingView(ManagePasswordsBubbleView* parent);
300 ~PendingView() override; 276 ~PendingView() override;
301 277
302 private: 278 private:
303 // views::ButtonListener: 279 // views::ButtonListener:
304 void ButtonPressed(views::Button* sender, const ui::Event& event) override; 280 void ButtonPressed(views::Button* sender, const ui::Event& event) override;
305 281
306 // views::StyledLabelListener:
307 void StyledLabelLinkClicked(views::StyledLabel* label,
308 const gfx::Range& range,
309 int event_flags) override;
310
311 ManagePasswordsBubbleView* parent_; 282 ManagePasswordsBubbleView* parent_;
312 283
313 views::Button* edit_button_; 284 views::Button* edit_button_;
314 views::Button* save_button_; 285 views::Button* save_button_;
315 views::Button* never_button_; 286 views::Button* never_button_;
316 287
317 DISALLOW_COPY_AND_ASSIGN(PendingView); 288 DISALLOW_COPY_AND_ASSIGN(PendingView);
318 }; 289 };
319 290
320 ManagePasswordsBubbleView::PendingView::PendingView( 291 ManagePasswordsBubbleView::PendingView::PendingView(
(...skipping 13 matching lines...) Expand all
334 password_manager::features::kEnableUsernameCorrection)) { 305 password_manager::features::kEnableUsernameCorrection)) {
335 edit_button_ = views::MdTextButton::CreateSecondaryUiButton( 306 edit_button_ = views::MdTextButton::CreateSecondaryUiButton(
336 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_EDIT_BUTTON)); 307 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_EDIT_BUTTON));
337 } 308 }
338 save_button_ = views::MdTextButton::CreateSecondaryUiBlueButton( 309 save_button_ = views::MdTextButton::CreateSecondaryUiBlueButton(
339 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SAVE_BUTTON)); 310 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SAVE_BUTTON));
340 never_button_ = views::MdTextButton::CreateSecondaryUiButton( 311 never_button_ = views::MdTextButton::CreateSecondaryUiButton(
341 this, 312 this,
342 l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_BUBBLE_BLACKLIST_BUTTON)); 313 l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_BUBBLE_BLACKLIST_BUTTON));
343 314
344 // Title row.
345 BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET); 315 BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET);
346 AddTitleRowWithLink(layout, parent_->model(), this);
347 316
348 // Credential row. 317 // Credential row.
349 if (item) { 318 if (item) {
350 layout->StartRow(0, SINGLE_VIEW_COLUMN_SET); 319 layout->StartRow(0, SINGLE_VIEW_COLUMN_SET);
351 layout->AddView(item); 320 layout->AddView(item);
352 layout->AddPaddingRow(0, 321 layout->AddPaddingRow(0,
353 ChromeLayoutProvider::Get() 322 ChromeLayoutProvider::Get()
354 ->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS) 323 ->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS)
355 .bottom()); 324 .bottom());
356 } 325 }
(...skipping 29 matching lines...) Expand all
386 } 355 }
387 } else if (sender == never_button_) { 356 } else if (sender == never_button_) {
388 parent_->model()->OnNeverForThisSiteClicked(); 357 parent_->model()->OnNeverForThisSiteClicked();
389 } else { 358 } else {
390 NOTREACHED(); 359 NOTREACHED();
391 } 360 }
392 361
393 parent_->CloseBubble(); 362 parent_->CloseBubble();
394 } 363 }
395 364
396 void ManagePasswordsBubbleView::PendingView::StyledLabelLinkClicked(
397 views::StyledLabel* label,
398 const gfx::Range& range,
399 int event_flags) {
400 DCHECK_EQ(range, parent_->model()->title_brand_link_range());
401 parent_->model()->OnBrandLinkClicked();
402 }
403
404 // ManagePasswordsBubbleView::ManageView -------------------------------------- 365 // ManagePasswordsBubbleView::ManageView --------------------------------------
405 366
406 // A view offering the user a list of their currently saved credentials 367 // A view offering the user a list of their currently saved credentials
407 // for the current page, along with a "Manage passwords" link and a 368 // for the current page, along with a "Manage passwords" link and a
408 // "Done" button. 369 // "Done" button.
409 class ManagePasswordsBubbleView::ManageView : public views::View, 370 class ManagePasswordsBubbleView::ManageView : public views::View,
410 public views::ButtonListener, 371 public views::ButtonListener,
411 public views::LinkListener { 372 public views::LinkListener {
412 public: 373 public:
413 explicit ManageView(ManagePasswordsBubbleView* parent); 374 explicit ManageView(ManagePasswordsBubbleView* parent);
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 } 595 }
635 596
636 // ManagePasswordsBubbleView::UpdatePendingView ------------------------------- 597 // ManagePasswordsBubbleView::UpdatePendingView -------------------------------
637 598
638 // A view offering the user the ability to update credentials. Contains a 599 // A view offering the user the ability to update credentials. Contains a
639 // single ManagePasswordItemsView (in case of one credentials) or 600 // single ManagePasswordItemsView (in case of one credentials) or
640 // CredentialsSelectionView otherwise, along with a "Update Passwords" button 601 // CredentialsSelectionView otherwise, along with a "Update Passwords" button
641 // and a rejection button. 602 // and a rejection button.
642 class ManagePasswordsBubbleView::UpdatePendingView 603 class ManagePasswordsBubbleView::UpdatePendingView
643 : public views::View, 604 : public views::View,
644 public views::ButtonListener, 605 public views::ButtonListener {
645 public views::StyledLabelListener {
646 public: 606 public:
647 explicit UpdatePendingView(ManagePasswordsBubbleView* parent); 607 explicit UpdatePendingView(ManagePasswordsBubbleView* parent);
648 ~UpdatePendingView() override; 608 ~UpdatePendingView() override;
649 609
650 private: 610 private:
651 // views::ButtonListener: 611 // views::ButtonListener:
652 void ButtonPressed(views::Button* sender, const ui::Event& event) override; 612 void ButtonPressed(views::Button* sender, const ui::Event& event) override;
653 613
654 // views::StyledLabelListener:
655 void StyledLabelLinkClicked(views::StyledLabel* label,
656 const gfx::Range& range,
657 int event_flags) override;
658
659 ManagePasswordsBubbleView* parent_; 614 ManagePasswordsBubbleView* parent_;
660 615
661 CredentialsSelectionView* selection_view_; 616 CredentialsSelectionView* selection_view_;
662 617
663 views::Button* update_button_; 618 views::Button* update_button_;
664 views::Button* nope_button_; 619 views::Button* nope_button_;
665 620
666 DISALLOW_COPY_AND_ASSIGN(UpdatePendingView); 621 DISALLOW_COPY_AND_ASSIGN(UpdatePendingView);
667 }; 622 };
668 623
(...skipping 13 matching lines...) Expand all
682 } else { 637 } else {
683 item = new ManagePasswordItemsView(parent_->model(), 638 item = new ManagePasswordItemsView(parent_->model(),
684 &parent->model()->pending_password()); 639 &parent->model()->pending_password());
685 } 640 }
686 nope_button_ = views::MdTextButton::CreateSecondaryUiButton( 641 nope_button_ = views::MdTextButton::CreateSecondaryUiButton(
687 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_CANCEL_BUTTON)); 642 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_CANCEL_BUTTON));
688 643
689 update_button_ = views::MdTextButton::CreateSecondaryUiBlueButton( 644 update_button_ = views::MdTextButton::CreateSecondaryUiBlueButton(
690 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_UPDATE_BUTTON)); 645 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_UPDATE_BUTTON));
691 646
692 // Title row.
693 BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET); 647 BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET);
694 AddTitleRowWithLink(layout, parent_->model(), this);
695 648
696 // Credential row. 649 // Credential row.
697 layout->StartRow(0, SINGLE_VIEW_COLUMN_SET); 650 layout->StartRow(0, SINGLE_VIEW_COLUMN_SET);
698 layout->AddView(item); 651 layout->AddView(item);
699 layout->AddPaddingRow( 652 layout->AddPaddingRow(
700 0, 653 0,
701 layout_provider->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS).bottom()); 654 layout_provider->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS).bottom());
702 655
703 // Button row. 656 // Button row.
704 BuildColumnSet(layout, DOUBLE_BUTTON_COLUMN_SET); 657 BuildColumnSet(layout, DOUBLE_BUTTON_COLUMN_SET);
(...skipping 19 matching lines...) Expand all
724 *selection_view_->GetSelectedCredentials()); 677 *selection_view_->GetSelectedCredentials());
725 } else { 678 } else {
726 parent_->model()->OnUpdateClicked(parent_->model()->pending_password()); 679 parent_->model()->OnUpdateClicked(parent_->model()->pending_password());
727 } 680 }
728 } else { 681 } else {
729 parent_->model()->OnNopeUpdateClicked(); 682 parent_->model()->OnNopeUpdateClicked();
730 } 683 }
731 parent_->CloseBubble(); 684 parent_->CloseBubble();
732 } 685 }
733 686
734 void ManagePasswordsBubbleView::UpdatePendingView::StyledLabelLinkClicked(
735 views::StyledLabel* label,
736 const gfx::Range& range,
737 int event_flags) {
738 DCHECK_EQ(range, parent_->model()->title_brand_link_range());
739 parent_->model()->OnBrandLinkClicked();
740 }
741
742 // ManagePasswordsBubbleView -------------------------------------------------- 687 // ManagePasswordsBubbleView --------------------------------------------------
743 688
744 // static 689 // static
745 ManagePasswordsBubbleView* ManagePasswordsBubbleView::manage_passwords_bubble_ = 690 ManagePasswordsBubbleView* ManagePasswordsBubbleView::manage_passwords_bubble_ =
746 NULL; 691 NULL;
747 692
748 #if !defined(OS_MACOSX) || BUILDFLAG(MAC_VIEWS_BROWSER) 693 #if !defined(OS_MACOSX) || BUILDFLAG(MAC_VIEWS_BROWSER)
749 // static 694 // static
750 void ManagePasswordsBubbleView::ShowBubble( 695 void ManagePasswordsBubbleView::ShowBubble(
751 content::WebContents* web_contents, 696 content::WebContents* web_contents,
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 SetLayoutManager(new views::FillLayout); 786 SetLayoutManager(new views::FillLayout);
842 787
843 CreateChild(); 788 CreateChild();
844 } 789 }
845 790
846 void ManagePasswordsBubbleView::CloseBubble() { 791 void ManagePasswordsBubbleView::CloseBubble() {
847 mouse_handler_.reset(); 792 mouse_handler_.reset();
848 LocationBarBubbleDelegateView::CloseBubble(); 793 LocationBarBubbleDelegateView::CloseBubble();
849 } 794 }
850 795
796 void ManagePasswordsBubbleView::AddedToWidget() {
797 auto title_view =
798 base::MakeUnique<views::StyledLabel>(base::string16(), this);
799 title_view->SetBaseFontList(views::style::GetFont(
800 views::style::CONTEXT_DIALOG_TITLE, views::style::STYLE_PRIMARY));
801 UpdateTitleText(title_view.get());
802 GetBubbleFrameView()->SetTitleView(std::move(title_view));
803 }
804
805 void ManagePasswordsBubbleView::UpdateTitleText(
806 views::StyledLabel* title_view) {
807 title_view->SetText(GetWindowTitle());
808 if (!model_.title_brand_link_range().is_empty())
809 title_view->AddStyleRange(model_.title_brand_link_range(), GetLinkStyle());
810 }
811
851 base::string16 ManagePasswordsBubbleView::GetWindowTitle() const { 812 base::string16 ManagePasswordsBubbleView::GetWindowTitle() const {
852 return model_.title(); 813 return model_.title();
853 } 814 }
854 815
855 gfx::ImageSkia ManagePasswordsBubbleView::GetWindowIcon() { 816 gfx::ImageSkia ManagePasswordsBubbleView::GetWindowIcon() {
856 #if defined(OS_WIN) 817 #if defined(OS_WIN)
857 if (model_.state() == password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE) { 818 if (model_.state() == password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE) {
858 return desktop_ios_promotion::GetPromoImage( 819 return desktop_ios_promotion::GetPromoImage(
859 GetNativeTheme()->GetSystemColor( 820 GetNativeTheme()->GetSystemColor(
860 ui::NativeTheme::kColorId_TextfieldDefaultColor)); 821 ui::NativeTheme::kColorId_TextfieldDefaultColor));
861 } 822 }
862 #endif 823 #endif
863 return gfx::ImageSkia(); 824 return gfx::ImageSkia();
864 } 825 }
865 826
866 bool ManagePasswordsBubbleView::ShouldShowWindowTitle() const {
867 // Since bubble titles don't support links, fall back to a custom title view
868 // if we need to show a link. Only use the normal title path if there's no
869 // link.
870 return model_.title_brand_link_range().is_empty();
871 }
872
873 bool ManagePasswordsBubbleView::ShouldShowWindowIcon() const { 827 bool ManagePasswordsBubbleView::ShouldShowWindowIcon() const {
874 return model_.state() == password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE; 828 return model_.state() == password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE;
875 } 829 }
876 830
877 bool ManagePasswordsBubbleView::ShouldShowCloseButton() const { 831 bool ManagePasswordsBubbleView::ShouldShowCloseButton() const {
878 return model_.state() == password_manager::ui::PENDING_PASSWORD_STATE || 832 return model_.state() == password_manager::ui::PENDING_PASSWORD_STATE ||
879 model_.state() == password_manager::ui::CHROME_SIGN_IN_PROMO_STATE || 833 model_.state() == password_manager::ui::CHROME_SIGN_IN_PROMO_STATE ||
880 model_.state() == password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE; 834 model_.state() == password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE;
881 } 835 }
882 836
837 void ManagePasswordsBubbleView::StyledLabelLinkClicked(
838 views::StyledLabel* label,
839 const gfx::Range& range,
840 int event_flags) {
841 DCHECK_EQ(model_.title_brand_link_range(), range);
842 model_.OnBrandLinkClicked();
843 }
844
883 void ManagePasswordsBubbleView::Refresh() { 845 void ManagePasswordsBubbleView::Refresh() {
884 RemoveAllChildViews(true); 846 RemoveAllChildViews(true);
885 initially_focused_view_ = NULL; 847 initially_focused_view_ = NULL;
886 CreateChild(); 848 CreateChild();
887 // Show/hide the close button. 849 // Show/hide the close button.
888 GetWidget()->non_client_view()->ResetWindowControls(); 850 GetWidget()->non_client_view()->ResetWindowControls();
889 GetWidget()->UpdateWindowIcon(); 851 GetWidget()->UpdateWindowIcon();
890 GetWidget()->UpdateWindowTitle(); 852 UpdateTitleText(
853 static_cast<views::StyledLabel*>(GetBubbleFrameView()->title()));
891 if (model_.state() == password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE) { 854 if (model_.state() == password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE) {
892 // Update the height and keep the existing width. 855 // Update the height and keep the existing width.
893 gfx::Rect bubble_bounds = GetWidget()->GetWindowBoundsInScreen(); 856 gfx::Rect bubble_bounds = GetWidget()->GetWindowBoundsInScreen();
894 bubble_bounds.set_height( 857 bubble_bounds.set_height(
895 GetWidget()->GetRootView()->GetHeightForWidth(bubble_bounds.width())); 858 GetWidget()->GetRootView()->GetHeightForWidth(bubble_bounds.width()));
896 GetWidget()->SetBounds(bubble_bounds); 859 GetWidget()->SetBounds(bubble_bounds);
897 } else { 860 } else {
898 SizeToContents(); 861 SizeToContents();
899 } 862 }
900 } 863 }
(...skipping 15 matching lines...) Expand all
916 } else if (model_.state() == 879 } else if (model_.state() ==
917 password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE) { 880 password_manager::ui::CHROME_DESKTOP_IOS_PROMO_STATE) {
918 AddChildView(new DesktopIOSPromotionBubbleView( 881 AddChildView(new DesktopIOSPromotionBubbleView(
919 model_.GetProfile(), 882 model_.GetProfile(),
920 desktop_ios_promotion::PromotionEntryPoint::SAVE_PASSWORD_BUBBLE)); 883 desktop_ios_promotion::PromotionEntryPoint::SAVE_PASSWORD_BUBBLE));
921 #endif 884 #endif
922 } else { 885 } else {
923 AddChildView(new ManageView(this)); 886 AddChildView(new ManageView(this));
924 } 887 }
925 } 888 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698