1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)package org.chromium.chrome.browser.autofill; 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)import org.chromium.base.CalledByNative; 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)import org.chromium.base.JNINamespace; 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)/** 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)* JNI call glue for AutofillExternalDelagate C++ and Java objects. 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)*/ 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)@JNINamespace("autofill") 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)public class AutofillLogger { 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) /** 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * An entry to be sent to Logger. 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) */ 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public static class LogEntry { 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private final String mAutofilledValue; 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private final String mProfileFullName; 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private LogEntry(String autofilledValue, String profileFullName) { 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mAutofilledValue = autofilledValue; 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) mProfileFullName = profileFullName; 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public String getAutofilledValue() { 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return mAutofilledValue; 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public String getProfileFullName() { 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return mProfileFullName; 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) /** 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * A logger interface. Uses LogItem instead of individual fields to allow 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * changing the items that are logged without breaking the embedder. 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) */ 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public interface Logger { 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public void didFillField(LogEntry logItem); 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private static Logger sLogger = null; 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public static void setLogger(Logger logger) { 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sLogger = logger; 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) @CalledByNative 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private static void didFillField(String autofilledValue, String profileFullName) { 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (sLogger == null) return; 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sLogger.didFillField(new LogEntry(autofilledValue, profileFullName)); 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 56