Commit graph

189 commits

Author SHA1 Message Date
Tadashi G. Takaoka
0086861d5a Move CSV parser to KeySpecParser
Change-Id: I424fb47bc70e9b6aaa5a16ae9b2500d23da75c26
2012-02-02 16:10:14 +09:00
Tadashi G. Takaoka
e01d272603 Make KeySpecParser and CSV parser code point aware
This change also renames MoreKeySpecParser to KeySpecParser

Change-Id: I35733cdbb344f16b57ffa2cfe79055c089b4e409
2012-02-02 15:51:40 +09:00
Tadashi G. Takaoka
ff858c7ff5 Use MoreKeySpecParser to parse puctuations strip resources
This change also
  * Doesn't use Key.getRtlParenthesisCode to get correct parentheses
    code in RTL context. Intead uses the outputText feature of
    moreKeys specification.
  * Move CVS string parser from KeyStyles to Utils.

Bug: 5948247
Change-Id: I45752c7d01b4f7d3f3da900b110a2185b336a1f0
2012-02-01 19:33:26 +09:00
Tadashi G. Takaoka
a5c96f376a Move long press shift handling from PointerTracker to KeyboardState
This change also
  * Rename phone shift keyboard to phone symbols keyboard.
    Use CODE_SWITCH_ALPHA_SYMBOL code to switch between phone and phone symbols keyboard.
  * Remove phone symbols keyboard from tablet.
  * Introduces enableLongPress flag of Key.keyActionFlags attribute.
  * Remove clumsy long press code from PointerTracker.
  * Remove CODE_CAPSLOCK handling from LatinIME.
  * Make KeyboardSwitcher to invoke haptic and audio feedback.

Change-Id: I00e1f697a10ab5112aec75e36853b96246ff5054
2012-02-01 19:04:21 +09:00
Tadashi G. Takaoka
3feb99fa6c Merge "Save/restore alphabet shift locked state while rotating even in symbols mode" 2012-01-31 02:26:41 -08:00
Tadashi G. Takaoka
49bd49c8fb Save/restore alphabet shift locked state while rotating even in symbols mode
Bug: 5730212
Change-Id: Id2342dacd149d6385d61001f880ebcd1883cf0b4
2012-01-31 19:11:39 +09:00
Tadashi G. Takaoka
88e079ae6b Cleanup redundant methods of KeyboardSet
Change-Id: I69fa1b5661695d0323222c2969679f4792b6ef0d
2012-01-31 18:27:37 +09:00
Tadashi G. Takaoka
0ed2d3a449 Fix double tap shift key enable/disable shift locked mode
Bug: 5942452
Change-Id: I2c7b1605bceac2b2f929cd4d97c417ef15c6f754
2012-01-31 18:06:54 +09:00
Tadashi G. Takaoka
15c99e9f1a Support addtionalMoreKeys
This change also removes
  * Unused more_keys_for_q, w, and p.

Change-Id: Idb99e5f6d8c2ad2d28437f42b35b21c282cd181f
2012-01-30 17:04:25 +09:00
Tadashi G. Takaoka
f057b25cdd Save and restore previous mode keyboard state at KeyboardState.toggleAlphabetAndSymbols
Bug: 5881820
Change-Id: I9b1718b16c60f27c05ba727724c0189aa5284334
2012-01-27 16:03:51 +09:00
Tadashi G. Takaoka
757f8d96ee Add KeyboardState.SwitchActions.setAlphabetShiftLockShifted
Change-Id: I6c49d8eb0a8272840ff03e0940d88a31c3d20bd9
2012-01-26 18:25:48 +09:00
Jean Chalard
a02e703289 Add a missing brace
Change-Id: Ia51da6506d78a295b8b70a241208fb81602cf0ea
2012-01-26 16:08:53 +09:00
Jean Chalard
9184d8b235 Add a test for moving cursor then backspace
This is a test for the case in
Bug: 5851148

Change-Id: I58ee459d85f463b445a28137bdc6c40bc3067ff5
2012-01-26 15:39:29 +09:00
Jean Chalard
41df8a98fd Add a test case for backspace at start of line
Tests the behavior from
Bug: 5784542

