mirror of
https://gitlab.futo.org/keyboard/latinime.git
synced 2024-09-28 14:54:30 +01:00
DO NOT MERGE - Captures complete motion data for all words in an n-gram. - Also filters n-grams properly; if any word in the n-gram is not in the dictionary, it is not included. - Simplify ResearchLog to not require explicit state - Added LogBuffer class MainLogBuffer class to allow n-gram-level decisions about privacy. - Moved LogUnit out from ResearchLogger multi-project change with Ie2bc79fd7fe6b951b24771e94b8d4ca21989af65 Bug: 6188932 Change-Id: I568c90d4af07e7c759c1e7fc64b716bd8c7b4ae5
82 lines
2.9 KiB
Java
82 lines
2.9 KiB
Java
/*
|
|
* Copyright (C) 2012 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
* use this file except in compliance with the License. You may obtain a copy of
|
|
* the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations under
|
|
* the License.
|
|
*/
|
|
|
|
package com.android.inputmethod.research;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
/**
|
|
* A group of log statements related to each other.
|
|
*
|
|
* A LogUnit is collection of LogStatements, each of which is generated by at a particular point
|
|
* in the code. (There is no LogStatement class; the data is stored across the instance variables
|
|
* here.) A single LogUnit's statements can correspond to all the calls made while in the same
|
|
* composing region, or all the calls between committing the last composing region, and the first
|
|
* character of the next composing region.
|
|
*
|
|
* Individual statements in a log may be marked as potentially private. If so, then they are only
|
|
* published to a ResearchLog if the ResearchLogger determines that publishing the entire LogUnit
|
|
* will not violate the user's privacy. Checks for this may include whether other LogUnits have
|
|
* been published recently, or whether the LogUnit contains numbers, etc.
|
|
*/
|
|
/* package */ class LogUnit {
|
|
private final ArrayList<String[]> mKeysList = new ArrayList<String[]>();
|
|
private final ArrayList<Object[]> mValuesList = new ArrayList<Object[]>();
|
|
private final ArrayList<Boolean> mIsPotentiallyPrivate = new ArrayList<Boolean>();
|
|
private String mWord;
|
|
private boolean mContainsDigit;
|
|
|
|
public void addLogStatement(final String[] keys, final Object[] values,
|
|
final Boolean isPotentiallyPrivate) {
|
|
mKeysList.add(keys);
|
|
mValuesList.add(values);
|
|
mIsPotentiallyPrivate.add(isPotentiallyPrivate);
|
|
}
|
|
|
|
public void publishTo(final ResearchLog researchLog, final boolean isIncludingPrivateData) {
|
|
final int size = mKeysList.size();
|
|
for (int i = 0; i < size; i++) {
|
|
if (!mIsPotentiallyPrivate.get(i) || isIncludingPrivateData) {
|
|
researchLog.outputEvent(mKeysList.get(i), mValuesList.get(i));
|
|
}
|
|
}
|
|
}
|
|
|
|
public void setWord(String word) {
|
|
mWord = word;
|
|
}
|
|
|
|
public String getWord() {
|
|
return mWord;
|
|
}
|
|
|
|
public boolean hasWord() {
|
|
return mWord != null;
|
|
}
|
|
|
|
public void setContainsDigit() {
|
|
mContainsDigit = true;
|
|
}
|
|
|
|
public boolean hasDigit() {
|
|
return mContainsDigit;
|
|
}
|
|
|
|
public boolean isEmpty() {
|
|
return mKeysList.isEmpty();
|
|
}
|
|
}
|