Commit graph

562 commits

Author SHA1 Message Date
Jean Chalard
d9f0c1e020 Merge "Fix an NPE" 2013-07-29 09:46:32 +00:00
Jean Chalard
5408fec63a Fix an NPE
Also make mSuggest private for more security.

Bug: 10045657
Change-Id: I712505e4d2a2606efff5d09ba9b4c656f9e7c7a9
2013-07-29 18:09:48 +09:00
Satoshi Kataoka
732475dd24 Fix build
Change-Id: Iea21c449c4a2f36f7f6cde28cb295432838862aa
2013-07-29 14:33:16 +09:00
Satoshi Kataoka
ffcbbaf127 Refactor on UserHistoryDictionary
Bug: 9429906
Change-Id: I576a91643bdaf5017cc826ac2e07a74a9a275d60
2013-07-26 13:00:19 +09:00
Tadashi G. Takaoka
0c3a9b549c Make RunInLocale as top-level class
Change-Id: I07ed606b7aba098a5be85533e5baff300b21fb44
2013-07-24 16:00:25 +09:00
Tadashi G. Takaoka
a410cb48ea Move subtype related utility class to utils package
Change-Id: I3564796531ea85f2ebafde40cd822b806b8741df
2013-07-24 15:52:43 +09:00
Tadashi G. Takaoka
b80cc628ff Fix KeySpecParserSplitTests
Change-Id: Icf4525c735cda0330a3bd0f9628165ec722b64a8
2013-07-23 19:29:33 +09:00
Tadashi G. Takaoka
e6c5184742 Fix NPE in SubtypeLocale.getSubtypeDisplayName
This change moves the methods that create the subtype display name for
spacebar from MainKeyboardView to SubtypeLocale class, and
consolidates SpacebarTextTests with SubtypeLocaleTests.

Bug: 9962955
Change-Id: Ifa0a08ff80bc30753a213c2feb471599ca63fa66
2013-07-23 13:00:04 +09:00
Tadashi G. Takaoka
dc7111013f Merge "Fix IllegalArgumentException in MoreKeysKeyboard" 2013-07-19 06:44:54 +00:00
Tadashi G. Takaoka
b0e76724ed Fix IllegalArgumentException in MoreKeysKeyboard
It seems that MainKeyboardView.getMeasuredWidth() returns weird
value. Using KeyboardId.mWidth as main keyboard width may resolve the
issue.

Bug: 9684622
Change-Id: I975bfb934b8d2448e72555a3ccae0123341186b9
2013-07-19 11:43:50 +09:00
Ken Wakasa
b03447e1af Move a couple classes to the utils package
Change-Id: Ia14a2011d79bad7cd02697b9254705f6e2099442
2013-07-19 10:46:46 +09:00
Jean Chalard
06aa3d0286 Merge "Small debug helper" 2013-07-16 08:55:53 +00:00
Jean Chalard
1588252968 Small debug helper
So that I don't have to find out everything again each time the
test facility finds a case that does not work, and I want to dump
the output to a combined file.

Change-Id: I9f77f86055d1609c2e37747ac47421db1ba2498e
2013-07-16 15:57:09 +09:00
Keisuke Kuroynagi
28a70b63c5 Add a test for user history for switching languages.
testStressTestForSwitchingLanguageAndAddingWords took 101996 ms

Bug: 6669677
Change-Id: I62849674147e4845955060124221da8211e9b3ca
2013-07-16 12:17:56 +09:00
Jean Chalard
4a1c26aba7 Change how the length of the random words are chosen.
This is much more robust and much better for testing.

Change-Id: I43f900f9debc1d1ae4c3f3dd07dbe0ac85d31f52
2013-07-04 22:22:34 +09:00
Jean Chalard
cea80fd955 Have random words stick to a restricted (random) charset
Change-Id: Ib4045ebc9659f1b60183f2356e60e449d62c5be9
2013-07-04 22:21:27 +09:00
Jean Chalard
fe156213d7 Add a two-args constructor to BinaryDictIOTests
Change-Id: Ie26e22754bfa5d58135349164c57007c86bd97e8
2013-07-04 17:14:02 +09:00
Tadashi G. Takaoka
f87e8f7ec1 Handling key repeat by emulating key press and code input
This change also eliminates a reference of
AudioAndHapticFeedbackManager from KeyboardSwitcher and MainKeyboard.

Bug: 6522943
Change-Id: Iac42ec8ff00c66deb76a660ffc07477923a58959
2013-07-02 19:50:34 +09:00
Jean Chalard
edf5842568 Merge "Add args to dicttool test." 2013-07-01 07:37:54 +00:00
Jean Chalard
e5a3b77664 Merge "Move Range out of RichInputConnection and rename it." 2013-07-01 07:20:51 +00:00
Jean Chalard
675bcf191c Move Range out of RichInputConnection and rename it.
Range has grown a bit too big to stay an internal class.

Change-Id: Ic3fbc48a5d10776eedd7559c4d696e5926b88288
2013-07-01 15:41:13 +09:00
Jean Chalard
4b7acd1df6 Add args to dicttool test.
Change-Id: I0667e0a5a6f6db3964cfcca5c8f083b9ceb41a2e
2013-07-01 15:28:32 +09:00
Jean Chalard
f0af452ce2 Do not re-resume suggestion if it's not needed.
This is much better interface-wise. It eliminates all blinking
of the line in the practice.

Bug: 8874148
Bug: 8864306
Change-Id: I87754e44784327c2e9c8b162d598d145e20668e8
2013-07-01 14:40:12 +09:00
Jean Chalard
2f7f6257b6 Ignore spans that are not the right size.
Bug: 8839763
Bug: 8862327
Change-Id: I5d49c86edcbc0fc1b2b147856437cfbadd678377
2013-06-26 23:02:50 +09:00
Ken Wakasa
bc1813186d Merge "Move util classes to the latin/utils directory" 2013-06-24 08:49:06 +00:00
Ken Wakasa
e28eba5074 Move util classes to the latin/utils directory
Change-Id: I1c5b27c8edf231680edb8d96f63b9d04cfc6a6fa
2013-06-24 17:04:40 +09:00
Jean Chalard
a099638667 Fix tests for Ia78d3540
Bug: 9550023
Change-Id: I13f4411573ff7b2564e88fc9b9a8d801dde23019
2013-06-24 15:40:53 +09:00
Jean Chalard
23d4eb55ba Add tests to dicttool test.
Bug: 8526576
Change-Id: Idd6f9cd076d5915361c68f5c29afbba67dd54eba
2013-06-20 17:29:37 +09:00
Tadashi G. Takaoka
cbd219a761 Move Base64Reader to utils package
Change-Id: Id46898c5cae268f05850d79938929b7707f27320
2013-06-05 19:39:36 +09:00
Tadashi G. Takaoka
9d4e251826 Merge "Add CsvUtils that conform to RFC 4180" 2013-06-05 06:28:06 +00:00
Tadashi G. Takaoka
3ceeb6bcc6 Add CsvUtils that conform to RFC 4180
Bug: 9070153
Change-Id: I66e55dd2f30fddfeb849edb97bc1cbda6b126d92
2013-06-05 12:26:22 +09:00
Tadashi G. Takaoka
9552badf3c Add CODE_CAPSLOCK for long press shift key
This change utilizes the no panel auto more key feature to implement
long press shift key for shift lock.