Change-Id: I78ec9d77c5dd1e3ea8eff530f9d7d284a1c094d4
2012-01-26 15:36:27 +09:00
Jean Chalard
60e7718462 Add tests for double space behavior
Bug: 5875776
Change-Id: Icc28b6c5c0132a3afc8d603841c9e321f720b7c9
2012-01-26 10:10:38 +09:00
Jean Chalard
d9702a375a Merge "Add a test for auto-correction." 2012-01-25 02:33:39 -08:00
Jean Chalard
0bfe359ee4 Add a test for auto-correction.
Fix two related subtle bugs:
- Stop singling out fat-finger-only corrections for rejection
  when touch coordinates are not available.
- Remove a racy check that would happen only in debug mode

Change-Id: Ic904f9b27c091ca6b369052c4e65a630bff81257
2012-01-25 19:29:40 +09:00
Tadashi G. Takaoka
38d6a18821 Use String instaed of CharSequence in Key class
Change-Id: Ia76a41daede402ed2a509e110ae97d6bb660c760
2012-01-25 17:04:00 +09:00
Jean Chalard
20f437cc49 Merge "Test that delete actually removes any selected text." 2012-01-24 01:19:26 -08:00
Jean Chalard
1e4684ad24 Test that delete actually removes any selected text.
Bug: 5699301
Change-Id: I09a967eb03690251e8bd69503285c982d6958a7d
2012-01-24 18:17:09 +09:00
Tadashi G. Takaoka
83d81f2e34 Fix sliding shift input in caps lock mode
Bug: 5881820
Change-Id: I4cbe3eda83c09edc9da8efbdff7d3359c1e140d5
2012-01-24 17:58:23 +09:00
Tadashi G. Takaoka
747ed9e99a For get the symbols shifted state when switch back from alphabet layout
Bug: 5881820
Change-Id: Ic478264e1cd366affc34fbf4cd59f1b6e7efede7
2012-01-24 17:28:00 +09:00
Tadashi G. Takaoka
0f05076990 Get rid of setShifted/setShiftLocked from SwitchActions
Change-Id: Ib54b0575be190556690ef2dfb14077842745f038
2012-01-24 12:27:09 +09:00
Tadashi G. Takaoka
9507b4a086 Merge "Add more sliding input unit test" 2012-01-23 19:00:56 -08:00
Tadashi G. Takaoka
373f452584 Add more sliding input unit test
Bug: 5881820
Change-Id: I9249d8b702ba9afbd1c7d0a4889ac5b2e929f85d
2012-01-24 11:49:00 +09:00
Tadashi G. Takaoka
3611068bc6 Move string resources for unit test to donottranslate.xml
Bug: 5904617
Change-Id: I2eb677a4dd9686f87fec9f11051775a5c9c670a1
2012-01-24 11:29:16 +09:00
Tadashi G. Takaoka
530f5d7e15 Merge "Support @icon/icon_name for more keys specification" 2012-01-20 03:20:40 -08:00
Tadashi G. Takaoka
b009a24b83 Support @icon/icon_name for more keys specification
Change-Id: I8842e5ce77f9d27a0969df947de292c1830e36b7
2012-01-20 20:09:02 +09:00
Jean Chalard
482588c5a2 Merge "Enable DEBUG mode for logic tests." 2012-01-20 02:27:34 -08:00
Jean Chalard
bc10e4145e Enable DEBUG mode for logic tests.
This enables a wealth of useful checks. We want to run unit
tests with debug mode on.

