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