1// Copyright 2013 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_ANDROID_PASSWORD_UI_VIEW_ANDROID_H_ 6#define CHROME_BROWSER_ANDROID_PASSWORD_UI_VIEW_ANDROID_H_ 7 8#include <vector> 9 10#include "base/android/jni_weak_ref.h" 11#include "base/android/scoped_java_ref.h" 12#include "chrome/browser/password_manager/password_store_factory.h" 13#include "chrome/browser/ui/passwords/password_manager_presenter.h" 14#include "chrome/browser/ui/passwords/password_ui_view.h" 15#include "components/password_manager/core/browser/password_store.h" 16#include "components/password_manager/core/browser/password_store_consumer.h" 17 18// PasswordUIView for Android, contains jni hooks that allows Android UI to 19// display passwords and route UI commands back to native 20// PasswordManagerPresenter. 21class PasswordUIViewAndroid : public PasswordUIView { 22 public: 23 PasswordUIViewAndroid(JNIEnv* env, jobject); 24 virtual ~PasswordUIViewAndroid(); 25 26 // PasswordUIView implementation. 27 virtual Profile* GetProfile() OVERRIDE; 28 virtual void ShowPassword(size_t index, const base::string16& password_value) 29 OVERRIDE; 30 virtual void SetPasswordList( 31 const ScopedVector<autofill::PasswordForm>& password_list, 32 bool show_passwords) OVERRIDE; 33 virtual void SetPasswordExceptionList( 34 const ScopedVector<autofill::PasswordForm>& password_exception_list) 35 OVERRIDE; 36 37 // Calls from Java. 38 base::android::ScopedJavaLocalRef<jobject> GetSavedPasswordEntry( 39 JNIEnv* env, jobject, int index); 40 base::android::ScopedJavaLocalRef<jstring> 41 GetSavedPasswordException(JNIEnv* env, jobject, int index); 42 void UpdatePasswordLists(JNIEnv* env, jobject); 43 void HandleRemoveSavedPasswordEntry(JNIEnv* env, jobject, int index); 44 void HandleRemoveSavedPasswordException(JNIEnv* env, jobject, int index); 45 // Destroy the native implementation. 46 void Destroy(JNIEnv*, jobject); 47 48 // JNI registration 49 static bool RegisterPasswordUIViewAndroid(JNIEnv* env); 50 51 private: 52 PasswordManagerPresenter password_manager_presenter_; 53 // Java side of UI controller. 54 JavaObjectWeakGlobalRef weak_java_ui_controller_; 55 56 DISALLOW_COPY_AND_ASSIGN(PasswordUIViewAndroid); 57}; 58 59#endif // CHROME_BROWSER_ANDROID_PASSWORD_UI_VIEW_ANDROID_H_ 60