Change-Id: Ic45caaf43a889287f5aec203e7d1ba63136fc58e
2012-01-20 19:23:34 +09:00
Tadashi G. Takaoka
e54a4005d5 Support @string reference in moreKeys attribute
Change-Id: If0056d0601149d2ddd0e231a81e7b2409b37fc06
2012-01-20 18:46:33 +09:00
Tadashi G. Takaoka
3eede315dc Merge "Move MoreKeySpecParser.getResourceId to Utils" 2012-01-20 00:01:29 -08:00
Tadashi G. Takaoka
86641ef6e8 Merge "Change more key specification type to String from CharSequence" 2012-01-20 00:01:24 -08:00
Tadashi G. Takaoka
0718590486 Move MoreKeySpecParser.getResourceId to Utils
Change-Id: I0640dbe76a8ff2dc45b504eca631942811571736
2012-01-20 16:28:18 +09:00
Tadashi G. Takaoka
bd7b160cfb Change more key specification type to String from CharSequence
Change-Id: I5e910f8225a248fc6403771836dec4c0b7294caa
2012-01-20 16:27:32 +09:00
Jean Chalard
83c72d1dae Add the first tests for the input login in LatinIME class
Change-Id: Ifcf9ab55ee01bf7c6c6829e699246e5654975456
2012-01-20 13:00:40 +09:00
Tadashi G. Takaoka
f36f90a173 Fix KeyboardState switching back from alphabet-chording input correctly
Bug: 5881820
Change-Id: I108bbc25baa331cc87f00955b48188b3557d10dd
2012-01-19 18:53:38 +09:00
Tadashi G. Takaoka
d26d63b35d Fix KeyboardState to pass KeyboardStateMultiTouchTests
Change-Id: If2b9ee7cf3fad7633d64b98758f802792d66f7a8
2012-01-19 18:48:02 +09:00
Tadashi G. Takaoka
01d9fc966a Cleanup KeyboardState a bit
Rename KeyboardShiftState variable and reorder some statements.

Change-Id: I7e8842836f35876f8697f9906343f7d4a1f9db4f
2012-01-19 18:42:11 +09:00
Tadashi G. Takaoka
23bacdb6a5 Fix MoreKeySpecParser to be able to handle outputText correctly
The issue was introduced by Id2320f4d.

Bug: 5887936
Change-Id: Ifec3aefb5b168f790de696ece104b84cdab46539
2012-01-19 12:51:27 +09:00
Tadashi G. Takaoka
06bc1db017 Add more multitouch tests
Change-Id: I424a4b608fec084cb787003ef4417ccf273366ae
2012-01-18 19:35:01 +09:00
Tadashi G. Takaoka
60c4594ee6 Get rid of hasDistinctMultitouch reference from KeyboardState
Change-Id: I0a783a425302fbc381d056f5b0d757c27f2a9f14
2012-01-18 18:11:46 +09:00
Tadashi G. Takaoka
64e01baade Add KeyboardStateTestsBase and helper methods
Change-Id: I17d908b60bbf784dae7add8355f699a63f7eb90a
2012-01-18 16:46:38 +09:00
Tadashi G. Takaoka
5731b939c7 Remove KeyboardSwicther.toggleCapslock
Change-Id: Id613c06e2df770659095d78d42637aed063d0c70
2012-01-17 19:26:24 +09:00
Tadashi G. Takaoka
2a88440419 Rename KeyboardActionListener methods
* Rename KeyboardActionListener.onPress to onPressKey
* Rename KeyboardActionListener.onRelease to onReleaseKey
* Merge KeyboardSwicther.onPressShift, onPressSymbol, and onPressOtherKey to onPressKey.
* Merge KeyboardSwitcher.onReleaseShift and onReleaseSymbol to onReleaseKey.
* Merge KeyboardState.onPressShift, onPressSymbol, and onPressOtherKey to onPressKey.
* Merge KeyboardState.onReleaseShift and onReleaseSymbol to onReleaseKey.

Change-Id: Icf28fd18e238c5e534c292893e4ab5b6b98e72f8
2012-01-17 19:07:20 +09:00
Tadashi G. Takaoka
87e025da11 Remove toggleShift and toggleAlphabetAndSymbols from KeyboardSwitcher
Change-Id: I9bb8f78b0a766cd7937d5cbe1c1e5e35898b2997
2012-01-17 16:49:33 +09:00
Tadashi G. Takaoka
1602540764 Remove redundant permission tag
Change-Id: I717e2fc9dca13096d76c159f8c3bebff065c6ca1
2012-01-16 20:17:18 +09:00
Tadashi G. Takaoka
4910c9621c Merge "KeyboardState unit tests for non-distinct multitouch device" 2012-01-16 02:31:37 -08:00
Tadashi G. Takaoka
e47bd3f4fb KeyboardState unit tests for non-distinct multitouch device
Bug: 5708602
Change-Id: Id85db2f8b7b427ba62205f5aaad481a3d33e65fc
2012-01-16 19:14:18 +09:00
Tadashi G. Takaoka
6d5c9c9edc Add more KeyboardState unit test cases
Bug: 5708602
Change-Id: Ib9d2b7a2878f78adecc857fd569fba8965cf4a03
2012-01-16 17:19:54 +09:00
Tadashi G. Takaoka
8ece45bb32 Add auto caps function simulation to MockKeyboardSwitcher
Change-Id: I049c224994a37121de031b9fd61edb52eb912e20
2012-01-16 16:30:50 +09:00
Tadashi G. Takaoka
549571cf5c Make MockKeyboardSwitcher top level class
Change-Id: I52c1bc237c20b8bd49fca2431b83843a6e2af10b
2012-01-16 15:49:24 +09:00
Tadashi G. Takaoka
c88026e1df Update shift state when alphabet keyboard has been set
Bug: 5857492
Change-Id: I5ef78af21a76e8cf645e223d1ffa6212690bb1eb
2012-01-16 11:08:29 +09:00
Tadashi G. Takaoka
327c6828a5 Merge "Cleanup KeyboardStateTests a bit" 2012-01-15 17:15:34 -08:00
Tadashi G. Takaoka
d3bf4b172d Cleanup KeyboardStateTests a bit
Move test target KeyboardState into MockKeyboardSwitcher.

