OLD | NEW |
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" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 | 76 |
77 | 77 |
78 // ManagePasswordsBubbleView -------------------------------------------------- | 78 // ManagePasswordsBubbleView -------------------------------------------------- |
79 | 79 |
80 // static | 80 // static |
81 ManagePasswordsBubbleView* ManagePasswordsBubbleView::manage_passwords_bubble_ = | 81 ManagePasswordsBubbleView* ManagePasswordsBubbleView::manage_passwords_bubble_ = |
82 NULL; | 82 NULL; |
83 | 83 |
84 // static | 84 // static |
85 void ManagePasswordsBubbleView::ShowBubble(content::WebContents* web_contents, | 85 void ManagePasswordsBubbleView::ShowBubble(content::WebContents* web_contents, |
86 ManagePasswordsIconView* icon_view, | |
87 DisplayReason reason) { | 86 DisplayReason reason) { |
88 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); | 87 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); |
89 DCHECK(browser); | 88 DCHECK(browser); |
90 DCHECK(browser->window()); | 89 DCHECK(browser->window()); |
91 DCHECK(browser->fullscreen_controller()); | 90 DCHECK(browser->fullscreen_controller()); |
92 DCHECK(!IsShowing()); | 91 DCHECK(!IsShowing()); |
93 | 92 |
94 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); | 93 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); |
95 bool is_fullscreen = browser_view->IsFullscreen(); | 94 bool is_fullscreen = browser_view->IsFullscreen(); |
96 views::View* anchor_view = is_fullscreen ? | 95 views::View* anchor_view = is_fullscreen ? |
97 NULL : browser_view->GetLocationBarView()->manage_passwords_icon_view(); | 96 NULL : browser_view->GetLocationBarView()->manage_passwords_icon_view(); |
98 manage_passwords_bubble_ = new ManagePasswordsBubbleView( | 97 manage_passwords_bubble_ = new ManagePasswordsBubbleView( |
99 web_contents, anchor_view, icon_view, reason); | 98 web_contents, anchor_view, reason); |
100 | 99 |
101 if (is_fullscreen) { | 100 if (is_fullscreen) { |
102 manage_passwords_bubble_->set_parent_window( | 101 manage_passwords_bubble_->set_parent_window( |
103 web_contents->GetView()->GetTopLevelNativeWindow()); | 102 web_contents->GetView()->GetTopLevelNativeWindow()); |
104 } | 103 } |
105 | 104 |
106 views::BubbleDelegateView::CreateBubble(manage_passwords_bubble_); | 105 views::BubbleDelegateView::CreateBubble(manage_passwords_bubble_); |
107 | 106 |
108 // Adjust for fullscreen after creation as it relies on the content size. | 107 // Adjust for fullscreen after creation as it relies on the content size. |
109 if (is_fullscreen) { | 108 if (is_fullscreen) { |
(...skipping 13 matching lines...) Expand all Loading... |
123 // static | 122 // static |
124 bool ManagePasswordsBubbleView::IsShowing() { | 123 bool ManagePasswordsBubbleView::IsShowing() { |
125 // The bubble may be in the process of closing. | 124 // The bubble may be in the process of closing. |
126 return (manage_passwords_bubble_ != NULL) && | 125 return (manage_passwords_bubble_ != NULL) && |
127 manage_passwords_bubble_->GetWidget()->IsVisible(); | 126 manage_passwords_bubble_->GetWidget()->IsVisible(); |
128 } | 127 } |
129 | 128 |
130 ManagePasswordsBubbleView::ManagePasswordsBubbleView( | 129 ManagePasswordsBubbleView::ManagePasswordsBubbleView( |
131 content::WebContents* web_contents, | 130 content::WebContents* web_contents, |
132 views::View* anchor_view, | 131 views::View* anchor_view, |
133 ManagePasswordsIconView* icon_view, | |
134 DisplayReason reason) | 132 DisplayReason reason) |
135 : ManagePasswordsBubble(web_contents, reason), | 133 : ManagePasswordsBubble(web_contents, reason), |
136 BubbleDelegateView(anchor_view, | 134 BubbleDelegateView(anchor_view, |
137 anchor_view ? views::BubbleBorder::TOP_RIGHT | 135 anchor_view ? views::BubbleBorder::TOP_RIGHT |
138 : views::BubbleBorder::NONE), | 136 : views::BubbleBorder::NONE) { |
139 icon_view_(icon_view) { | |
140 // Compensate for built-in vertical padding in the anchor view's image. | 137 // Compensate for built-in vertical padding in the anchor view's image. |
141 set_anchor_view_insets(gfx::Insets(5, 0, 5, 0)); | 138 set_anchor_view_insets(gfx::Insets(5, 0, 5, 0)); |
142 set_notify_enter_exit_on_child(true); | 139 set_notify_enter_exit_on_child(true); |
143 } | 140 } |
144 | 141 |
145 ManagePasswordsBubbleView::~ManagePasswordsBubbleView() {} | 142 ManagePasswordsBubbleView::~ManagePasswordsBubbleView() {} |
146 | 143 |
147 void ManagePasswordsBubbleView::BuildColumnSet(views::GridLayout* layout, | 144 void ManagePasswordsBubbleView::BuildColumnSet(views::GridLayout* layout, |
148 ColumnSetType type) { | 145 ColumnSetType type) { |
149 views::ColumnSet* column_set = layout->AddColumnSet(type); | 146 views::ColumnSet* column_set = layout->AddColumnSet(type); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 // The bubble's padding from the screen edge, used in fullscreen. | 197 // The bubble's padding from the screen edge, used in fullscreen. |
201 const int kFullscreenPaddingEnd = 20; | 198 const int kFullscreenPaddingEnd = 20; |
202 const size_t bubble_half_width = width() / 2; | 199 const size_t bubble_half_width = width() / 2; |
203 const int x_pos = base::i18n::IsRTL() ? | 200 const int x_pos = base::i18n::IsRTL() ? |
204 screen_bounds.x() + bubble_half_width + kFullscreenPaddingEnd : | 201 screen_bounds.x() + bubble_half_width + kFullscreenPaddingEnd : |
205 screen_bounds.right() - bubble_half_width - kFullscreenPaddingEnd; | 202 screen_bounds.right() - bubble_half_width - kFullscreenPaddingEnd; |
206 SetAnchorRect(gfx::Rect(x_pos, screen_bounds.y(), 0, 0)); | 203 SetAnchorRect(gfx::Rect(x_pos, screen_bounds.y(), 0, 0)); |
207 } | 204 } |
208 | 205 |
209 void ManagePasswordsBubbleView::Close() { | 206 void ManagePasswordsBubbleView::Close() { |
210 icon_view_->SetTooltip(model()->manage_passwords_bubble_state() == | |
211 ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED); | |
212 GetWidget()->Close(); | 207 GetWidget()->Close(); |
213 } | 208 } |
214 | 209 |
215 void ManagePasswordsBubbleView::CloseWithoutLogging() { | 210 void ManagePasswordsBubbleView::CloseWithoutLogging() { |
216 model()->OnCloseWithoutLogging(); | 211 model()->OnCloseWithoutLogging(); |
217 icon_view_->SetTooltip(model()->manage_passwords_bubble_state() == | |
218 ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED); | |
219 GetWidget()->Close(); | 212 GetWidget()->Close(); |
220 } | 213 } |
221 | 214 |
222 void ManagePasswordsBubbleView::Init() { | 215 void ManagePasswordsBubbleView::Init() { |
223 using views::GridLayout; | 216 using views::GridLayout; |
224 | 217 |
225 GridLayout* layout = new GridLayout(this); | 218 GridLayout* layout = new GridLayout(this); |
226 SetFocusable(true); | 219 SetFocusable(true); |
227 SetLayoutManager(layout); | 220 SetLayoutManager(layout); |
228 BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET); | 221 BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 break; | 360 break; |
368 case SavePasswordRefusalComboboxModel::INDEX_NEVER_FOR_THIS_SITE: | 361 case SavePasswordRefusalComboboxModel::INDEX_NEVER_FOR_THIS_SITE: |
369 model()->OnNeverForThisSiteClicked(); | 362 model()->OnNeverForThisSiteClicked(); |
370 break; | 363 break; |
371 default: | 364 default: |
372 NOTREACHED(); | 365 NOTREACHED(); |
373 break; | 366 break; |
374 } | 367 } |
375 Close(); | 368 Close(); |
376 } | 369 } |
OLD | NEW |