1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_VIEWS_AUTOFILL_PASSWORD_GENERATION_POPUP_VIEW_VIEWS_H_ 6#define CHROME_BROWSER_UI_VIEWS_AUTOFILL_PASSWORD_GENERATION_POPUP_VIEW_VIEWS_H_ 7 8#include "chrome/browser/ui/autofill/password_generation_popup_view.h" 9#include "chrome/browser/ui/views/autofill/autofill_popup_base_view.h" 10#include "ui/gfx/font_list.h" 11#include "ui/views/controls/styled_label_listener.h" 12 13namespace views { 14class StyledLabel; 15class View; 16} 17 18namespace autofill { 19 20class PasswordGenerationPopupController; 21 22class PasswordGenerationPopupViewViews : public AutofillPopupBaseView, 23 public PasswordGenerationPopupView, 24 public views::StyledLabelListener { 25 public: 26 PasswordGenerationPopupViewViews( 27 PasswordGenerationPopupController* controller, 28 views::Widget* observing_widget); 29 30 // PasswordGenerationPopupView implementation 31 virtual void Show() OVERRIDE; 32 virtual void Hide() OVERRIDE; 33 virtual gfx::Size GetPreferredSizeOfPasswordView() OVERRIDE; 34 virtual void UpdateBoundsAndRedrawPopup() OVERRIDE; 35 virtual void PasswordSelectionUpdated() OVERRIDE; 36 virtual bool IsPointInPasswordBounds(const gfx::Point& point) OVERRIDE; 37 38 private: 39 // Helper class to do layout of the password portion of the popup. 40 class PasswordBox; 41 42 virtual ~PasswordGenerationPopupViewViews(); 43 44 // Helper function to create |password_view_|. 45 void CreatePasswordView(); 46 47 // views:Views implementation. 48 virtual void Layout() OVERRIDE; 49 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 50 51 // views::StyledLabelListener implementation 52 virtual void StyledLabelLinkClicked(const gfx::Range& range, 53 int event_flags) OVERRIDE; 54 55 // Sub views. Used to change bounds when updating. Weak references. 56 PasswordBox* password_view_; 57 views::StyledLabel* help_label_; 58 59 // Fonts to use. 60 gfx::FontList font_list_; 61 62 // Size of the divider between the password and the help text. 63 gfx::Rect divider_bounds_; 64 65 // Controller for this view. Weak reference. 66 PasswordGenerationPopupController* controller_; 67 68 DISALLOW_COPY_AND_ASSIGN(PasswordGenerationPopupViewViews); 69}; 70 71} // namespace autofill 72 73#endif // CHROME_BROWSER_UI_VIEWS_AUTOFILL_PASSWORD_GENERATION_POPUP_VIEW_VIEWS_H_ 74