Change-Id: I0998a5306a59e777360df9d1321b545313b939f9
2012-01-16 10:04:10 +09:00
Tadashi G. Takaoka
4cabb04971 Use KeyboardSet for unit test
Change-Id: I6a08e04628bac0222140e5b1b108f6bcb39859a2
2012-01-13 19:14:42 +09:00
Tadashi G. Takaoka
211680e375 Merge "Fix SuggestTests" 2012-01-13 01:39:43 -08:00
Tadashi G. Takaoka
9c735b8038 Fix SuggestTests
We need revised scoring test because dictionary look up algorithm has
been changed significantly since this SuggestTests was made.

Change-Id: I69d527a6bfa24ed0dc189fddad1afab0566c6eb8
2012-01-13 15:25:28 +09:00
Tadashi G. Takaoka
f67f001e40 Merge "Cleanup UtilsTests" 2012-01-12 22:17:33 -08:00
Tadashi G. Takaoka
06eb042616 Merge "Fix UserBigramSuggestTests" 2012-01-12 22:17:28 -08:00
Tadashi G. Takaoka
1d161a9038 Cleanup UtilsTests
Change-Id: I5631d010194423fd3d9c216db760ffa726131977
2012-01-13 14:49:14 +09:00
Tadashi G. Takaoka
fb9b0f493c Fix UserBigramSuggestTests
Change-Id: I3363fba44ee70876fd7ba8e27c6ca3c83753b53a
2012-01-13 14:46:45 +09:00
Tadashi G. Takaoka
4015a64a26 Fix SubtypeLocaleTests
Change-Id: Id85814aa3bcd9cacbe446b2dfda3ca2ab9146c13
2012-01-13 14:35:43 +09:00
satok
be0cf72253 Move auto correction thresthold to the native code
bug: 5858137

Change-Id: Ic4b6270c6e51ef4ed25a6a1d8ddd7fdfa70fd78d
2012-01-12 19:56:15 +09:00
Tadashi G. Takaoka
8cab0b56eb Get rid of Keyboard.CODE_DUMMY
Change-Id: Id2320f4d9b5f22f0ac844ab20ce42b0c4e7c6880
2012-01-10 18:19:36 +09:00
Tadashi G. Takaoka
ee4be6e3c6 Call KeyboardState.onUpdateShiftState from onCodeInput if code is a normal letter
This will be helpful to write unit test code.

Change-Id: Ib61cc46ac547084e0dc9ecd3a50814fecf08ace2
2012-01-10 15:13:05 +09:00
Tadashi G. Takaoka
4e1dab8cfa Move KeyboardBuilder and KeyboardParams classes into Keyboard class
This change also moves XmlParseUtils to com.android.inputmethod.latin package.

Bug: 5778201
Change-Id: I7d9faa344460753ce178ad4048e0fadb65c75614
2011-12-18 20:19:16 +09:00
Tadashi G. Takaoka
3708787fe9 Remove LatinKeyboard class
Change-Id: I68c667b00dadf2ed9f1c62fb7da37d2cf499cd81
2011-12-18 19:10:42 +09:00
Tadashi G. Takaoka
645128af71 Move KeyboardSwitcher.getKeyboard to KeyboardSet
This change also gets rid of XML id from KeyboardId.

