| Index: chrome/browser/ui/views/password_generation_bubble_view.cc
|
| diff --git a/chrome/browser/ui/views/password_generation_bubble_view.cc b/chrome/browser/ui/views/password_generation_bubble_view.cc
|
| deleted file mode 100644
|
| index d4285a20abdf5e9505615b36f7ffbe3be58f1905..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/views/password_generation_bubble_view.cc
|
| +++ /dev/null
|
| @@ -1,247 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/ui/views/password_generation_bubble_view.h"
|
| -
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_list.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "chrome/grit/generated_resources.h"
|
| -#include "components/autofill/content/common/autofill_messages.h"
|
| -#include "components/autofill/core/browser/password_generator.h"
|
| -#include "components/autofill/core/common/password_generation_util.h"
|
| -#include "components/password_manager/core/browser/password_manager.h"
|
| -#include "content/public/browser/render_view_host.h"
|
| -#include "grit/theme_resources.h"
|
| -#include "third_party/skia/include/core/SkPaint.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -#include "ui/base/theme_provider.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/views/border.h"
|
| -#include "ui/views/controls/button/image_button.h"
|
| -#include "ui/views/controls/button/label_button.h"
|
| -#include "ui/views/controls/label.h"
|
| -#include "ui/views/controls/link.h"
|
| -#include "ui/views/controls/textfield/textfield.h"
|
| -#include "ui/views/layout/layout_constants.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace {
|
| -// Constants for PasswordGenerationBubbleView.
|
| -const int kBubbleMargin = 9;
|
| -const int kButtonHorizontalSpacing = 4;
|
| -const int kButtonWidth = 65;
|
| -const int kDefaultTextFieldChars = 18;
|
| -const int kTitleLabelVerticalOffset = -1;
|
| -const int kVerticalPadding = 8;
|
| -
|
| -// Constants for Text fieldWrapper.
|
| -const int kTextfieldHorizontalPadding = 2;
|
| -const int kTextfieldVerticalPadding = 3;
|
| -const int kWrapperBorderSize = 1;
|
| -
|
| -// This class handles layout so that it looks like a Textfield and ImageButton
|
| -// are part of one logical textfield with the button on the right side of the
|
| -// field. It also assumes that the textfield is already sized appropriately
|
| -// and will alter the image size to fit.
|
| -class TextfieldWrapper : public views::View {
|
| - public:
|
| - TextfieldWrapper(views::Textfield* textfield,
|
| - views::ImageButton* image_button);
|
| - virtual ~TextfieldWrapper();
|
| -
|
| - virtual void Layout() OVERRIDE;
|
| - virtual gfx::Size GetPreferredSize() const OVERRIDE;
|
| -
|
| - private:
|
| - gfx::Size GetImageSize() const;
|
| -
|
| - views::Textfield* textfield_;
|
| - views::ImageButton* image_button_;
|
| -};
|
| -
|
| -TextfieldWrapper::TextfieldWrapper(views::Textfield* textfield,
|
| - views::ImageButton* image_button)
|
| - : textfield_(textfield),
|
| - image_button_(image_button) {
|
| - SetBorder(views::Border::CreateSolidBorder(kWrapperBorderSize, SK_ColorGRAY));
|
| -
|
| - AddChildView(textfield_);
|
| - AddChildView(image_button);
|
| -}
|
| -
|
| -TextfieldWrapper::~TextfieldWrapper() {}
|
| -
|
| -void TextfieldWrapper::Layout() {
|
| - // Add some spacing between the textfield and the border.
|
| - textfield_->SetPosition(gfx::Point(kTextfieldHorizontalPadding,
|
| - kTextfieldVerticalPadding));
|
| - textfield_->SizeToPreferredSize();
|
| -
|
| - // Button should be offset one pixel from the end of the textfield so that
|
| - // there is no overlap. It is also displaced down by the size of the border
|
| - // so it doesn't overlap with it either.
|
| - int button_x = (textfield_->GetPreferredSize().width() +
|
| - kTextfieldHorizontalPadding + 1);
|
| - image_button_->SetPosition(gfx::Point(button_x,
|
| - kWrapperBorderSize));
|
| -
|
| - // Make sure that the image is centered after cropping.
|
| - image_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
|
| - views::ImageButton::ALIGN_MIDDLE);
|
| -
|
| - image_button_->SetSize(GetImageSize());
|
| -}
|
| -
|
| -gfx::Size TextfieldWrapper::GetPreferredSize() const {
|
| - int width = (textfield_->GetPreferredSize().width() +
|
| - GetImageSize().width() +
|
| - kTextfieldHorizontalPadding * 3);
|
| - int height = (textfield_->GetPreferredSize().height() +
|
| - kTextfieldVerticalPadding * 2);
|
| -
|
| - return gfx::Size(width, height);
|
| -}
|
| -
|
| -gfx::Size TextfieldWrapper::GetImageSize() const {
|
| - // The image is sized so that it fills the space between the borders
|
| - // completely.
|
| - int size = (textfield_->GetPreferredSize().height() +
|
| - (kTextfieldVerticalPadding - kWrapperBorderSize) * 2);
|
| - return gfx::Size(size, size);
|
| -}
|
| -} // namespace
|
| -
|
| -PasswordGenerationBubbleView::PasswordGenerationBubbleView(
|
| - const autofill::PasswordForm& form,
|
| - const gfx::Rect& anchor_rect,
|
| - views::View* anchor_view,
|
| - content::RenderViewHost* render_view_host,
|
| - password_manager::PasswordManager* password_manager,
|
| - autofill::PasswordGenerator* password_generator,
|
| - ui::ThemeProvider* theme_provider)
|
| - : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_LEFT),
|
| - title_label_(NULL),
|
| - accept_button_(NULL),
|
| - textfield_(NULL),
|
| - regenerate_button_(NULL),
|
| - textfield_wrapper_(NULL),
|
| - form_(form),
|
| - anchor_rect_(anchor_rect),
|
| - render_view_host_(render_view_host),
|
| - password_manager_(password_manager),
|
| - password_generator_(password_generator),
|
| - theme_provider_(theme_provider) {}
|
| -
|
| -PasswordGenerationBubbleView::~PasswordGenerationBubbleView() {}
|
| -
|
| -void PasswordGenerationBubbleView::Init() {
|
| - set_margins(gfx::Insets(kBubbleMargin, kBubbleMargin,
|
| - kBubbleMargin, kBubbleMargin));
|
| -
|
| - // TODO(gcasto): Localize text after we have finalized the UI.
|
| - // crbug.com/118062.
|
| - ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| - title_label_ = new views::Label(
|
| - l10n_util::GetStringUTF16(IDS_PASSWORD_GENERATION_BUBBLE_TITLE),
|
| - rb.GetFontList(ui::ResourceBundle::MediumFont));
|
| - AddChildView(title_label_);
|
| -
|
| - regenerate_button_ = new views::ImageButton(this);
|
| - regenerate_button_->SetImage(
|
| - views::CustomButton::STATE_NORMAL,
|
| - theme_provider_->GetImageSkiaNamed(IDR_RELOAD_DIMMED));
|
| - regenerate_button_->SetImage(
|
| - views::CustomButton::STATE_HOVERED,
|
| - theme_provider_->GetImageSkiaNamed(IDR_RELOAD));
|
| - regenerate_button_->SetImage(
|
| - views::CustomButton::STATE_PRESSED,
|
| - theme_provider_->GetImageSkiaNamed(IDR_RELOAD));
|
| -
|
| - textfield_ = new views::Textfield();
|
| - textfield_->set_default_width_in_chars(kDefaultTextFieldChars);
|
| - textfield_->SetText(base::ASCIIToUTF16(password_generator_->Generate()));
|
| - textfield_->set_controller(this);
|
| -
|
| - textfield_wrapper_ = new TextfieldWrapper(textfield_,
|
| - regenerate_button_);
|
| - AddChildView(textfield_wrapper_);
|
| -
|
| - accept_button_ = new views::LabelButton(
|
| - this,
|
| - l10n_util::GetStringUTF16(IDS_PASSWORD_GENERATION_BUTTON_TEXT));
|
| - accept_button_->SetStyle(views::Button::STYLE_BUTTON);
|
| - AddChildView(accept_button_);
|
| -}
|
| -
|
| -void PasswordGenerationBubbleView::Layout() {
|
| - // We have the title label shifted up to make the borders look more uniform.
|
| - title_label_->SetPosition(gfx::Point(0, kTitleLabelVerticalOffset));
|
| - title_label_->SizeToPreferredSize();
|
| -
|
| - int y = title_label_->GetPreferredSize().height() + kVerticalPadding;
|
| -
|
| - textfield_wrapper_->SetPosition(gfx::Point(0, y));
|
| - textfield_wrapper_->SizeToPreferredSize();
|
| -
|
| - int button_x = (textfield_wrapper_->GetPreferredSize().width() +
|
| - kButtonHorizontalSpacing);
|
| - accept_button_->SetBounds(
|
| - button_x,
|
| - y - kWrapperBorderSize,
|
| - kButtonWidth,
|
| - textfield_wrapper_->GetPreferredSize().height() + kWrapperBorderSize * 2);
|
| -}
|
| -
|
| -gfx::Size PasswordGenerationBubbleView::GetPreferredSize() const {
|
| - int width = (textfield_wrapper_->GetPreferredSize().width() +
|
| - kButtonHorizontalSpacing +
|
| - kButtonWidth - 1);
|
| - int height = (title_label_->GetPreferredSize().height() +
|
| - textfield_wrapper_->GetPreferredSize().height() +
|
| - kVerticalPadding);
|
| - return gfx::Size(width, height);
|
| -}
|
| -
|
| -gfx::Rect PasswordGenerationBubbleView::GetAnchorRect() const {
|
| - return anchor_rect_;
|
| -}
|
| -
|
| -void PasswordGenerationBubbleView::ButtonPressed(views::Button* sender,
|
| - const ui::Event& event) {
|
| - if (sender == accept_button_) {
|
| - render_view_host_->Send(new AutofillMsg_GeneratedPasswordAccepted(
|
| - render_view_host_->GetRoutingID(), textfield_->text()));
|
| - password_manager_->SetFormHasGeneratedPassword(form_);
|
| - actions_.password_accepted = true;
|
| - GetWidget()->Close();
|
| - }
|
| - if (sender == regenerate_button_) {
|
| - textfield_->SetText(
|
| - base::ASCIIToUTF16(password_generator_->Generate()));
|
| - actions_.password_regenerated = true;
|
| - }
|
| -}
|
| -
|
| -void PasswordGenerationBubbleView::ContentsChanged(
|
| - views::Textfield* sender,
|
| - const base::string16& contents) {
|
| - actions_.password_edited = true;
|
| -}
|
| -
|
| -bool PasswordGenerationBubbleView::HandleKeyEvent(
|
| - views::Textfield* sender,
|
| - const ui::KeyEvent& key_event) {
|
| - return false;
|
| -}
|
| -
|
| -views::View* PasswordGenerationBubbleView::GetInitiallyFocusedView() {
|
| - return textfield_;
|
| -}
|
| -
|
| -void PasswordGenerationBubbleView::WindowClosing() {
|
| - autofill::password_generation::LogUserActions(actions_);
|
| -}
|
|
|