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/android/password_authentication_manager.h" 6 7#include "chrome/browser/android/tab_android.h" 8#include "jni/PasswordAuthenticationManager_jni.h" 9 10namespace { 11 12class PasswordAuthenticationCallback { 13 public: 14 explicit PasswordAuthenticationCallback( 15 const base::Closure& success_callback) { 16 success_callback_ = success_callback; 17 } 18 19 void OnResult(bool result) { 20 if (result) 21 success_callback_.Run(); 22 delete this; 23 } 24 25 private: 26 virtual ~PasswordAuthenticationCallback() {} 27 28 base::Closure success_callback_; 29}; 30 31} // namespace 32 33PasswordAuthenticationManager::PasswordAuthenticationManager() { 34} 35 36PasswordAuthenticationManager::~PasswordAuthenticationManager() { 37} 38 39bool PasswordAuthenticationManager::RegisterPasswordAuthenticationManager( 40 JNIEnv* env) { 41 return RegisterNativesImpl(env); 42} 43 44void PasswordAuthenticationManager::AuthenticatePasswordAutofill( 45 content::WebContents* web_contents, 46 const base::Closure& success_callback) { 47 TabAndroid* tab = TabAndroid::FromWebContents(web_contents); 48 if (!tab) 49 return; 50 51 JNIEnv* env = base::android::AttachCurrentThread(); 52 PasswordAuthenticationCallback* auth_callback = 53 new PasswordAuthenticationCallback(success_callback); 54 Java_PasswordAuthenticationManager_requestAuthentication( 55 env, 56 tab->GetJavaObject().obj(), 57 Java_PasswordAuthenticationCallback_create( 58 env, 59 reinterpret_cast<intptr_t>(auth_callback)).obj()); 60} 61 62// static 63void OnResult(JNIEnv* env, 64 jclass jcaller, 65 jlong callback_ptr, 66 jboolean authenticated) { 67 PasswordAuthenticationCallback* callback = 68 reinterpret_cast<PasswordAuthenticationCallback*>(callback_ptr); 69 callback->OnResult(authenticated); 70} 71