Bug: 5002108
Bug: 5679585
Change-Id: I7086c7da3c01ba4ade7f77ee5cc731310da46404
2011-12-16 20:10:57 +09:00
Tadashi G. Takaoka
f2b85d6293 Fix broken build
Change-Id: I84c20db21e13422817cfb85af522feaa5295626a
2011-12-16 17:55:54 +09:00
Tadashi G. Takaoka
2d603fff64 Remove EditorInfo from KeyboardId
Change-Id: I70919ff30622afa1d8c29ca45589fa617f2c1f0e
2011-12-14 18:58:55 +09:00
Tadashi G. Takaoka
8b1b8aae9c Cleanup settings key related stuff
Change-Id: Ie0d1204e94fcdf9d578974256bf2ae3e87797f13
2011-12-14 16:34:35 +09:00
Tadashi G. Takaoka
689b901156 Merge "Utilize KeyboardSet XML definitions" 2011-12-13 23:31:00 -08:00
Tadashi G. Takaoka
f86109ca56 Utilize KeyboardSet XML definitions
This change introduces KeyboardSet and SubKeyboard XML definitions to
represent a set of keyboard layouts.

Bug: 5002108
Bug: 5679585
Change-Id: Ib6c8d5936187381bb6725c9fe574e93871c01a86
2011-12-14 16:28:31 +09:00
Ken Wakasa
d5e35acffb Reorganize LatinIME native build directory structure. Now it got NDK friendly.
Change-Id: I0f62ce8a6a4d2b6134db698f8b8d0576616e524d
2011-12-13 21:16:20 +09:00
Tadashi G. Takaoka
dfbe254de6 Add unit test of KeyboardState
Bug: 5708602
Change-Id: I1a8a9f4320948bb500a96df8773b0bfa1a1d4167
2011-12-12 16:34:11 +09:00
Jean Chalard
4606de117b Stop a flag from escaping.
The ultimate intent is to close it up in the settings, as it does not
change while typing, only when the keyboard is open again.

Change-Id: I12ff56e7482c1584877fe5531473bf03e95a60f6
2011-12-09 16:09:04 +09:00
Tadashi G. Takaoka
e22baaadd3 Get rid of usage of key index
Change-Id: I7596ce3ae52fde436d06c2dd95ae873c7aa5ef7f
2011-11-29 19:07:54 +09:00
Jean Chalard
6b1f500da4 Resume suggestion when backspacing to the end of a word
Bug: 5515381
Change-Id: I26fea896feaf2e9716c7ae3d4f2630360f23ac50
2011-11-29 17:50:36 +09:00
Jean Chalard
5f41b705fc Fix a bug with the whitelist
This bug would kill the case where the whitelist contains
a word to be autocorrected to an uppercased version of
itself, and the user would enter the uppercase version.
In this case, this bug would cause the typed word to be
killed off the list of candidates, and possibly autocorrected
to the *next* candidate.

When the whitelist checks whether this the typed word is
a candidate for whitelisting, this change has it check whether
the whitelisting results in the typed word before returning.
Hence, it can keep the case-insensitive behavior of the
whitelist.

Coincidentally, this change renames the method used to do
this, because it does not comply with the general contract
of Dictionary. This happens to be in the way of another
upcoming change.

Bug: 5420371
Change-Id: Ifb305271acc5f171adf9b18c762ae7975b14be0a
2011-10-07 18:40:23 +09:00
Jean Chalard
3458d61807 Make the whitelist an instanciable class.
This goes together with I6b8628b9acc32449e4147a2a754b222fbb76c754
or it will break the build

Bug: 5402436
Change-Id: I07c6266b713773a8de80bb22afdd4c566261f78a
2011-10-06 16:05:21 +09:00
satok
904baab25a Remove code related to AutoText
Bug: 5245751

Change-Id: Ic02f951e8e1dbde9d8964d2c16e4928fb374ca41
2011-10-03 14:38:44 +09:00
Tadashi G. Takaoka
9d5601e901 Rename PopupCharactersParser to MoreKeySpecParser
Also renames PopupPanel to MoreKeysPanel

