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

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

Issue 520743002: The password bubble should fade out on click on the web page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix the nit Created 6 years, 3 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
« no previous file with comments | « no previous file | chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef CHROME_BROWSER_UI_VIEWS_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_VIEW_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_VIEW_H_ 6 #define CHROME_BROWSER_UI_VIEWS_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_VIEW_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/timer/timer.h"
10 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h"
11 #include "chrome/browser/ui/passwords/save_password_refusal_combobox_model.h" 10 #include "chrome/browser/ui/passwords/save_password_refusal_combobox_model.h"
12 #include "ui/views/bubble/bubble_delegate.h" 11 #include "ui/views/bubble/bubble_delegate.h"
13 #include "ui/views/controls/button/button.h" 12 #include "ui/views/controls/button/button.h"
14 #include "ui/views/controls/combobox/combobox.h" 13 #include "ui/views/controls/combobox/combobox.h"
15 #include "ui/views/controls/combobox/combobox_listener.h" 14 #include "ui/views/controls/combobox/combobox_listener.h"
16 #include "ui/views/controls/link.h" 15 #include "ui/views/controls/link.h"
17 #include "ui/views/controls/link_listener.h" 16 #include "ui/views/controls/link_listener.h"
18 #include "ui/views/controls/styled_label_listener.h" 17 #include "ui/views/controls/styled_label_listener.h"
19 18
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 167
169 // Returns a pointer to the bubble. 168 // Returns a pointer to the bubble.
170 static const ManagePasswordsBubbleView* manage_password_bubble() { 169 static const ManagePasswordsBubbleView* manage_password_bubble() {
171 return manage_passwords_bubble_; 170 return manage_passwords_bubble_;
172 } 171 }
173 172
174 const View* initially_focused_view() const { 173 const View* initially_focused_view() const {
175 return initially_focused_view_; 174 return initially_focused_view_;
176 } 175 }
177 176
178 bool IsTimerRunning() const { 177 bool IsFadingAway() const {
179 return timer_.IsRunning(); 178 return fadeout_observer_;
180 } 179 }
181 180
182 private: 181 private:
183 ManagePasswordsBubbleView(content::WebContents* web_contents, 182 ManagePasswordsBubbleView(content::WebContents* web_contents,
184 ManagePasswordsIconView* anchor_view, 183 ManagePasswordsIconView* anchor_view,
185 DisplayReason reason); 184 DisplayReason reason);
186 virtual ~ManagePasswordsBubbleView(); 185 virtual ~ManagePasswordsBubbleView();
187 186
188 // If the bubble is not anchored to a view, places the bubble in the top 187 // If the bubble is not anchored to a view, places the bubble in the top
189 // right (left in RTL) of the |screen_bounds| that contain |web_contents_|'s 188 // right (left in RTL) of the |screen_bounds| that contain |web_contents_|'s
(...skipping 13 matching lines...) Expand all
203 void NotifyNeverForThisSiteClicked(); 202 void NotifyNeverForThisSiteClicked();
204 203
205 // Called from ConfirmNeverView if the user confirms her intention to never 204 // Called from ConfirmNeverView if the user confirms her intention to never
206 // save passwords, and remove existing passwords, for a site. 205 // save passwords, and remove existing passwords, for a site.
207 void NotifyConfirmedNeverForThisSite(); 206 void NotifyConfirmedNeverForThisSite();
208 207
209 // Called from ConfirmNeverView if the user clicks on "Undo" in order to 208 // Called from ConfirmNeverView if the user clicks on "Undo" in order to
210 // undo the action and refresh to PendingView. 209 // undo the action and refresh to PendingView.
211 void NotifyUndoNeverForThisSite(); 210 void NotifyUndoNeverForThisSite();
212 211
213 // Starts a timer which will close the bubble if it's inactive.
214 void StartTimerIfNecessary();
215
216 // views::BubbleDelegateView: 212 // views::BubbleDelegateView:
217 virtual void Init() OVERRIDE; 213 virtual void Init() OVERRIDE;
218 virtual void WindowClosing() OVERRIDE; 214 virtual void WindowClosing() OVERRIDE;
219 virtual void OnWidgetActivationChanged(views::Widget* widget, 215 virtual void OnWidgetActivationChanged(views::Widget* widget,
220 bool active) OVERRIDE; 216 bool active) OVERRIDE;
221 217
222 // views::WidgetDelegate 218 // views::WidgetDelegate
223 virtual views::View* GetInitiallyFocusedView() OVERRIDE; 219 virtual views::View* GetInitiallyFocusedView() OVERRIDE;
224 220
225 // views::View methods. 221 // views::View methods.
226 virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE; 222 virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE;
227 virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE;
228 223
229 // Called from WebContentMouseHandler when user clicks the web view. 224 // Starts animating the bubble.
230 void OnWebContentClicked(); 225 void StartFadingOut();
226
227 // Cancel fading out if it's active.
228 void CancelFadingOut();
229
230 // Called when the bubble completely faded out.
231 void OnBubbleDisappeared();
231 232
232 void set_initially_focused_view(views::View* view) { 233 void set_initially_focused_view(views::View* view) {
233 DCHECK(!initially_focused_view_); 234 DCHECK(!initially_focused_view_);
234 initially_focused_view_ = view; 235 initially_focused_view_ = view;
235 } 236 }
236 237
237 // Singleton instance of the Password bubble. The Password bubble can only be 238 // Singleton instance of the Password bubble. The Password bubble can only be
238 // shown on the active browser window, so there is no case in which it will be 239 // shown on the active browser window, so there is no case in which it will be
239 // shown twice at the same time. The instance is owned by the Bubble and will 240 // shown twice at the same time. The instance is owned by the Bubble and will
240 // be deleted when the bubble closes. 241 // be deleted when the bubble closes.
241 static ManagePasswordsBubbleView* manage_passwords_bubble_; 242 static ManagePasswordsBubbleView* manage_passwords_bubble_;
242 243
243 ManagePasswordsIconView* anchor_view_; 244 ManagePasswordsIconView* anchor_view_;
244 245
245 // If true upon destruction, the user has confirmed that she never wants to 246 // If true upon destruction, the user has confirmed that she never wants to
246 // save passwords for a particular site. 247 // save passwords for a particular site.
247 bool never_save_passwords_; 248 bool never_save_passwords_;
248 249
249 views::View* initially_focused_view_; 250 views::View* initially_focused_view_;
250 251
251 // Timer used to close the bubble after timeout. 252 // A helper to intercept mouse click events on the web contents.
252 base::OneShotTimer<ManagePasswordsBubbleView> timer_;
253
254 class WebContentMouseHandler; 253 class WebContentMouseHandler;
255 scoped_ptr<WebContentMouseHandler> mouse_handler_; 254 scoped_ptr<WebContentMouseHandler> mouse_handler_;
256 255
256 // A helper to get a notification when the bubble fades out completely.
257 class FadeOutObserver;
258 scoped_ptr<FadeOutObserver> fadeout_observer_;
259
257 DISALLOW_COPY_AND_ASSIGN(ManagePasswordsBubbleView); 260 DISALLOW_COPY_AND_ASSIGN(ManagePasswordsBubbleView);
258 }; 261 };
259 262
260 #endif // CHROME_BROWSER_UI_VIEWS_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_VIEW_H_ 263 #endif // CHROME_BROWSER_UI_VIEWS_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_VIEW_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698