1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "android_webview/native/aw_autofill_manager_delegate.h"
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "android_webview/browser/aw_browser_context.h"
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "android_webview/browser/aw_content_browser_client.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "android_webview/browser/aw_pref_store.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "android_webview/native/aw_contents.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/android/jni_android.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/android/jni_string.h"
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/android/scoped_java_ref.h"
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/logging.h"
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/prefs/pref_registry_simple.h"
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/prefs/pref_service.h"
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/prefs/pref_service_builder.h"
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/content/browser/autocheckout/whitelist_manager.h"
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_popup_delegate.h"
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/common/autofill_pref_names.h"
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/user_prefs/user_prefs.h"
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/public/browser/web_contents.h"
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/public/browser/web_contents_view.h"
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "jni/AwAutofillManagerDelegate_jni.h"
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochusing base::android::AttachCurrentThread;
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochusing base::android::ConvertUTF16ToJavaString;
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochusing base::android::ScopedJavaLocalRef;
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochusing content::WebContents;
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochDEFINE_WEB_CONTENTS_USER_DATA_KEY(android_webview::AwAutofillManagerDelegate);
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace android_webview {
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Ownership: The native object is created (if autofill enabled) and owned by
36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// AwContents. The native object creates the java peer which handles most
37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// autofill functionality at the java side. The java peer is owned by Java
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// AwContents. The native object only maintains a weak ref to it.
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochAwAutofillManagerDelegate::AwAutofillManagerDelegate(WebContents* contents)
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    : web_contents_(contents),
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      save_form_data_(false) {
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  JNIEnv* env = AttachCurrentThread();
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ScopedJavaLocalRef<jobject> delegate;
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  delegate.Reset(
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      Java_AwAutofillManagerDelegate_create(env, reinterpret_cast<jint>(this)));
46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  AwContents* aw_contents = AwContents::FromWebContents(web_contents_);
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  aw_contents->SetAwAutofillManagerDelegate(delegate.obj());
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  java_ref_ = JavaObjectWeakGlobalRef(env, delegate.obj());
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochAwAutofillManagerDelegate::~AwAutofillManagerDelegate() {
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  HideAutofillPopup();
54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::SetSaveFormData(bool enabled) {
57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  save_form_data_ = enabled;
58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool AwAutofillManagerDelegate::GetSaveFormData() {
61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return save_form_data_;
62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochPrefService* AwAutofillManagerDelegate::GetPrefs() {
65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return user_prefs::UserPrefs::Get(
66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      AwContentBrowserClient::GetAwBrowserContext());
67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochautofill::PersonalDataManager*
70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochAwAutofillManagerDelegate::GetPersonalDataManager() {
71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return NULL;
72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochautofill::autocheckout::WhitelistManager*
75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochAwAutofillManagerDelegate::GetAutocheckoutWhitelistManager() const {
76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return NULL;
77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::ShowAutofillPopup(
80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::RectF& element_bounds,
81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    base::i18n::TextDirection text_direction,
82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const std::vector<string16>& values,
83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const std::vector<string16>& labels,
84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const std::vector<string16>& icons,
85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const std::vector<int>& identifiers,
86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    base::WeakPtr<autofill::AutofillPopupDelegate> delegate) {
87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  values_ = values;
89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  identifiers_ = identifiers;
90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  delegate_ = delegate;
91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Convert element_bounds to be in screen space.
93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  gfx::Rect client_area;
94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  web_contents_->GetView()->GetContainerBounds(&client_area);
95eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  gfx::RectF element_bounds_in_screen_space =
96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      element_bounds + client_area.OffsetFromOrigin();
97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ShowAutofillPopupImpl(element_bounds_in_screen_space,
99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                        values,
100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                        labels,
101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                        identifiers);
102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::ShowAutofillPopupImpl(
105eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::RectF& element_bounds,
106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const std::vector<string16>& values,
107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const std::vector<string16>& labels,
108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const std::vector<int>& identifiers) {
109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  JNIEnv* env = AttachCurrentThread();
110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (obj.is_null())
112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    return;
113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // We need an array of AutofillSuggestion.
115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  size_t count = values.size();
116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ScopedJavaLocalRef<jobjectArray> data_array =
118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      Java_AwAutofillManagerDelegate_createAutofillSuggestionArray(env, count);
119eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
120eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  for (size_t i = 0; i < count; ++i) {
121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    ScopedJavaLocalRef<jstring> name = ConvertUTF16ToJavaString(env, values[i]);
122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    ScopedJavaLocalRef<jstring> label =
123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        ConvertUTF16ToJavaString(env, labels[i]);
124eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    Java_AwAutofillManagerDelegate_addToAutofillSuggestionArray(
125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        env,
126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        data_array.obj(),
127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        i,
128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        name.obj(),
129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        label.obj(),
130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        identifiers[i]);
131eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  }
132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
133eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  Java_AwAutofillManagerDelegate_showAutofillPopup(
134eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      env,
135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      obj.obj(),
136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      element_bounds.x(),
137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      element_bounds.y(), element_bounds.width(),
138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      element_bounds.height(), data_array.obj());
139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
141ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid AwAutofillManagerDelegate::UpdateAutofillPopupDataListValues(
142ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    const std::vector<base::string16>& values,
143ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    const std::vector<base::string16>& labels) {
1446357db748d03d5306a56617a52b962932edc5c39Selim Gurun  // Leaving as an empty method since updating autofill popup window
1456357db748d03d5306a56617a52b962932edc5c39Selim Gurun  // dynamically does not seem to be a useful feature for android webview.
1466357db748d03d5306a56617a52b962932edc5c39Selim Gurun  // See crrev.com/18102002 if need to implement.
147ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
148ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
149eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::HideAutofillPopup() {
150eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  JNIEnv* env = AttachCurrentThread();
151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (obj.is_null())
153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    return;
154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  delegate_.reset();
155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  Java_AwAutofillManagerDelegate_hideAutofillPopup(env, obj.obj());
156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
157eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
158eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool AwAutofillManagerDelegate::IsAutocompleteEnabled() {
159eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return GetSaveFormData();
160eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
161eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
162eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::SuggestionSelected(JNIEnv* env,
163eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                                   jobject object,
164eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                                   jint position) {
165eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (delegate_)
166eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    delegate_->DidAcceptSuggestion(values_[position], identifiers_[position]);
167eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
168eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
169eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::HideRequestAutocompleteDialog() {
170eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
171eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
172eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::OnAutocheckoutError() {
174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::OnAutocheckoutSuccess() {
178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
180eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
181eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::ShowAutofillSettings() {
182eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
183eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
185eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::ConfirmSaveCreditCard(
186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const autofill::AutofillMetrics& metric_logger,
187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const autofill::CreditCard& credit_card,
188eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const base::Closure& save_card_callback) {
189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
190eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
191eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
192bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochbool AwAutofillManagerDelegate::ShowAutocheckoutBubble(
193eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::RectF& bounding_box,
194eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    bool is_google_user,
1957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const base::Callback<void(autofill::AutocheckoutBubbleState)>& callback) {
196eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
197bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch  return false;
198eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
199eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
200eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::HideAutocheckoutBubble() {
201eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
202eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
203eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
204eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::ShowRequestAutocompleteDialog(
205eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const autofill::FormData& form,
206eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const GURL& source_url,
207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    autofill::DialogType dialog_type,
208eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const base::Callback<void(const autofill::FormStructure*,
209eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                              const std::string&)>& callback) {
210eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
211eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
212eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
213eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::AddAutocheckoutStep(
214eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    autofill::AutocheckoutStepType step_type) {
215eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
216eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
217eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
218eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid AwAutofillManagerDelegate::UpdateAutocheckoutStep(
219eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    autofill::AutocheckoutStepType step_type,
220eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    autofill::AutocheckoutStepStatus step_status) {
221eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NOTIMPLEMENTED();
222eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
223eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
224eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool RegisterAwAutofillManagerDelegate(JNIEnv* env) {
225eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return RegisterNativesImpl(env) >= 0;
226eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
227eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
228eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace android_webview
229