Change-Id: I3995d25dc35aea3c67b5aa29299815462eff9cad
2013-06-04 18:20:06 +09:00
Tadashi G. Takaoka
2a9882a433 Rename methods for readability
Change-Id: I8fc2c90cf8d3dce11740f8e61edf6dfde9b1c116
2013-06-03 17:52:21 +09:00
Tadashi G. Takaoka
94af6d9e7f Merge "Make unit test independent from test device locale" 2013-05-28 11:48:09 +00:00
Tadashi G. Takaoka
58067bd952 Merge "Fix unit test assert helper method" 2013-05-28 11:44:16 +00:00
Tadashi G. Takaoka
39bd6ea0dc Merge "Rename StringUtils.parseCsvString to KeySpecParser.splitKeySpecs" 2013-05-28 11:40:10 +00:00
Tadashi G. Takaoka
35091716e7 Fix unit test assert helper method
Change-Id: Id03bf0910708d07b45286dccf8f2bfc97a362ba0
2013-05-28 20:39:39 +09:00
Tadashi G. Takaoka
8586a43424 Make unit test independent from test device locale
Bug: 9112465
Change-Id: I4fe39bebf130799397485dbe6d23199a29a8641e
2013-05-28 20:24:15 +09:00
Tadashi G. Takaoka
dbed20ad8d Rename StringUtils.parseCsvString to KeySpecParser.splitKeySpecs
Change-Id: I16e3f3ebc43772cfd96c824afeddfd225404b857
2013-05-28 20:23:37 +09:00
Tadashi G. Takaoka
4c2ac9ee5f Merge "Rename commaConcatinatedText to commaSplittableText" 2013-05-28 10:58:16 +00:00
Tadashi G. Takaoka
c47bc30db8 Rename commaConcatinatedText to commaSplittableText
This is a follow up of I5a32882a08.

Change-Id: I9f0cda2167811f6bba2af042fbde0a821b4cfecd
2013-05-28 19:17:15 +09:00
Tadashi G. Takaoka
68cf2cd931 Merge "Check all regexp patterns in ResourceUtils.getDeviceOverrideValue" 2013-05-28 10:13:43 +00:00
Tadashi G. Takaoka
4c75ea858a Check all regexp patterns in ResourceUtils.getDeviceOverrideValue
This change also fixes a regexp error of Galaxy S III.

Change-Id: I42a4780bbfd2b083f4e27e61ec513aa875907344
2013-05-28 19:05:40 +09:00
Tadashi G. Takaoka
1b46738796 Rename "csv" in StringUtils to "commaConcatenatedText"
Change-Id: I5a32882a088e4ff5bfe973a86465d6ff839113d9
2013-05-28 16:13:36 +09:00
Satoshi Kataoka
c92e87faf3 Add smoothing utils / matrix libs
Bug: 8556775
Change-Id: I7e0516b344937b84b7d57cc4e5009b7f88e7dc98
2013-05-27 18:08:49 -07:00
Tadashi G. Takaoka
94027c7201 Use Locale.ROOT for locale neutral operations
Bug: 9112465
Change-Id: I6cd63007287b5a1a57cfbabff35d53f66fc5620e
2013-05-24 12:07:30 -07:00
Tadashi G. Takaoka
6f9105383a Remove unnecessary methods of KeyboardSwitcher
Change-Id: Idd3647bb1a1d40df8bb89eda715d45427a58d0cd
2013-05-22 10:49:53 -07:00
Jean Chalard
c9aaba1253 Don't process recorrection or resets when not shown
Bug: 8954116
Change-Id: Ica27dbfc570643bb81e6cdf34cc7c796ea080d71
2013-05-15 20:20:20 +09:00
Tadashi G. Takaoka
41016acacf Back to previous keyboard layout by canceling sliding input
Bug: 8915171
Change-Id: Iabdeb7920f67f89246087c3ee06240406ecfbc3d
2013-05-14 20:28:03 +09:00
Tadashi G. Takaoka
979fb7415b Fix PointerTrackerQueue.releaseAllPointerOlderThan
Change-Id: If353869720895ee5355079c15c724132762dd70c
2013-05-14 15:32:21 +09:00
Tadashi G. Takaoka
18184eacb1 Support regular expression for condition pattern
Bug: 8556975
Change-Id: Iffc53d6a40dd77860434c5f7f4f59af5cd1ba92b
2013-05-13 16:25:03 +09:00
Tadashi G. Takaoka
d69fa0a09a Support multiple condition for getDeviceOverrideValue
Bug: 8556975
Change-Id: I29d3a305b6ac3d8e3620c6d8592d85047d62bf48
2013-05-13 14:38:21 +09:00
Tadashi G. Takaoka
6d3d2ae064 Refactor StringUtils.findPrefixedString to findValueOfKey
Bug: 8556975
Change-Id: I275c99db8a0d10594a5a8c0c27ebc1a87495c307
2013-05-10 18:44:04 +09:00
Tadashi G. Takaoka
7f8dd50b8f Save automatic shift state while orientation changing
Bug: 8734294
Change-Id: Ib2bc262aacedf786a318c2fe1bd4420a21e7d847
2013-05-02 15:48:56 +09:00
Tadashi G. Takaoka
307f49b8c1 Mark some unit tests as @MediumTest
Change-Id: Iaa0a691903526f57510a0305c02cc42cf8d90f9e
2013-05-02 11:25:35 +09:00
Satoshi Kataoka
c43417fb5d Fix build
Change-Id: Ib9373b26b04b0f4789b3cd6a7af64e4bcd2c4b9c
2013-05-01 19:01:36 +09:00
Satoshi Kataoka
d5781eef62 Fix Google spell checker tests
Bug: 8613307

