autofill_dialog_view_tester_views.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
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#include "chrome/browser/ui/views/autofill/autofill_dialog_view_tester_views.h"
6
7#include "base/logging.h"
8#include "chrome/browser/ui/views/autofill/autofill_dialog_views.h"
9#include "chrome/browser/ui/views/autofill/expanding_textfield.h"
10#include "ui/base/models/combobox_model.h"
11#include "ui/views/controls/combobox/combobox.h"
12#include "ui/views/controls/textfield/textfield.h"
13#include "ui/views/controls/webview/webview.h"
14#include "ui/views/widget/widget.h"
15#include "ui/views/window/dialog_client_view.h"
16
17namespace autofill {
18
19scoped_ptr<AutofillDialogViewTester> AutofillDialogViewTester::For(
20    AutofillDialogView* view) {
21  return scoped_ptr<AutofillDialogViewTester>(new
22      AutofillDialogViewTesterViews(static_cast<AutofillDialogViews*>(view)));
23}
24
25AutofillDialogViewTesterViews::AutofillDialogViewTesterViews(
26    AutofillDialogViews* view)
27    : view_(view) {}
28
29AutofillDialogViewTesterViews::~AutofillDialogViewTesterViews() {}
30
31void AutofillDialogViewTesterViews::SubmitForTesting() {
32  view_->Accept();
33}
34
35void AutofillDialogViewTesterViews::CancelForTesting() {
36  view_->GetDialogClientView()->CancelWindow();
37}
38
39base::string16 AutofillDialogViewTesterViews::GetTextContentsOfInput(
40    ServerFieldType type) {
41  ExpandingTextfield* textfield = view_->TextfieldForType(type);
42  if (textfield)
43    return textfield->GetText();
44
45  views::Combobox* combobox = view_->ComboboxForType(type);
46  if (combobox)
47    return combobox->model()->GetItemAt(combobox->selected_index());
48
49  NOTREACHED();
50  return base::string16();
51}
52
53void AutofillDialogViewTesterViews::SetTextContentsOfInput(
54    ServerFieldType type,
55    const base::string16& contents) {
56  ExpandingTextfield* textfield = view_->TextfieldForType(type);
57  if (textfield) {
58    textfield->SetText(contents);
59    return;
60  }
61
62  views::Combobox* combobox = view_->ComboboxForType(type);
63  if (combobox) {
64    if (!combobox->SelectValue(contents))
65      combobox->SetSelectedIndex(combobox->model()->GetDefaultIndex());
66    return;
67  }
68
69  NOTREACHED();
70}
71
72void AutofillDialogViewTesterViews::SetTextContentsOfSuggestionInput(
73    DialogSection section,
74    const base::string16& text) {
75  view_->GroupForSection(section)->suggested_info->textfield()->SetText(text);
76}
77
78void AutofillDialogViewTesterViews::ActivateInput(ServerFieldType type) {
79  view_->InputEditedOrActivated(type, gfx::Rect(), false);
80}
81
82gfx::Size AutofillDialogViewTesterViews::GetSize() const {
83  return view_->GetWidget() ? view_->GetWidget()->GetRootView()->size() :
84                              gfx::Size();
85}
86
87content::WebContents* AutofillDialogViewTesterViews::GetSignInWebContents() {
88  return view_->sign_in_web_view_->web_contents();
89}
90
91bool AutofillDialogViewTesterViews::IsShowingOverlay() const {
92  return view_->overlay_view_->visible();
93}
94
95bool AutofillDialogViewTesterViews::IsShowingSection(DialogSection section)
96    const {
97  return view_->GroupForSection(section)->container->visible();
98}
99
100}  // namespace autofill
101