| Index: chrome/browser/ui/views/autofill/expanding_textfield.cc
|
| diff --git a/chrome/browser/ui/views/autofill/expanding_textfield.cc b/chrome/browser/ui/views/autofill/expanding_textfield.cc
|
| deleted file mode 100644
|
| index 020f8e7e2c350713f3133b03bb55df3c2c454f4e..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/views/autofill/expanding_textfield.cc
|
| +++ /dev/null
|
| @@ -1,149 +0,0 @@
|
| -// Copyright 2014 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/autofill/expanding_textfield.h"
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/strings/string_split.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/browser/ui/views/autofill/decorated_textfield.h"
|
| -#include "ui/views/layout/box_layout.h"
|
| -
|
| -namespace autofill {
|
| -
|
| -namespace {
|
| -
|
| -// The vertical padding between textfields.
|
| -const int kManualInputRowPadding = 10;
|
| -
|
| -} // namespace
|
| -
|
| -// static
|
| -const char ExpandingTextfield::kViewClassName[] = "autofill/ExpandingTextfield";
|
| -
|
| -ExpandingTextfield::ExpandingTextfield(
|
| - const base::string16& default_value,
|
| - const base::string16& placeholder,
|
| - bool multiline,
|
| - views::TextfieldController* controller)
|
| - : controller_(controller) {
|
| - textfields_.push_back(
|
| - new DecoratedTextfield(base::string16(), placeholder, this));
|
| - if (multiline) {
|
| - textfields_.push_back(
|
| - new DecoratedTextfield(base::string16(), placeholder, this));
|
| - }
|
| - SetText(default_value);
|
| -
|
| - for (std::list<DecoratedTextfield*>::iterator iter = textfields_.begin();
|
| - iter != textfields_.end(); ++iter) {
|
| - AddChildView(*iter);
|
| - }
|
| -
|
| - SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0,
|
| - kManualInputRowPadding));
|
| -}
|
| -
|
| -ExpandingTextfield::~ExpandingTextfield() {}
|
| -
|
| -void ExpandingTextfield::SetText(const base::string16& text) {
|
| - textfields_.front()->SetText(text);
|
| - std::vector<base::string16> strings = base::SplitString(
|
| - text, base::string16(1, '\n'),
|
| - base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
|
| -
|
| - size_t i = 0;
|
| - for (std::list<DecoratedTextfield*>::iterator iter = textfields_.begin();
|
| - iter != textfields_.end(); ++iter) {
|
| - (*iter)->SetText(i < strings.size() ? strings[i++] : base::string16());
|
| - }
|
| -
|
| - for (; i < strings.size(); ++i) {
|
| - textfields_.push_back(new DecoratedTextfield(
|
| - strings[i],
|
| - textfields_.front()->GetPlaceholderText(),
|
| - this));
|
| - AddChildView(textfields_.back());
|
| - PreferredSizeChanged();
|
| - }
|
| -}
|
| -
|
| -base::string16 ExpandingTextfield::GetText() {
|
| - base::string16 text = textfields_.front()->text();
|
| - std::list<DecoratedTextfield*>::const_iterator iter = ++textfields_.begin();
|
| - while (iter != textfields_.end()) {
|
| - text += base::ASCIIToUTF16("\n") + (*iter++)->text();
|
| - }
|
| - base::TrimWhitespace(text, base::TRIM_ALL, &text);
|
| - return text;
|
| -}
|
| -
|
| -void ExpandingTextfield::SetInvalid(bool invalid) {
|
| - textfields_.front()->SetInvalid(invalid);
|
| -}
|
| -
|
| -void ExpandingTextfield::SetDefaultWidthInCharacters(int chars) {
|
| - ForEachTextfield(&DecoratedTextfield::set_default_width_in_chars, chars);
|
| -}
|
| -
|
| -void ExpandingTextfield::SetPlaceholderText(const base::string16& placeholder) {
|
| - ForEachTextfield<views::Textfield, const base::string16&>(
|
| - &DecoratedTextfield::set_placeholder_text, placeholder);
|
| -}
|
| -
|
| -void ExpandingTextfield::SetIcon(const gfx::Image& icon) {
|
| - textfields_.front()->SetIcon(icon);
|
| -}
|
| -
|
| -void ExpandingTextfield::SetTooltipIcon(const base::string16& text) {
|
| - textfields_.front()->SetTooltipIcon(text);
|
| -}
|
| -
|
| -void ExpandingTextfield::SetEditable(bool editable) {
|
| - ForEachTextfield(&DecoratedTextfield::SetEditable, editable);
|
| -}
|
| -
|
| -const char* ExpandingTextfield::GetClassName() const {
|
| - return kViewClassName;
|
| -}
|
| -
|
| -void ExpandingTextfield::ContentsChanged(views::Textfield* sender,
|
| - const base::string16& new_contents) {
|
| - if (textfields_.size() > 1 && sender == textfields_.back() &&
|
| - !new_contents.empty()) {
|
| - textfields_.push_back(
|
| - new DecoratedTextfield(base::string16(),
|
| - sender->GetPlaceholderText(),
|
| - this));
|
| - AddChildView(textfields_.back());
|
| - PreferredSizeChanged();
|
| - }
|
| -
|
| - controller_->ContentsChanged(sender, new_contents);
|
| -}
|
| -
|
| -bool ExpandingTextfield::HandleKeyEvent(views::Textfield* sender,
|
| - const ui::KeyEvent& key_event) {
|
| - return controller_->HandleKeyEvent(sender, key_event);
|
| -}
|
| -
|
| -bool ExpandingTextfield::HandleMouseEvent(views::Textfield* sender,
|
| - const ui::MouseEvent& mouse_event) {
|
| - return controller_->HandleMouseEvent(sender, mouse_event);
|
| -}
|
| -
|
| -template <typename BaseType, typename Param>
|
| -void ExpandingTextfield::ForEachTextfield(
|
| - void (BaseType::* f)(Param), Param p) const {
|
| - for (std::list<DecoratedTextfield*>::const_iterator iter =
|
| - textfields_.begin();
|
| - iter != textfields_.end(); ++iter) {
|
| - base::Bind(f, base::Unretained(*iter), p).Run();
|
| - }
|
| -}
|
| -
|
| -} // namespace autofill
|
|
|