26 Commits

Author SHA1 Message Date
Kurt Partridge
7d72ca0b20 Avoid JsonWriter multi-write error
JsonWriter requires that its clients pass it only a single top-level object.
The existing implementation tries to make code cleaner by having mJsonWriter
never be null, and instead use a global static "NULL_JSON_WRITER" that just
discards data.  But because JsonWriter complains if more than one top-level
object is passed, making this a global object does not work.  This change
instead copes with mJsonWriter being null.

Change-Id: Ia37ccfc8646e91f11a64713dd92d2846eb86ac54
2013-05-10 18:21:08 -07:00
Kurt Partridge
8064c669fe Fix looping logic bugs.
shiftOut() is getting called once too often through these for loops.

Change-Id: I9a68b49e6cc1469bcddd673ab1567e238cf192b8
2013-05-07 08:33:31 -07:00
Kurt Partridge
e92b5e145f Allow LogUnits to hold >1 word
LogUnits have been annotated with the autocorrected words, but
until now this was assumed to be a single word without spaces.
But spaceless typing can result in spaces in the LogUnit label.  With this
change, the LogUnit inspects the autocorrected text to determine how many
words were inserted, and counts them accurately.

This change corrects a privacy problem, which was that if the word sampling
algorithm chose a LogUnit that actually contained multiple words, then more
than two successive words would be included in the log.

Change-Id: I7c01c3dd3ac33d7e96c00836256bae9c14b124ed
2013-04-19 08:55:39 -07:00
Kurt Partridge
bf62dc9460 Fix bug in counting words between samples
Previously MainLogBuffer#shiftOutWords() assumed it wouldn't be called if
mNumWordsUntilSafeToSample was 0.  This relaxes this assumption (which is in fact
false in the current code).

Change-Id: I8723248095e84a0d9d6f4639b4742cc7dda9716b
2013-04-17 08:44:06 -07:00
Tadashi G. Takaoka
841c295f3c resolved conflicts for merge of 5b048292 to master
Change-Id: I67ebab46954cd7b8e3e79e7fed523bafb15f8835
2013-03-19 10:48:10 +09:00
Ken Wakasa
9c3860ce46 Rename ProductionFlag.IS_EXPERIMENTAL to USES_DEVELOPMENT_ONLY_DIAGNOSTICS
bug: 8393568
Change-Id: Ie5edf44a3627aca9416145aff56bf05bbf2a05f3
2013-03-18 23:15:47 +09:00
Kurt Partridge
b094372bd6 Remove MainLogBuffer#setSuggest()
multi-project commit with Ia98b1406fc2ee11a96893c77ea58d800fece7624

Change-Id: I8bc3d07b83dbe7d8fc56a618de07dade7f510b13
2013-03-01 13:32:11 -08:00
Kurt Partridge
5ee261a990 [TestPrep17] Allow fake dictionary for testing
Currently ResearchLog requires a full dictionary to perform privacy-related checks.
This makes testing difficult.  This change allows a fake dictionary to be used instead.

Change-Id: Ifca5bd8647475a6b84e4324117e0faa0a35479ee
2013-02-26 19:22:55 -08:00
Kurt Partridge
ab0bda1499 [TestPrep5] Parameterize MainLogBuffer
Change-Id: I6d84f490922cd1f40e44ca4f95c9d950fba38290
2013-02-20 19:37:12 -08:00
Kurt Partridge
22acdb540c [TestPrep4] Add some finals
Change-Id: Ib437a6ad7fd6a897e2bbc65afe881ae8a3b1cbb0
2013-02-20 19:37:12 -08:00
Kurt Partridge
19e05359e6 [TestPrep3] Add helper method to retrive dictionary
Change-Id: Id6e03c6f8a3e96979d589f0605ac056fcad7e1ff
2013-02-20 19:36:56 -08:00
Kurt Partridge
2baa4b0701 [Rlog83] Fix missing uses of hasWord() abstraction
Change-Id: I78e286723b1b8c8bcc7aea0cc81ef2ee66a193ac
2013-01-23 09:21:56 -08:00
Kurt Partridge
8b788374de Merge "[Rlog78b] Make log privacy filtering decisions on n-grams" 2013-01-21 19:39:38 +00:00
Kurt Partridge
80685aa4b9 [Rlog78b] Make log privacy filtering decisions on n-grams
Previously, words were pushed out of a LogBuffer one at a time.  The receiving code had to keep
state to know whether a n-gram was safe to log.  This patch looks at the entire n-gram and makes a
single decision based on it alone.

mult-project commit with I3c40d7e02c77943d2668094ddb1d03efb942c74f