Change-Id: Ief04a4abb6dc1f79660a2e419c9c5e271802b5a1
2013-05-01 18:21:56 +09:00
Tadashi G. Takaoka
13d5da8b88 Don't triger onPress and startLongPressTimer when gesture is canceled
Bug: 8650846
Change-Id: Ice5ef07d6833422906b0b756206e097f75d1f2db
2013-04-22 19:36:08 +09:00
Jean Chalard
73ec85b8ad Don't insert automatic spaces when text looks like a URL
This is about as ad-hoc as it gets, but then again, what we want
is probably as ad-hoc as it gets.
All URL boxes I know of double as search bars, and not adding
automatic spaces there sucks (e.g. in Chrome URL bar).
And in other boxes actually you don't want to add a space if
it looks like a URL. QSB isn't even a search box, and it behaves
like this.

So I think this is actually the right answer to the problem.

Bug: 7062925
Change-Id: Ib09472b34644fd5bf2dc84bb97cedeeba28bcd02
2013-04-16 18:03:49 +09:00
Jean Chalard
8094bf45d7 Match the keyboard state to the recapitalize state.
Bug: 7657025
Change-Id: I2f8fe7fc4596a498322ba5ccabbd0c18a2bc36cf
2013-04-16 14:25:03 +09:00
Jean Chalard
b794e904a3 Clean up RecapitalizeStatus
Change-Id: Ib4d002f90cd3a0e9ad4c04b883b0c1f05ada3ccf
2013-04-16 13:11:18 +09:00
Jean Chalard
bc501647fd Remove a useless function
Bug: 8583091
Change-Id: I9195d68e44e9a282e25ccd2978d7b4088f600170
2013-04-15 22:01:37 +09:00
Jean Chalard
033958330d Merge "Have Latin IME re-capitalize a selected string" 2013-04-15 11:29:28 +00:00
Jean Chalard
2995abe7aa Have Latin IME re-capitalize a selected string
Upon pressing Shift, if there is currently a selected string, have
Latin IME change its capitalization.
This does not yet have the keyboard mode follow the mode - the change
is complicated enough as is.

Bug: 7657025
Change-Id: I54fe8485f44e04efd72c71ac9feee5ce21ba06f2
2013-04-15 20:23:01 +09:00
Jean Chalard
0e9ee4d3bf If there are no suggestion span, recompute suggestions.
Bug: 8084810
Change-Id: I1743c09c43ca6835bb2f607684b037bf17d36335
2013-04-15 19:33:23 +09:00
Jean Chalard
001884a1ee Clean up tests and increase speed
Conservatively reduce the number of unigrams to test from 1000
to 100.

Bug: 8583091
Change-Id: I48621ec44ff5f0590640d7c6b174ab5a6d267aaf
2013-04-15 14:25:32 +09:00
Jean Chalard
c2653d0b5c Fix a typo
Change-Id: I27b925be030e9e6ee8ae49dc13f39accec996d7e
2013-04-15 12:57:27 +09:00
Jean Chalard
03d1dff38d Merge "Fix Binary dict tests" 2013-04-15 03:53:54 +00:00
Jean Chalard
c2e9c511cb Fix Binary dict tests
There are two problems here. The first one is the tests would send
an invalid unicode character. Although we could want dicttool to
handle this more gracefully, it's fine for now.

The second problem is much more serious. If a node has more than
128 children, then the java code will crash trying to read the
dictionary back because of a bug that this change fixes. In
theory, it's possible that happens when we try to load the user
history dictionary back from the disk - native code is not affected
so there is no other point that may cause a problem.
In the practice, that means you'd need to have 129 words with a
common prefix (including empty string) but all different after
this. It's almost impossible with Google Keyboard since there are
only so many keys on the keyboard that you can make a word out
of, and then again you'd have to do it repeatedly until it
actually enters the user history dictionary, wait for it to get
saved on the disk.
The bad news is, if you manage to get this far, the keyboard will
crash every time and won't be able to get up until you clear
data for the package.
The good news is, the dictionary itself is not corrupted and only
the reading code is wrong. So updating to a newer version would
actually even recover from this situation.

All in all, considering how almost-impossible this is to trigger,
I don't think even a single user actually did hit this bug.

Bug: 8583091
Change-Id: Iabb2a7f47cbd9ed3193d2a3487318d280753e071
2013-04-15 12:48:16 +09:00
Tadashi G. Takaoka
b12c2af32e Tighten unit test condition of MoreKeysKeyboardBuilder
Bug: 8601979
Change-Id: Icf584f3b35adce69cc3dfc46f3aacfef05e5dd2a
2013-04-15 09:58:18 +09:00
Jean Chalard
128961ade0 Fix failing tests
RichInputConnection#getWordRangeAtCursor may now returning
either a SpannableString or a String. We can't test that with
String#equals(), but TextUtils#equals() does the job for us.

Change-Id: I59ebe54207e92f4d90b49476b64f1e12fd4929cb
2013-04-12 23:38:36 +09:00
Jean Chalard
d89ed47616 Remove voodoo magic.
There was a much, much simpler way of achieving the same thing.

Bug: 8583091
Change-Id: I8882f389312caad3b17335672892a31d30cd00bc
2013-04-12 17:05:43 +09:00
Jean Chalard
1cbb0b8f2a Add some utility functions.
Bug: 7657025
Change-Id: I4889721b5348c77ed56c5157557e9988dea48a02
2013-04-11 16:16:19 +09:00
Jean Chalard
4f43076370 Fix a faulty test
Change-Id: I5c03cea41e9b6e936e8f93b7d756f0fc9520002d
2013-04-10 18:08:27 +09:00
Jean Chalard
99b93d17d5 Fix a bug where autocorrection status would be wrong.
Change-Id: Ic220129dc59f585164dbf63591cd1c96de17fe6f
2013-04-10 17:49:19 +09:00
Tadashi G. Takaoka
d20c5a78e2 Separate StringUtils.capitalizeFirstCharacter
Bug: 8582061
Change-Id: Iac8f65defdd92d7df533bdf0e2937ad897d96363
2013-04-10 14:55:23 +09:00
Jean Chalard
19dcd15493 Merge "Offer to add any OOV typed word to the dictionary." 2013-04-09 10:28:47 +00:00
Jean Chalard
9310f42a36 Offer to add any OOV typed word to the dictionary.
That includes gestures, which used not to work.

