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

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

Issue 246393004: Password bubble: Introduce a command to open the bubble. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix. Created 6 years, 7 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 | Annotate | Revision Log
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/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "chrome/browser/chrome_notification_types.h" 8 #include "chrome/browser/chrome_notification_types.h"
9 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_finder.h" 10 #include "chrome/browser/ui/browser_finder.h"
11 #include "chrome/browser/ui/browser_window.h" 11 #include "chrome/browser/ui/browser_window.h"
12 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" 12 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
13 #include "chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.h"
13 #include "chrome/browser/ui/views/frame/browser_view.h" 14 #include "chrome/browser/ui/views/frame/browser_view.h"
14 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" 15 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
15 #include "chrome/browser/ui/views/passwords/manage_password_item_view.h" 16 #include "chrome/browser/ui/views/passwords/manage_password_item_view.h"
16 #include "chrome/browser/ui/views/passwords/manage_passwords_icon_view.h" 17 #include "chrome/browser/ui/views/passwords/manage_passwords_icon_view.h"
17 #include "content/public/browser/notification_source.h" 18 #include "content/public/browser/notification_source.h"
18 #include "content/public/browser/web_contents_view.h" 19 #include "content/public/browser/web_contents_view.h"
19 #include "grit/generated_resources.h" 20 #include "grit/generated_resources.h"
20 #include "ui/base/l10n/l10n_util.h" 21 #include "ui/base/l10n/l10n_util.h"
21 #include "ui/base/models/combobox_model.h" 22 #include "ui/base/models/combobox_model.h"
22 #include "ui/base/resource/resource_bundle.h" 23 #include "ui/base/resource/resource_bundle.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 virtual int GetDefaultIndex() const OVERRIDE { return 0; } 69 virtual int GetDefaultIndex() const OVERRIDE { return 0; }
69 70
70 std::vector<base::string16> items_; 71 std::vector<base::string16> items_;
71 72
72 DISALLOW_COPY_AND_ASSIGN(SavePasswordRefusalComboboxModel); 73 DISALLOW_COPY_AND_ASSIGN(SavePasswordRefusalComboboxModel);
73 }; 74 };
74 75
75 } // namespace 76 } // namespace
76 77
77 78
79 // Globals --------------------------------------------------------------------
80
81 namespace chrome {
82
83 void ShowManagePasswordsBubble(content::WebContents* web_contents) {
84 ManagePasswordsBubbleUIController* controller =
85 ManagePasswordsBubbleUIController::FromWebContents(web_contents);
86 ManagePasswordsBubbleView::ShowBubble(
87 web_contents,
88 controller->manage_passwords_bubble_needs_showing() ?
89 ManagePasswordsBubbleView::AUTOMATIC :
90 ManagePasswordsBubbleView::USER_ACTION);
91 }
92
93 } // namespace chrome
94
95
78 // ManagePasswordsBubbleView -------------------------------------------------- 96 // ManagePasswordsBubbleView --------------------------------------------------
79 97
80 // static 98 // static
81 ManagePasswordsBubbleView* ManagePasswordsBubbleView::manage_passwords_bubble_ = 99 ManagePasswordsBubbleView* ManagePasswordsBubbleView::manage_passwords_bubble_ =
82 NULL; 100 NULL;
83 101
84 // static 102 // static
85 void ManagePasswordsBubbleView::ShowBubble(content::WebContents* web_contents, 103 void ManagePasswordsBubbleView::ShowBubble(content::WebContents* web_contents,
86 DisplayReason reason) { 104 DisplayReason reason) {
87 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); 105 Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 DisplayReason reason) 152 DisplayReason reason)
135 : ManagePasswordsBubble(web_contents, reason), 153 : ManagePasswordsBubble(web_contents, reason),
136 BubbleDelegateView(anchor_view, 154 BubbleDelegateView(anchor_view,
137 anchor_view ? views::BubbleBorder::TOP_RIGHT 155 anchor_view ? views::BubbleBorder::TOP_RIGHT
138 : views::BubbleBorder::NONE) { 156 : views::BubbleBorder::NONE) {
139 // Compensate for built-in vertical padding in the anchor view's image. 157 // Compensate for built-in vertical padding in the anchor view's image.
140 set_anchor_view_insets(gfx::Insets(5, 0, 5, 0)); 158 set_anchor_view_insets(gfx::Insets(5, 0, 5, 0));
141 set_notify_enter_exit_on_child(true); 159 set_notify_enter_exit_on_child(true);
142 } 160 }
143 161
144 ManagePasswordsBubbleView::~ManagePasswordsBubbleView() {} 162 ManagePasswordsBubbleView::~ManagePasswordsBubbleView() {
163 // The combobox doesn't take ownership of it's model. If we created a combobox
vabr (Chromium) 2014/04/30 07:56:07 The explanation in the comment is very helpful. Ho
164 // we need to ensure that we delete the model here, and because the combobox
165 // uses the model in it's destructor, we need to make sure we delete the model
166 // _after_ the combobox itself is deleted.
167 if (refuse_combobox_) {
168 SavePasswordRefusalComboboxModel* model =
169 static_cast<SavePasswordRefusalComboboxModel*>(
170 refuse_combobox_->model());
171 delete refuse_combobox_;
172 delete model;
173 }
174 }
145 175
146 void ManagePasswordsBubbleView::BuildColumnSet(views::GridLayout* layout, 176 void ManagePasswordsBubbleView::BuildColumnSet(views::GridLayout* layout,
147 ColumnSetType type) { 177 ColumnSetType type) {
148 views::ColumnSet* column_set = layout->AddColumnSet(type); 178 views::ColumnSet* column_set = layout->AddColumnSet(type);
149 column_set->AddPaddingColumn(0, views::kPanelHorizMargin); 179 column_set->AddPaddingColumn(0, views::kPanelHorizMargin);
150 switch (type) { 180 switch (type) {
151 case SINGLE_VIEW_COLUMN_SET: 181 case SINGLE_VIEW_COLUMN_SET:
152 column_set->AddColumn(views::GridLayout::FILL, 182 column_set->AddColumn(views::GridLayout::FILL,
153 views::GridLayout::FILL, 183 views::GridLayout::FILL,
154 0, 184 0,
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 break; 392 break;
363 case SavePasswordRefusalComboboxModel::INDEX_NEVER_FOR_THIS_SITE: 393 case SavePasswordRefusalComboboxModel::INDEX_NEVER_FOR_THIS_SITE:
364 model()->OnNeverForThisSiteClicked(); 394 model()->OnNeverForThisSiteClicked();
365 break; 395 break;
366 default: 396 default:
367 NOTREACHED(); 397 NOTREACHED();
368 break; 398 break;
369 } 399 }
370 Close(); 400 Close();
371 } 401 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698