Change-Id: Id7d90bbd551b1a2f4e0e35f38852652f68f273f8
2013-01-21 10:50:32 -08:00
Tadashi G. Takaoka
8aa9963a89 Fix Apache license comment
Change-Id: Ic56167f952a7f4449da366e1e81610e72c966086
2013-01-21 22:23:37 +09:00
Kurt Partridge
403c423940 [Rlog56] Buffer words before pushing out LogUnit
Previously, a logbuffer only held an n-gram.  Data went in and out of it, FIFO, until privacy
conditions were met (i.e. data not collected too frequently), and then an n-gram was saved.
E.g., if n=2, and only 10% of data is collected, then 18 words went through the logbuffer before
it captured the next 2 words.

However, if a user then went back and edited the n-gram, these edits were not captured.

This change changes the logbuffer size to temporarily hold data about words that are not recorded,
so that if the user backs up over them, the edits to an n-gram that we do eventually capture are
stored.  If the example above, instead of a logbuffer holding 2 words, it holds 20.  The system
waits until all the words not needed for the n-gram have been gathered (i.e. the buffer is full),
so the user has adequate time to edit, before shifting out the n-gram.  The buffer is still flushed
when the user closes the IME.  See the comment for MainLogBuffer for an explanation.

multi-project commit with I45317bc95eeb859adc1b35b24d0478f2df1a67f3

Change-Id: I4ffd95d08c6437dcf650d866ef9e24b6af512334
2013-01-09 21:09:19 -08:00
Kurt Partridge
3b95eaf70b [Rlog50] capture bigrams properly even with deletions
multi-project commit with Ia4ec213e8356897807cb6a278fccdbaa945732f0

Change-Id: Ib3fe886dc889954a31586ab81d00a21d8d55efd2
2013-01-09 16:02:37 -08:00
Kurt Partridge
f77dd424b0 [Rlog27] Refactor LogBuffer
Cleanup and prepare for replaying

Change-Id: Ie09e912c6e9c0d7375168c575ccf1cfd9375dd31
2013-01-03 16:36:32 -08:00
Kurt Partridge
0aafbcf879 Add ProductionFlag.IS_EXPERIMENTAL_DEBUG
The IS_EXPERIMENTAL_DEBUG flag gives a single place to turn off all debugging flags that might be
set and to also enforce privacy controls.  Currently only used in the research package.

multi-project commit with I9275a7c8e40bf56106447a02d3056655329074b3

Change-Id: If769fe3a633f33963ca49e8ddf01ab24a30b6fd2
2012-12-18 19:46:30 -08:00
Kurt Partridge
1a27336837 [Rlog4] ResearchLogger add LOG_EVERYTHING flag
- broaden OUTPUT_WHOLE_BUFFER to log not just the buffer at the end, but everything along the
  way.  This should only be set when the user is aware that logging is on, e.g. in a user test.

Change-Id: I8f9874697524e533586da40d0a3e452f6a04d3e4
2012-12-17 21:39:35 -08:00
Kurt Partridge
3370dc8237 [Rlog2] ResearchLogging fix multi-space logging
multi-space logging should look like single-space logging, missing a few minor log statements
(SuggestionUpdates, SetComposingText)

multi-project commit with I2af842348c2f2b8f7271ac5b63def245e83df24d

Change-Id: Icd3187c0d0377255f82787afffea657c14345803
2012-12-17 09:53:43 -08:00
Kurt Partridge
5e854e281a [Rlog1] Track time of log statements
Log statements are now recorded with a timestamp.  This is important for filtering out statements
not part of words that are sampled when spaces are inserted automatically.

multi-project commit with Change-Id: I68221a2528045d25632aef4bb716f92a4f4a56a4

Change-Id: I46ac9b3b1dcbb08425160d0109028cb64445139c
2012-12-13 18:44:10 -08:00
Kurt Partridge
565b9d2add ResearchLogger add debugging code
Change-Id: I03729506984f259dee63f3a66fd91963e3403d16
2012-11-28 22:46:31 -08:00
Kurt Partridge
bf653996ea ResearchLogging capture full n-gram data
- 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 Ic70ccb6c2e11eb02d887821434b44daa3eb7a3e2

Bug: 6188932
Change-Id: I731d6cff6539e997874f723b68bdb0d9b651b937
2012-08-21 22:37:33 -07:00
Kurt Partridge
3d35908749 Revert "ResearchLogging capture full n-gram data"
This reverts commit 221e756fd7d585f0eb75377b851f23cad24ccd7f

Change-Id: Iefc4e4e27ddc925d4a4634627b0467bd4ee2a66e
2012-08-20 10:17:40 -07:00
Kurt Partridge
221e756fd7 ResearchLogging capture full n-gram data
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
2012-08-17 21:44:07 -07:00