Bug: 8532637
Change-Id: I04606565d7000faadf954c4a806c39d4d162a2c1
2013-04-09 12:05:54 +09:00
Jean Chalard
c87449497c Fix bugs and add tests
Change-Id: I6b56b91ace57f4a49584b5dceb71b145859f839e
2013-04-05 12:11:19 +09:00
Jean Chalard
5d399ec719 Change which backdoor the tests goes through
Yes that's even harder to understand. The old technique doesn't work
any more, so I have to drill a new hole in this class.

Bug: 8303100
Change-Id: I70a41b5094dab2bb56a17eaf55b2a2df853e4bb6
2013-04-02 18:20:19 +09:00
Jean Chalard
84bfde0421 Fix a test.
The test was not passing the correct input type when it was
creating the text view, resulting in mismatched types seen from
TextView and LatinIME with some bad results. The test would
even go as far as restoring it after it's been fixed by TextView.

Additionally, since we want to enter litteral carriage returns,
the input type should be MULTI_LINE. If not, TextView does
not allow carriage returns.

Bug: 8302690
Change-Id: I1c20bcf6ca554ad981048ec181e19c649f6c742e
2013-04-02 18:20:14 +09:00
Tadashi G. Takaoka
75028af28c Interpolate gesture preview trails
There is the boolean flag to kill interpolation.

Bug: 7167303
Change-Id: Iac7e4cb88cf437c2ee77c003c9cddb92416025c7
2013-04-01 19:15:36 +09:00
Jean Chalard
a411595b16 Fix two nasty bugs with surrogate pairs.
The important bug is in findWordInTree. The problem, which is
not obvious, is that we were calling codePointAt() with the
code point index in the string, instead of the char index.
The other bug this change fixes was harmless in the practice,
because it's in the iteration which is only used for debug and
pretty printing purposes. It's very similar in that it would
substract a length in code point to a length in chars and
truncate a StringBuilder at that length, so it would fail in a
quite similar manner. This changes the meaning of the "length"
attribute in Position, but it's clearer this way anyway.

Bug: 8450145
Change-Id: If396f883a9e6449de39351553ba83f5be5bd30f0
2013-04-01 17:06:19 +09:00
Tadashi G. Takaoka
9f3774c194 Remove reference to string.english_ime_name
Bug: 6789579
Change-Id: I062c076f0ca16cc39274e20955aa83d667b7380d
2013-03-22 14:08:23 +09:00
Jean Chalard
abaf5827e7 Separate suggestions from SuggestionView
This is a cleanup change, but it's also necessary for

Bug: 8152758
Change-Id: Id6ba06243f573fdb856f87d1df03277c9f2e5e71
2013-02-28 21:03:18 -08:00
Tadashi G. Takaoka
67a54c4bbe Fix failed unit test due to resource string change
Change-Id: Ie7acdf6895a9769eb43ea8a1c70c0d13b32ed349
2013-02-26 16:58:23 +09:00
Tadashi G. Takaoka
fdb1ca560e Merge "Separate caps mode related utils to CapsModeUtils" 2013-02-12 09:26:16 +00:00
Tadashi G. Takaoka
ce6bcdd1a5 Separate caps mode related utils to CapsModeUtils
Change-Id: I32700c434b296bb3fd39e040c2dda1fe90667daf
2013-02-12 18:15:42 +09:00
Tadashi G. Takaoka
2c2942dd4b Merge "Move parseCsvString to StringUtils" 2013-02-12 07:57:24 +00:00
Tadashi G. Takaoka
b3fd701181 Move parseCsvString to StringUtils
Change-Id: I602f33991ca57b6057ec2defe01573552b322857
2013-02-12 16:18:19 +09:00
Jean Chalard
1c5b2a41ec Cleanups
Follow-up to Idc6f419a

Change-Id: I4aae8f4e19f27a0a309879dc19af6e40906d58c5
2013-02-11 21:14:56 -08:00
Jean Chalard
68ed7aa990 Fix a test
The test is wrong - it checks a struct that contains a string
instead of checking the string itself.

Bug: 8149360
Change-Id: Ifb93d61f25a64a64e1c1e689de792f27994487b6
2013-02-06 15:27:21 -08:00
Tadashi G. Takaoka
b4598f7d05 Add unit tests tags
Bug: 8131968
Change-Id: Ibca5a0d63a492134b8af401a62ca3a5748e003cf
2013-02-04 17:21:30 -08:00
Kurt Partridge
7708bcf6fb [Rlog48c] Replay historical motion data
Change-Id: Ib398ea61ff048b1a4ac3b7f7b4a772e173a7b294
2013-02-04 06:13:51 -08:00
Jean Chalard
01a4ebcd88 Add a way to know externally if we're installing a new dict
That helps tests know when to wait and when to declare the
dictionary actually not usable.

Bug: 7925814
Change-Id: Ic963c1206c43e3cde39ac4214a0d601f4fc6c03b
2013-01-31 09:04:55 +09:00
Tadashi G. Takaoka
8630cd9d17 Remove keyboard layout description on the spacebar
Bug: 8056376
Change-Id: I33f07e7a044c2b5fc20de40c7a9777dab493e41c
2013-01-28 11:49:44 +09:00
Tadashi G. Takaoka
8203f7afe7 Display custom input style name in system locale
Bug: 8032166
Change-Id: Ib9a6b63c4d540ce377892fb865e53abdd8adec16
2013-01-24 17:44:49 +09:00
Tadashi G. Takaoka
4b3cae9b0c Refactor SubtypeLocale to hold Resources
Change-Id: Ia667bc2d406d66c87215dd3b9569f36f4642cfe0
2013-01-23 16:23:11 +09:00
Tadashi G. Takaoka
cc2636b4e1 Remove automatic switch back to alphabet feature
Change-Id: I4600c808f2ec31c18d3698a43afa7f4be9407e3e
2013-01-18 18:44:27 +09:00
Jean Chalard
912ad4614f Fix international tests
Tests have been broken again by recent changes to subtype
choice within Latin IME. This fixes the problem and all tests
pass again.

This change also includes a small fix to one test that was
checking for something irrelevant.