Change-Id: I37209a5a8fe7dbba1eef03e3be88ba5253653926
2011-08-31 18:34:35 +09:00
Jean Chalard
ef35cb631c Move locale-related utility methods to LocaleUtils.
Change-Id: I7e9e6e5bc4486d8618d0213b112308c3d305c15e
2011-08-29 12:29:35 +09:00
Tadashi G. Takaoka
32572948d7 Refactor and rename popup mini keyoard related classes
Change-Id: Ia92ec4612090b03829db9a87ce68d701db6e15bc
2011-08-23 17:51:57 +09:00
Ken Wakasa
f18bda60aa Code cleanup
Change-Id: I7df8c813038adec750eda260740bcc8a4da41acf
2011-08-16 17:32:37 +09:00
Jean Chalard
043f784198 Create a way to pass the proximity info to the dictionary
This is a preparative change for inserting the spell checker.

Change-Id: Ie441879cac4f67078ec27a95f1fcbbf3ef373df7
2011-08-04 19:46:21 +09:00
Tadashi G. Takaoka
1be29abab2 Cleanup Keyboard related code and rename some classes
This is	a follow up change of I90ffbde0

Bug: 5023981
Change-Id: I3a6b862d05f5f907dee954cd6d6fee983b20ab5e
2011-08-02 17:12:02 -07:00
Tadashi G. Takaoka
8da9a13760 Make Keyboard object immutable except shift state
This is the first step to implement suggestions pane as mini keyboard.

Bug: 5023981
Change-Id: I90ffbde0fda19b4be68add449310997b56bf6904
2011-08-01 22:04:48 -07:00
Tadashi G. Takaoka
3c70185b1b Add orientation to regression tests
Change-Id: Iaf2cb7841c4622eedeb4bf880d55988bfa61e823
2011-08-01 00:18:45 -07:00
Tadashi G. Takaoka
6d9bcd5e13 Remove enableShiftLock attribute from KeyboardId
This change is a follow up of Ia72de236.

Bug: 4311428
Change-Id: I0ad0f1fb93545ceb40df8dffe377240b020c2602
2011-07-28 17:25:44 -07:00
Tadashi G. Takaoka
c71854a661 Remove swipe gesture
Bug: 4971680
Change-Id: Ifff27f3bd3dd26417bfcb7072aaba074025b1bb7
2011-07-08 00:00:14 -07:00
Tadashi G. Takaoka
a19b84dcf6 Move key hysteresis distance parameter to KeyDetector class
Bug: 4768084
Change-Id: Ib8771afd7363a4a5590b2b4a586e3014c026be34
2011-07-04 22:32:21 +09:00
Tadashi G. Takaoka
e5276b39c1 Remove top padding parameter from MiniKeyboardBuilder constructor
To keep unit test simple, instead of specifying top padding in
the constructor, make separate setter for it.

Change-Id: I8870622cc1bd97420637b8c465bdb6c9dd366062
2011-07-02 02:06:33 +09:00
Tadashi G. Takaoka
17a1676e72 Add top padding to mini keyboard
Because Key only has bottom padding, to make mini keyboard vertically
symmetric and looks nicer, we should add mini keyboard top padding
that equals to Key bottom padding (a.k.a. vertical gap).

Change-Id: Icceb687d50edfa48e0f0830a60a1e230836c982f
2011-07-01 23:02:47 +09:00
Tadashi G. Takaoka
80b79bf9a2 Merge "Fix "Show settings key" option on 7" device" 2011-06-23 08:35:21 -07:00
Tadashi G. Takaoka
cd96a691b1 Fix "Show settings key" option on 7" device
Cherry-pic I993ac772 from Honeycomb-MR2.

Bug: 4586882
Change-Id: Ie74138523a3ae7958c7bec674c49aa0ab1a72d05
2011-06-24 00:08:42 +09:00
Tadashi G. Takaoka
e7759091dd Move Key class out of internal package
Bug: 4903326
Change-Id: I2493d6dae613d2e37dfa8ce96b4cddc9a038160c
2011-06-23 22:59:12 +09:00
Tadashi G. Takaoka
a93d27d6b8 Remove colorScheme attribute from KeyboardView
Change-Id: I9de118e8be60b9a6fe1aecc00332ba08872db918
2011-06-22 22:45:03 +09:00
Tadashi G. Takaoka
c2a21786e5 Move icon declaration to Keyboard theme
Bug: 4436327
Change-Id: I074014d28dcb323b60dbc8fd9e169c75c393e0b3
2011-06-22 17:44:49 +09:00