Change-Id: I6a03dea24f99b0d2ad84c4161a8413f3060bb811
2013-01-10 15:12:17 +09:00
Jean Chalard
516b63db28 Fix a race condition with backspaces
And add a test to make sure it stays not-broken.

Bug: 7946604
Change-Id: I996da3d5507d591ec25a13fb57434f39843f1df5
2013-01-09 18:37:10 +09:00
Tadashi G. Takaoka
f90fc105ab Simplify singleton class initialization
Change-Id: I16a27f2ed6ea66184bfdc9903180372cd7ea2fd1
2013-01-07 19:05:31 +09:00
Tadashi G. Takaoka
f483225397 Get rid of current subtype and system locale cache from SubtypeSwitcher
Bug: 7675452
Change-Id: I2121f56964b6d25e8d40f5b8ec67eeae527b2117
2012-12-27 12:00:38 +09:00
Tadashi G. Takaoka
85e397cd10 Set additional subtypes before getting current subtype
Bug: 7594188
Change-Id: I1977acb7189f8eb186b9b20a3e5b64b4aaabf191
2012-11-28 14:49:38 +09:00
Tadashi G. Takaoka
0567d144a3 am 7ba02315: am b172725c: am 7d045829: Request update shift state after shift-chording input
* commit '7ba02315abf3f6fe2e40fcb248ccf1cab8dee179':
  Request update shift state after shift-chording input
2012-11-27 11:36:53 -08:00
Tadashi G. Takaoka
b3f789799a Cancel gesture typing by sliding out from keyboard
Bug: 7594165
Change-Id: I7849d763e49b57716e8418fb8b6f90eca3a5d2ec
2012-11-22 17:49:56 +09:00
Tadashi G. Takaoka
7d045829b8 Request update shift state after shift-chording input
Bug: 7529860
Change-Id: Iec82459348722be358ae2ded15deafac21749dcd
2012-11-21 16:12:40 +09:00
Jean Chalard
40f7b43b3f am 82cc7349: am b9385ff9: am cdbf6fb5: Merge "Correctly add double quote to the space strippers" into jb-mr1.1-dev
* commit '82cc7349254e1ca3722ead1f108b6c53820432d5':
  Correctly add double quote to the space strippers
2012-11-20 20:14:13 -08:00
Jean Chalard
c5653daf72 Correctly add double quote to the space strippers
...without removing space, this time.
Also add a test to make sure it is working.

Bug: 7531719
Change-Id: I3afcc433c6cdc2774e7deeb6d358356db5035d35
2012-11-19 17:48:19 +09:00
Tadashi G. Takaoka
76d4ffeebf Add Spanish United States keyboard
The subtype locale name on the spacebar will be suppressed when only
one subtype is enabled and
 - Subtype locale is equal to the system locale.
or
 - Subtype language is equal to the system language but the subtype is
   implicitly enabled.

Thus the "es_ES" system locale chooses "es" subtype keyboard
implicitly but the keyboard doesn't have the subtype name on its
spacebar.

This change also removes Spanish Latin America keyboard.

Bug: 7531804
Change-Id: Ib929e8235d643c0ba039eb010e18ab721a734e15
2012-11-19 15:39:44 +09:00
Tadashi G. Takaoka
6fbbab3b84 Enhance ImfUtils to InputMethodManagerWrapper class
Change-Id: I6ff86ee819a446dd3ed5f9c3400d23564027b020
2012-11-12 15:23:43 +09:00
Tadashi G. Takaoka
240871ecaf Move code point constants from Keyboard to Constants class
Change-Id: Iee01d4d2b916d0b584531104ac865ae6e6370a3d
2012-10-29 16:04:20 +09:00
Jean Chalard
1ec8299389 Fix the build (again)
Change-Id: Idb7addede891a5c672d7fc09ddfe4d2585f8d647
2012-10-23 19:34:37 +09:00
Tadashi G. Takaoka
bc464e2952 Replace useless CharSequence to String
Change-Id: Idc478f901185ee1b4912acc82d0cbc54fee4e991
2012-10-22 11:03:28 -07:00
Jean Chalard
6ae5e45118 Stop using private APIs in tests.
Not sure it's much better, but at least this is public.

Bug: 6202480
Change-Id: If6cda78fbd32cfb068e0b2fcb637914939b044b3
2012-10-10 20:22:53 +09:00
Jean Chalard
2752287c42 Fix failing tests.
Most of the failures can be ascribed to the tests not passing the correct
old position of the cursor on a second call to onUpdateSelection() to
LatinIME.

Bug: 7276565
Bug: 7276805
Bug: 7276195
Change-Id: I3f1b52cdcc783ea18838408bed50699b7254eaf4
2012-10-10 19:42:29 +09:00
Yuichiro Hanada
6def28d1da Make unit tests create temporary files in the cache directory.
Change-Id: I90791b364b441bc4e8e221d9e668372d15591719
2012-10-05 15:17:13 +09:00
Yuichiro Hanada
d2579c4832 fix writeCharGroup.
Change-Id: Ib841afaba0a20c3b300eb7d3e9133243f9f3ae58
2012-10-05 14:54:17 +09:00
Jean Chalard
daff19bc29 am d173ed18: am bf6c8bd8: am 3f7fe829: Merge "Always consider a new line the start of a sentence" into jb-mr1-dev
* commit 'd173ed18e44ea5cdc48d5f620bb91efcd3ed5174':
  Always consider a new line the start of a sentence
2012-10-04 06:00:45 -07:00
Jean Chalard
2699b45dbc Always consider a new line the start of a sentence
Bug: 7282523
Change-Id: I10a73e99efdfe6acb9a16819694b98c6714fd451
2012-10-04 20:54:28 +09:00
Yuichiro Hanada
3c6d9fe148 Add insertWord.
bug: 6669677

Change-Id: Ide55a4931071de9cd42c1cddae63ddd531d2feba
2012-10-04 17:19:47 +09:00
Yuichiro Hanada
84d858ed5e Use BinaryDictInputOutput to save UserHistoryDictionary.
bug: 6669677

Change-Id: I08193c26f76dbd48168f8ac02c1b737525bfc7b2
2012-09-27 12:02:17 +09:00
Yuichiro Hanada
82d9deaaf2 Combine mHasParentAddress with mHasLinkedListNode into mSupportsDynamicUpdate.
bug: 6669677

Change-Id: I82799af199358420f09ac34fc005091e202c5d3b
2012-09-24 13:17:44 +09:00
Yuichiro Hanada
66597f5e5f Add deleteWord.
bug: 6669677

Change-Id: I1a5b90ee05e5cffd74a5c140384a3e37c79e7e70
2012-09-21 12:40:07 +09:00
Yuichiro Hanada
d36245fad2 Add getTerminalPosition.
Change-Id: If04d779db23b1aea2cc12e5e9b8cecfcb35a5737
2012-09-20 18:02:16 +09:00
Yuichiro Hanada
65feee12e5 Make BinaryDictIOUtils.
Change-Id: I45830235ee738233e8eb2bd91d659705b698f58c
2012-09-19 15:37:37 +09:00
Yuichiro Hanada
bf45dc4860 Make writePlacedNode write the linked-list node.
Change-Id: I60feda815ea08cf73300fccca1ae12b97550f116
2012-09-18 21:20:07 +09:00
Jean Chalard
90a9127244 Take space state into account for caps (A11)
Bug: 6950087
Change-Id: I8a1bca24db64b4dd54db8ac74d90cf43cbdddab6
2012-09-18 16:16:28 +09:00
Jean Chalard
252da38fcd Take locale into account for caps (A10)
Bug: 4967874
Change-Id: Ic7ce7b2de088308fa00865c81246c84c605db1e5
2012-09-14 19:42:05 +09:00
Jean Chalard
50e61b8628 Remove an unused function (A8)
Change-Id: I0578068946d32192c4faf14b3e86624b7301c7d9
2012-09-14 19:01:37 +09:00
Jean Chalard
2c0d916287 Fix abbreviations processing for English (A7)
It's still incorrect for non-English languages.

Bug: 4967874
Change-Id: I3d4379265f72e1c0435eba90ab878a80bbcf55ce
2012-09-14 19:01:25 +09:00
Yuichiro Hanada
7e35841053 Add tests for BinaryDictInputOutput.
Change-Id: I2ca66fd9a3568d5b6ece79d954095383d23a0a9f
2012-09-13 18:06:45 +09:00
Yuichiro Hanada
1a347723c5 Move FormatOptions and FileHeader to FormatSpec.
Change-Id: I232e35598635113bf2c81825669c744aadc79efe
2012-09-13 16:35:41 +09:00
Yuichiro Hanada
be5db53a09 Add tests for readDictionaryBinary with byte array.
Change-Id: I2c2815e9d4867687fb3f5b0c661e6162b88c0a0c
2012-09-06 20:35:33 +09:00
Yuichiro Hanada
13b85c4167 Refactor BinaryDictIOTests.
Change-Id: I6eef88ab436f478a9255cc20ea59a24cd472807e
2012-09-06 18:06:14 +09:00
Yuichiro Hanada
6e422af881 Check shortcuts in checkDictionary.
Change-Id: I150913833e586bf7d3f0b9b2e796a61f89fa4f83
2012-09-06 16:32:54 +09:00
Yuichiro Hanada
2a2b5edc21 Change BinaryDictIOTests's package.
Change-Id: Ie9df2f7767cd925051c5e1fdcc325cc3359bca20
2012-09-05 18:23:53 +09:00
Yuichiro Hanada
83dfe0fd8c Add FormatOptions.
Change-Id: Ibad05a5f9143de1156b2c897593ec89b0a0b07e7
2012-09-05 18:05:43 +09:00
Jean Chalard
c61bed6860 Add a preliminary test for basic Russian spell check
Bug: 6981919
Change-Id: I5ec6a6468cb616e7a4369c79b4dbfc84f3d8de59
2012-09-04 17:47:44 +09:00
Jean Chalard
5d96585a38 Add a first test for the spell checker
Bug: 6981919
Change-Id: Idd34150cec70e71bde652428f1631693bbc4a9ff
2012-09-04 17:19:26 +09:00
Jean Chalard
2035b946a3 Merge "Reinstate the shortcut-only attribute" into jb-mr1-dev 2012-09-02 19:28:01 -07:00
Jean Chalard
72b1c93941 Reinstate the shortcut-only attribute
Also add the blacklist attribute

Bug: 7005742
Bug: 2704000
Change-Id: Icbe60bdf25bfb098d9e3f20870be30d6aef07c9d
2012-08-31 22:11:52 +09:00
Yuichiro Hanada
666a433802 add UserHistoryDictIOUtils.
Change-Id: I8a70e43b23f65b5fd5f0ee0b30a94ad8f5ef8a8a
2012-08-31 15:08:57 +09:00
Yuichiro Hanada
b2a43a2ed4 add readUnigramsAndBigramsBinary.
Change-Id: I7967f11211221d4877bf0a0c30183af885f45390
2012-08-31 14:39:19 +09:00
Tadashi G. Takaoka
35ff94547c Separate inner classes of keyboard package out under internal package
Change-Id: Ia3969bd5ddec5aa5d81d05ad4cf676d818587922
2012-08-30 15:37:55 +09:00
Jean Chalard
5cc596160a Merge "Use ByteBuffer when reading FusionDictionary from file." into jb-mr1-dev 2012-08-23 21:56:02 -07:00
Yuichiro Hanada
d4fe7fda30 Use ByteBuffer when reading FusionDictionary from file.
Change-Id: Ia71561648e17f846d277c22309ac37c21c67a537
2012-08-24 13:31:08 +09:00
Tadashi G. Takaoka
64a26b4389 Fix bug in InputPointers.append
Change-Id: I39825757bbae32b66c4b61cb6c4fbcaa2e0c9c47
2012-08-23 17:59:08 +09:00
Tadashi G. Takaoka
9fc6af325e Fix SubtypeSwitcher initialization path
This change also removes the reference of LatinIME from
SubtypeSwitcher.

Bug: 7026856
Change-Id: I78a266f3682b11f09b49bbcdcdb6aee713e6af37
2012-08-22 16:05:34 +09:00
Tadashi G. Takaoka
5f282ea9e4 Add CollectionUtils class to create generic collection easily
Change-Id: I6b4de9187e122298e5e9cd8ddc9070d062df6a89
2012-08-22 10:21:38 +09:00
Tadashi G. Takaoka
ac78633be2 Rename and consolidate some constants
Change-Id: I7863936cca18b28bf0117afcbcf544a5fd7f185d
2012-08-21 17:54:53 +09:00
Tadashi G. Takaoka
6785b90727 Remove touch coordinate from pickSuggestionManually
Change-Id: I33b1b4bc6fdfd263c4b2bb7125c07b4bddcf3c9f
2012-08-21 17:13:45 +09:00
Yuichiro Hanada
0d35c159fe fix findWordInTree.
Change-Id: I8f42df28f76188677db9d4e55885e1fc6a40b53f
2012-08-17 10:23:01 +09:00
Yuichiro Hanada
66f338983b fix findWordInTree.
Change-Id: I9d81c815494a0670afa81219ad7bad82274d997e
2012-08-16 20:21:47 +09:00
Tadashi G. Takaoka
7ae1fd02d4 Use ArrayList to implement PointerTrackerQueue
Change-Id: Ie386e6c7869df4df940e09fccffc5cd661134557
2012-08-08 14:18:30 +09:00
Tadashi G. Takaoka
0cc425bd9c Add PointerTrackerQueue unit tests
This is a groundwork to elminate LinkedList from PointerTrackerQueue.

Change-Id: Ib77780537ceb0b4273fb8e483977ab76124c5ce7
2012-08-07 16:56:41 +09:00
Jean Chalard
f68fe7a9c9 Don't forward phantom space state on stripper input
Bug: 6890540
Change-Id: I923b24e3bc17e7b923be4940ad739b58dca24a1f
2012-07-31 01:48:10 +09:00
Tadashi G. Takaoka
c8e45ddb03 Rename LatinKeyboardView to MainKeyboardView
Change-Id: I8f3123b8d727c7beb72e226f80c17794f89c8b60
2012-07-23 12:11:43 +09:00
Tadashi G. Takaoka
7abdcf1ed3 Implement ResizableIntArray.fill
Change-Id: I570641bc2f32d016c247db6c065a138d8235ab8c
2012-07-20 16:05:37 +09:00
Tadashi G. Takaoka
c49c85f835 Implement ResizableIntArray.setLength and .get
This change revises ResizableIntArrayTests as well.
2012-07-20 12:02:38 +09:00
Tadashi G. Takaoka
9370ab9ada Make ScalableIntArray public as ResizableIntArray
Change-Id: Ibbbc117214912ffa192c694bde5b7d55154f40c4
2012-07-19 20:37:53 +09:00
Tadashi G. Takaoka
f583098887 Update InputPointers unit test comments 2012-07-19 20:02:01 +09:00
Tadashi G. Takaoka
57f7de0ba6 Add default capacity parameter to InputPointers' constructor
Change-Id: I02f23096f0682d30effe4dfc1ca57881a1e4aedc
2012-07-19 12:06:00 +09:00
Tadashi G. Takaoka
7247bff6d6 Fix InputPointers.append
Change-Id: I6995f9b2ed00b9f948e1299e576a5e24725d58f8
2012-07-13 11:46:03 +09:00
Tadashi G. Takaoka
2ad6d12a30 A little optimization of InputPointers.copy
Change-Id: Id83b34e076ef91e06d7c1dd2b3ee7bb64d01b8cb
2012-07-10 13:05:43 +09:00
Jean Chalard
d579f1aefc Consolidate methods that do the same thing (A74)
Change-Id: I6e7c3aba2b40ecefa483c9680978bc806368e96e
2012-07-09 15:06:16 +09:00
Jean Chalard
0e9e7e337d Cleanup (A57)
We stopped cancelling manual picks a few weeks ago. This code
is dead.

Change-Id: I4032fcc3c95e9379f1839fe860a1b8a9bd7d0bc7
2012-07-06 13:07:30 +09:00
Jean Chalard
f254e3fec7 Fix a bug where the caps mode would not be changed
Bug: 6766059
Change-Id: I378f9d35c4904c4f373260bda5863235d833eb31
2012-07-06 11:08:20 +09:00
Jean Chalard
83f4a9866a Cleanup, part 10 : remove from the code obsolete options (C10)
Change-Id: Id0806ad3dc7ccb632713eebaca76f0bab26ece5d
2012-06-21 10:07:05 +09:00
Jean Chalard
b0561ae980 Remove a member (B5)
The new call in the test ensures getCurrentInputEditorInfo actually
works.

Change-Id: I2ee407bd9927d22db537d12f339e2b977a38054a
2012-06-19 03:27:37 +09:00
Tadashi G. Takaoka
9a5bf1d12e Use InstrumentationTestCase and get rid of AndroidTestCase.getTestContext call
Bug: 6202480

Change-Id: I19e04f17614e70867f8383d08667e350d753cde9
2012-06-12 11:23:56 -07:00
Jean Chalard
02308bec63 Merge RichInputConnection with EditingUtils
Change-Id: I9982ff325bef56694402caef28a77683c52ccd71
2012-06-08 20:04:09 +09:00
Tadashi G. Takaoka
2033d9880e am 08c295c5: am 9a321180: Add unit tests for double tap shift key
* commit '08c295c5bb8d48b26a4486ed42a32a955b39ddd3':
  Add unit tests for double tap shift key
2012-05-29 03:31:09 -07:00
Tadashi G. Takaoka
8f3b46fc69 am c79a7104: am 2959fc0f: Delay shift lock transient until long pressed shift key is released
* commit 'c79a710445cca2a69dca9600a2c06eadcb253b62':
  Delay shift lock transient until long pressed shift key is released
2012-05-29 03:31:08 -07:00
Tadashi G. Takaoka
9a3211802b Add unit tests for double tap shift key
Bug: 6568746
Change-Id: I84db31ce86e3e043ac9f9bb971663a629fa3d3c7
2012-05-29 19:23:45 +09:00
Tadashi G. Takaoka
d231d5d322 am 57da84da: am fb0a4ba8: Add unit tests for long press shift key
* commit '57da84dac4618c0848af02509b42cf913376f382':
  Add unit tests for long press shift key
2012-05-29 03:03:19 -07:00
Tadashi G. Takaoka
2959fc0f13 Delay shift lock transient until long pressed shift key is released
Bug: 5424586
Change-Id: Ib602af1b38b1b109bdac9cb0c53132169556db2f
2012-05-29 18:14:11 +09:00
Tadashi G. Takaoka
9afa42ddf0 am 7291fbce: am 16531ad5: Merge "More precise KeyboardState unit test" into jb-dev
* commit '7291fbce4776519f764a4a175951a9ae2a1c2a30':
  More precise KeyboardState unit test
2012-05-29 02:11:59 -07:00
Tadashi G. Takaoka
fb0a4ba8fd Add unit tests for long press shift key
Bug: 5424586
Change-Id: I8465b7e2cebb07a135e24ea33eb7b7fb6752f7a2
2012-05-29 18:11:07 +09:00
Tadashi G. Takaoka
0d6d4c20ce More precise KeyboardState unit test
Bug: 5424586
Change-Id: I838c82e3fe4629929cbd6e21111d139e7becab55
2012-05-29 16:42:43 +09:00
Tadashi G. Takaoka
59f5f250cf am e03f6b39: am e0952029: Merge "Make KeySpecParser case sensitive again" into jb-dev
* commit 'e03f6b3917f71a7c9f9459765264b547cc80b751':
  Make KeySpecParser case sensitive again
2012-05-28 03:33:28 -07:00
Tadashi G. Takaoka
0a3362d264 Make KeySpecParser case sensitive again
Partially revert I76c3e917.

Bug: 6561272
Change-Id: I5649a8ecb44bd11c67785ea97ddbb67b0a019ccc
2012-05-28 19:07:51 +09:00
Tadashi G. Takaoka
1b6caa9fe6 am ee78fb26: am 7ab7f66c: Fix adjusting key\'s label/code case
* commit 'ee78fb2634e7bf74d3e21faf9630e5d8cd67cda0':
  Fix adjusting key's label/code case
2012-05-27 21:12:32 -07:00
Tadashi G. Takaoka
7ab7f66c2d Fix adjusting key's label/code case
With this fix, we may probably be able to revert I76c3e917 (Make
KeySpecParser case insensitive).

Bug: 6561272
Change-Id: Ic7571560d7b422ffc9a07f0acecd388e0b330d50
2012-05-28 12:34:49 +09:00
Jean Chalard
37e9eb2b56 am e0f8476f: am ab619812: Merge "Fix some of the input logic tests" into jb-dev
* commit 'e0f8476f71be89e78530f739bee91dd78cdbbc44':
  Fix some of the input logic tests
2012-05-22 02:40:08 -07:00
Jean Chalard
ab619812a5 Merge "Fix some of the input logic tests" into jb-dev 2012-05-22 02:35:33 -07:00
Jean Chalard
f83a6821bb Fix some of the input logic tests
This behavior has been changed for bug#6105732

Bug: 6516976
Change-Id: Ief8225b26d831cd92a051ce25cc005270b6b1776
2012-05-22 18:28:05 +09:00
Tadashi G. Takaoka
d4577f738b am 82ffc9fe: am 16950d65: Reset automatic upper case when chroding key is pressed
* commit '82ffc9fe5f7255c902e371bb5353bdef97205fd6':
  Reset automatic upper case when chroding key is pressed
2012-05-21 14:29:59 -07:00
Tadashi G. Takaoka
4071470d69 am 168147fa: am 65331d6e: Merge "Add multi touch and shift chording unit tests" into jb-dev
* commit '168147fa11b275d4c21ba0ac909dd499f8252bfe':
  Add multi touch and shift chording unit tests
2012-05-21 14:29:47 -07:00
Tadashi G. Takaoka
6fbb8c8fc3 am 628a5745: am 75c60bf3: Merge "Change auto caps mode argument to int type" into jb-dev
* commit '628a5745e19d227cdff2370704a4958e2791eb5a':
  Change auto caps mode argument to int type
2012-05-21 14:10:50 -07:00
satok
ef04186ce8 am 9a06a1e9: am 468ac358: Merge "Add utils for forgetting curve" into jb-dev
* commit '9a06a1e9eab191838a623aa074c65fd77a2ac7d9':
  Add utils for forgetting curve
2012-05-21 12:44:31 -07:00
Tadashi G. Takaoka
16950d65c3 Reset automatic upper case when chroding key is pressed
Bug: 6501446
Change-Id: Idc3b88b5370c0d7968cc388885e9066f922cfcf3
2012-05-21 19:24:43 +09:00
Tadashi G. Takaoka
2972ccb851 Add multi touch and shift chording unit tests
Bug: 6501446
Change-Id: Iac423d152702241adae77fe1c343541d70608269
2012-05-21 15:01:41 +09:00
Tadashi G. Takaoka
553e2f19c1 Change auto caps mode argument to int type
Bug: 6501446
Change-Id: I3f7bc0fc39edd29ebf96107c3d43b9ccc9b8022e
2012-05-18 17:46:05 +09:00
satok
607a924486 Add utils for forgetting curve
Bug: 4192129
Change-Id: Iebb7ac355e1c1891da31c33754315bd76a61889b
2012-05-18 14:50:05 +09:00
Kurt Partridge
aec44d50a7 include text context in researchLogger
when logging LatinIME.onUpdateSelection(), now include the current word and
preceding word.  no escaping of the word is performed; this is temporary
until the output format is cleaned up.

also fix EditingUtils.getWordRangeAtCursor to support supplementary
UTF-16 characters.

Bug: 6188932
Change-Id: If4612a2627537d5d8bb2f9585a3ad1b4e56c2e26
2012-05-14 09:55:26 -07:00
Tadashi G. Takaoka
ca93442026 Fix newly created custom input style display name
This will revert I4263632e

Bug: 6443665
Bug: 6410653
Change-Id: Id9ad1a204ed9802488abfc2c536a95d62d55afe0
2012-05-07 02:42:08 +09:00
Tadashi G. Takaoka
757c12556b Get subtype name string resource from its own locale
Bug: 6443655
Change-Id: Ib9ee55178f0d0f885aa0640b9cba4a179cf0c566
2012-05-07 00:44:54 +09:00
Tadashi G. Takaoka
27b42ced86 Fix "no language" subtype name (DO NOT MERGE)
* Move SubtypeLocale.get{Full,Middle,Short}DisplayName() to
  LatinLeyboardView and add unit tests (SpacebarTextTests).
* Add SubtypeLocale.getSubtypeDisplayName()

This is a cherry-pick of I57420c6a from Master.

Bug: 6393865
Change-Id: I68748189c17c73984ac4ae05a5a40fb54bf46453
2012-04-26 11:50:28 +09:00
Tom Ouyang
0806bb01d9 Binary bigram lookup checks both uppercase and lowercase when previous word is uppercase.
Bug: 6363029
Change-Id: I71a1ed5b88f54fcc15bfaf89d3645b8f17ebb821
2012-04-22 17:48:00 -07:00