Commit Graph

1630 Commits (aa7329de15dddcd437997c9da82d5cfb5a52cdcc)

Author SHA1 Message Date
Jean Chalard 145e8568f4 [IL112] Cleanup
Bug: 8636060
Change-Id: Ic7c2dec2521613d52707457463691bec383177ff
2014-03-04 14:32:02 +09:00
Jean Chalard 32c6d4caea [IL111] Remove a member.
...and improve encapsulation and readability.

Bug: 8636060
Change-Id: I36407630b307df0721ea7fdb7e7a22cdf2b018b3
2014-03-04 14:31:47 +09:00
Keisuke Kuroyanagi e76c273502 Merge changes I20ce61c4,I2edab4e3
* changes:
  Remove "Use only personalization dictionary".
  Remove redundant creation of dictionary facilitator.
2014-03-03 04:00:24 +00:00
Ken Wakasa 98534dc065 Add missing null checks for getOwnerInstance()
It may just return null.

Change-Id: I778fb48262ef8af28a4af50b70bb94ace75a488c
2014-02-28 16:13:51 +09:00
Keisuke Kuroyanagi e9926b0d11 Remove redundant creation of dictionary facilitator.
Change-Id: I2edab4e3ba4ea0b9b13f9bb224aac86cac9b9f31
2014-02-27 22:31:57 +09:00
Jean Chalard bd1caac16a [IL110] Remove an unused interface function
...and make a method private.

Bug: 8636060
Change-Id: If16f7e8ef3779f77a9db23fb7c54e7c23b043b86
2014-02-26 17:46:20 +09:00
Jean Chalard 23e22613d7 Remove useless args and processing.
Bug: 13062385
Change-Id: I426545d1fe8fd76bcf4d1dce19e6b571a55c79ae
2014-02-26 11:40:43 +09:00
Jean Chalard 296adf5710 Merge "Change a heuristic and add a log." 2014-02-21 11:58:16 +00:00
Tadashi G. Takaoka d73044a249 Add ImportantNoticeDialog
Change-Id: Icaeb7dddd16362cd4a6384d295f89c7fbabc8b35
2014-02-21 16:36:15 +09:00
Tadashi G. Takaoka fe39d576dc Support versioned important notice
This change must be checked in together with If38a754d00.

Bug: 10587358
Change-Id: I91580f9468bc5ee7ed1694d7852a60dc6793dac0
2014-02-21 09:54:08 +09:00
Jean Chalard 3b4c1d3056 Change a heuristic and add a log.
The heuristic in RichInputConnection makes little sense
when textLength > mExpectedSelStart but we have
more than 1024 characters of text. If there are that many,
it's about 100% sure that 1024 is not the correct cursor
position. With no good guess, we'll just continue trusting
the app, even though we know it's lying : at least it will
make the problem visible to the app author.

Also, there have been a lot of confusion about initialSelStart
and initialSelEnd. The keyboard should log them so that
it helps us and editor authors debug more easily these
common problems.

Issue #65170 in AOSP and
Bug: 12772035
Change-Id: I6665a16c9f2832d33ee323f033bb38bcc092a3b4
2014-02-20 23:49:20 +09:00
Jean Chalard a118d19f6c Merge "Don't distrust the cursor pos so much as to bug on IPC delay" 2014-02-20 14:22:48 +00:00
Jean Chalard 3c84eb8822 Don't distrust the cursor pos so much as to bug on IPC delay
When the cursor is moved by the user, the RichInputConnection
is told about it. However, to work around a framework bug, it
also looks at how many characters are in the buffer before the
cursor, and if that's more than the value it's been passed, it
deduces that's a framework bug and there are at least as many
characters as seen before the cursor, so it puts the expected
cursor position there.

When you move the cursor, TextView calls onUpdateSelection,
and when you move it fast, you'll get rapid-fire calls to
onUpdateSelection. This is fine, the RIC is equipped to
deal with that.

However, these calls take some time to make it to the IME. In
this instance, when the first call gets through and the IME
calls TextView (synchronously) for text before the cursor, the
cursor has already moved in the app, and TextView returns more
characters than the cursor position was declared to be in this
instance, so the RIC sets that as the expected cursor position.
Sure enough, a split second later, the second call to
onUpdateSelection arrives, with the new cursor position set
where the RIC had found it too early. The RIC takes that as an
"expected" cursor move, and the input does not get reset.

Luckily, we have a way out. As far as we know, the framework bug
only manifests itself upon rotation, which means we should only
have to adjust for it in onStartInputView. Doing it in
onUpdateSelection is too zealous (and probably too distrustful of
the app to send the correct cursor positions).

So we should just take care of the rotation case (by calling
tryFixLyingCursorPosition in onStartInputView) and remove the
compensating code in resetCachesUponCursorMoves.

Bug: 12982502
Change-Id: Ic3c1408a1ec45deaea63b01d98376a79ae567d77
2014-02-20 23:13:14 +09:00
Keisuke Kuroyanagi d36328cecf Add test only methods to test personalized dicts.
Bug: 11122480
Change-Id: I79a4a73ff09a2d34d4ca094d705e901fb4bc855c
2014-02-20 22:20:43 +09:00
Keisuke Kuroyanagi a514ea7e1b Merge "Check all enabled IME's subtypes to enable personalization." 2014-02-20 09:33:21 +00:00
Tadashi G. Takaoka 1672ccbbb6 Change important notice version preference file
This CL also reset the notice version to 1.
This CL must be checked in together with Iea8d9ff038.

Change-Id: I838f7b5b295388d64d6aba90f50b06654eba16e5
2014-02-20 16:50:34 +09:00
Keisuke Kuroyanagi 6b23749dec Check all enabled IME's subtypes to enable personalization.
Bug: 13067743

Change-Id: I6fc68b5151430a5ab51777f4c381e20f5a657924
2014-02-20 15:05:37 +09:00
Keisuke Kuroyanagi 34fb962513 Call PersonalizationDictionarySessionRegistrar.init().
Wrongly removed in I1f50cb137b6054dc9.

Bug: 13067743
Change-Id: I27cd221cb7f6e403c3fc128d65d14dbf628b6f55
2014-02-19 23:27:14 +09:00
Keisuke Kuroyanagi d102eb80da Remove personalization dicts for multilingual users.
Bug: 13067743
Change-Id: I1f50cb137b6054dc9442237586b70fc0aa2bf427
2014-02-19 21:00:27 +09:00
Tadashi G. Takaoka 920c40fe45 Use AlertDialog.setOnDismissListener
AlertDialog.Builder.setOnDismissListener is supported from API 17.

Bug: 10587358
Change-Id: Ie8ce8e283b803f7f6bb58ced446e676339f980eb
2014-02-19 19:05:06 +09:00
Tadashi G. Takaoka ed616083dd Merge "Turn personalization on when important notice dialog is displayed" 2014-02-19 09:46:15 +00:00
Tadashi G. Takaoka 6abc852255 Turn personalization on when important notice dialog is displayed
This change must be checked in together with Ifde70b1d3b.

Bug: 10587358
Change-Id: I9dc48f9d521e0e6f6269e4f184389ba805f3053f
2014-02-19 18:36:32 +09:00
Keisuke Kuroyanagi e49e007bb2 Fix: Use old suggest after reloading.
Change-Id: Icb2821f61c4203254b7d573cad5ce71fbf0ed841
2014-02-19 12:34:09 +09:00
Jean Chalard 783dabb812 Merge "Cleanup." 2014-02-18 09:54:33 +00:00
Jean Chalard 63be066544 Cleanup.
Less code, less chance of stuff escaping, and a bit of a clarification.
Yay.

Change-Id: I3193fd8ad7ac28195260cbc231c4e498a63a460c
2014-02-18 17:07:46 +09:00
Ken Wakasa 12ff7da19d Some cosmetic fixes in LatinIME.java
Change-Id: Ia2d04ab992f5a0cc736150b2691b2f8ae8f0955d
2014-02-18 14:56:50 +09:00
Ken Wakasa 2312c1954f Cosmetic fixes
Change-Id: I6c755565ba7689357d02d26cc0e92a93031953e8
2014-02-18 12:17:24 +09:00
Tadashi G. Takaoka affdd36423 Set neutral suggestions should be called after load settings
Bug: 13058751
Change-Id: Iba49e86b90d595473d91753827d499e551dad45c
2014-02-18 11:04:00 +09:00
Tadashi G. Takaoka f0f4e9fc16 Update important notice version even when user select Settings
Bug: 13060852
Change-Id: I463fdf3d51cacf99693fcde2998ea751046d1cc5
2014-02-18 00:14:30 +09:00
Tadashi G. Takaoka 4c628b9d5b Merge "Don't show important notice on password field" 2014-02-17 08:04:11 +00:00
Tadashi G. Takaoka ce78a2d8ab Don't show important notice on password field
Bug: 10587358
Change-Id: Ieff7960e5e2b8609fddeb173af578a5d9b2c4d98
2014-02-17 15:38:43 +09:00
Tadashi G. Takaoka 28c02b400f Add go to "Settings" button to important notice dialog
This CL also
- removes icons on important notice title.
- changes the "Personalized suggestions" summary text.

This change must be checked in together with Id115d89ba9.

Bug: 10587358
Change-Id: I52ff26fa8ae12445e9014ba08253f69e1be609f4
2014-02-17 14:57:04 +09:00
Tadashi G. Takaoka a273319c59 Add PunctuationSuggestions class
This change must be checked in together with I366c477516.

Bug: 12640318
Change-Id: I8d3864b9d9649c9e3306e82b01a6327b11281b1f
2014-02-14 14:13:39 +09:00
Jean Chalard 4197c6f3ab Merge "Show the suggestion strip for the important notice" 2014-02-14 04:07:46 +00:00
Jean Chalard 367a35d377 Dump settings.
Bug: 10315296
Change-Id: Ieb020a23886514b3ba97611d8a6001f32b322f63
2014-02-12 22:53:15 +09:00
Jean Chalard 8adedbf47c Show the suggestion strip for the important notice
Bug: 10587358
Change-Id: Ia060a9ca9dfc2e7fe0750536a9fea3b9cc5900c4
2014-02-12 17:30:04 +09:00
Tadashi G. Takaoka 7ffac033ac Make importance notice dialog cancel able
Bug: 10587358
Change-Id: I7415a6f33e6b5542718164fea1555095d23233e5
2014-02-12 11:59:43 +09:00
Tadashi G. Takaoka 8dda9e480b Show important notice strip
Bug: 10587358
Change-Id: I1af3faa59afb2fc4cb90176acff1c2b0b1ba369c
2014-02-10 21:15:35 +09:00
Jean Chalard a9e1930a6a Merge "Conditionally store the raw suggestions." 2014-02-06 07:31:22 +00:00
Jean Chalard a49f61f8a7 Conditionally store the raw suggestions.
Bug: 12913520
Change-Id: Ie15f97d90c142c51089280252b35b5ad1d226e19
2014-02-06 16:14:41 +09:00
Keisuke Kuroyanagi f2d15d6956 Unregister DictionaryDumpBroadcastReceiver in onDestroy().
Change-Id: I83a05a8369c2fe2fa7522f18eb00983a0b10dc19
2014-02-06 15:37:41 +09:00
Jean Chalard 2bb1c6add9 [IL109] Move more code to InputLogic
Bug: 8636060
Change-Id: Ib12eacc836e8d39c4165c97a2a287f32f6bf5405
2014-02-05 14:49:59 +09:00
Jean Chalard 2c01dd00f2 [IL108] Remove some uses of LatinIME in input logic.
Access the suggestion strip through the interface instead.

Bug: 8636060
Change-Id: Ia8bd705c230f943e309d677ef683b1a2cbe68036
2014-02-05 14:49:59 +09:00
Jean Chalard ade1aa55b6 [IL107] Add an interface to access the suggestion view.
Bug: 8636060
Change-Id: I603af6bcdaa31f64aaaf916784720a133388c737
2014-02-05 14:49:57 +09:00
Keisuke Kuroyanagi 36c7a62dff Add dictionary dump buttons in debug settings.
Bug: 11736680
Bug: 12810574
Change-Id: I1f797b5ac6acf94b40d9698d4535e8f5da2bfb17
2014-02-04 21:29:09 +09:00
Tadashi G. Takaoka b06e455797 Clear important notice strip
Bug: 10587358
Change-Id: Ic90e5825200a1d424aac4ba263b252187a203241
2014-02-03 18:28:21 +09:00
Tadashi G. Takaoka a2d83dfdc7 Merge "Show important notice dialog" 2014-02-03 08:04:03 +00:00
Tadashi G. Takaoka 342e81e7a6 Show important notice dialog
Bug: 10587358
Change-Id: I3b4282a1bb183aa901110a4a2fc1b6ed72818aae
2014-02-03 16:21:53 +09:00
Jean Chalard 5d9be8039c Merge "Have empty suggestions go through setNeutralSuggestions." 2014-02-03 06:45:45 +00:00
Jean Chalard 2cbf152986 Have empty suggestions go through setNeutralSuggestions.
Bug: 12865205
Change-Id: If17a390c445d0820325a9b16cc4f2f27a361187a
2014-02-03 15:33:00 +09:00
Tadashi G. Takaoka 8a296e43c9 Add important notice strip
This change is a groundwork to show important notice.

Bug: 10587358
Change-Id: I80aa70d30e2a529b37798f0df2183b41df3ac38a
2014-01-31 20:07:27 +09:00
Tadashi G. Takaoka 9b1a66843d Show "Touch again to save" in system locale
Bug: 12811156
Change-Id: I928daf17297ec5c526720850d6203cb9af0496ac
2014-01-30 18:03:23 +09:00
Jean Chalard ac84fe642e [IL106] Inline a now useless method.
Bug: 8636060
Change-Id: Ic8e0225206358680aa0de421f17ab443c888036d
2014-01-29 12:23:40 +09:00
Jean Chalard fa7075768d [IL105] Remove more useless arguments
Bug: 8636060
Change-Id: I9e817bb9622c84544a5ca8708e5c1fccad1ed447
2014-01-29 12:23:26 +09:00
Jean Chalard 084c9961f4 [IL104] Remove useless arguments
Bug: 8636060
Change-Id: I97a371fe0c6227eb0f03d3e391a33726e6280322
2014-01-29 12:23:25 +09:00
Jean Chalard 1d2e4f9dcc [IL103] Save the typed word separately in SuggestedWords.
This helps managing the cases where the typed word is not
in the suggestions. This happens during recorrection.

Bug: 8636060
Change-Id: I6784feb793cae96272a7f1d123a0e3bbb8f03143
2014-01-29 12:22:21 +09:00
Jean Chalard c9cc1b1de5 [IL102] Rename a method
Bug: 8636060
Change-Id: Ia54afdfab9124aa5c35699e357e63eae66a7557f
2014-01-28 17:18:02 +09:00
Jean Chalard 4500dedfa9 [IL101] Remove a method
Bug: 8636060
Change-Id: Ic9c12fc6970987b0e1912e8ae85bed55260d66b5
2014-01-28 17:18:02 +09:00
Jean Chalard 491a6a6f23 [IL100] Pull up a check
Bug: 8636060
Change-Id: I344ed59f5f55b412880fc6dc70205eecb1e79961
2014-01-28 17:18:01 +09:00
Jean Chalard 4761d2fb00 [IL99] Migrate some code to InputLogic.
Bug: 8636060
Change-Id: Ibf1f9c7bdc3fdd872d6c15447fa555434485cc52
2014-01-28 17:18:01 +09:00
Jean Chalard 675f1dbaf0 [IL98] Refactoring of setSuggestedWords
Bug: 8636060
Change-Id: Iab53df96f2c23bddc6c70c3560b380fbaef1053c
2014-01-28 17:18:01 +09:00
Jean Chalard eb00023b9b [IL97] Readability improvement
Bug: 8636060
Change-Id: I6b15c7fb91cd4cf23a993541c19842b51e328f8f
2014-01-28 17:17:58 +09:00
Tadashi G. Takaoka 95e5e267ac Merge "Suggestion strip honors RTL layout" 2014-01-28 07:52:25 +00:00
Tadashi G. Takaoka bcd30bf3e7 Suggestion strip honors RTL layout
Bug: 9126496
Change-Id: Ia4a1c52bd2a80ea7fe6b9529f2767fee5f9e8aeb
2014-01-28 15:47:54 +09:00
Jean Chalard 86210c7dc7 [IL96] Inline a method
Bug: 8636060
Change-Id: I517591c484dce74788398cf4a4db9a074d91a6c0
2014-01-28 15:47:04 +09:00
Jean Chalard 90916143b6 [IL95] Inline a method that's always called in sequence
Bug: 8636060
Change-Id: I514cf14596b3fa46eccadcf536342e4bb805708d
2014-01-28 15:47:01 +09:00
Jean Chalard 5b5e877efe [IL94] Remove a function and some reordering
Bug: 8636060
Change-Id: I4baa237c9c7b58a8eb4158c34b9d3f3dfb95c69c
2014-01-27 20:38:45 +09:00
Jean Chalard 37e1cc931f [IL93] Refactor a method inside another
The calls to setAutoCorrectionIndicator with a constant are
always the exact same as mWillAutoCorrect.

Bug: 8636060
Change-Id: I8106919819b978b0a9655af2ef444664fad4c1ad
2014-01-27 20:38:45 +09:00
Jean Chalard 4c6029e530 [IL92] Straighten out showSuggestionStripWithTypedWord
Bug: 8636060
Change-Id: I066ff29c76349f0ab61441ea5f7bc9085d24bdbc
2014-01-27 20:38:45 +09:00
Jean Chalard c6367ee64d [IL91] Call reorder
Bug: 8636060
Change-Id: I3d0ce6dcb3b51cabc424d00a397d243c32360e92
2014-01-27 20:38:43 +09:00
Jean Chalard d38b0468b0 [IL90] Small refactoring
Bug: 8636060
Change-Id: I37844ab1c5c61ea940897e7d72bb79c7b329f743
2014-01-27 18:42:33 +09:00
Jean Chalard 33ff321d6c [IL89] Inline a function
We will then refactor the contents of showSuggestionStripWithTypedWord

Bug: 8636060
Change-Id: I8a2a0d50b79fcc7ad21b01a0060b9fa7e4c1bdd6
2014-01-27 18:42:33 +09:00
Jean Chalard ca819178a1 [IL88] Simple refactoring
With this, the value passed to suggestedWords is never null.

Bug: 8636060
Change-Id: I433dd7e7290125e217e05cc20bee7a4b58fe083f
2014-01-27 18:42:33 +09:00
Jean Chalard d90bdd2187 [IL87] Remove a call to clearSuggestionStrip
The goal is to remove the function completely.

Bug: 8636060
Change-Id: I50b8f0368c8f6506209398ff931881e2235c3d2d
2014-01-27 18:42:33 +09:00
Jean Chalard 07eddf3c43 [IL85] Maybe show punctuations when app completions are null
When the app goes to the trouble of supplying completions,
but supplies null, then we should show punctuations if
settings allow.

Bug: 8636060
Change-Id: I33c32566039c80df61fcca3fab346fd336d96a12
2014-01-27 18:42:32 +09:00
Jean Chalard b2c0388a69 [IL84] Remove a useless call and rename a method
Bug: 8636060
Change-Id: I5cac787953a3c71b6402520c2f5c70619d4a40a8
2014-01-27 18:42:32 +09:00
Jean Chalard eb190ab32f [IL83] Inline a call
The coming string of changes is very complicated, so
I'm going to do things really slowly.

Bug: 8636060
Change-Id: Id8a07a154ac514e9b3307ead22d47c3ae6fa732b
2014-01-27 18:42:32 +09:00
Jean Chalard 17f1528f9e [IL82] Fix a wrong comment
Change-Id: I6e16b4e05010a08f4d1da34145f819c32b3bc79e
2014-01-27 18:42:32 +09:00
Jean Chalard f59487379e [IL79] Some refactoring
Bug: 8636060
Change-Id: I931c553f68a1f15d22711a661dbffd4e5d421979
2014-01-27 18:42:29 +09:00
Jean Chalard 10460441db [IL78] Move most of onUpdateSelection to InputLogic.
Bug: 8636060
Change-Id: I7290250637e37bf6964bab71d2141e19f20a5459
2014-01-27 18:42:04 +09:00
Jean Chalard 68d7291a6b Merge "[IL77] Remove refs to Settings from InputLogic" 2014-01-27 09:29:50 +00:00
Jean Chalard 7bee84095e Merge "[IL75] Move the SubtypeSwitcher out of InputLogic." 2014-01-27 09:24:10 +00:00
Jean Chalard 48df380f78 [IL77] Remove refs to Settings from InputLogic
Bug: 8636060
Change-Id: I4ce5c9b62181ce8593a453ce222ae7d1fdc08f07
2014-01-27 18:18:54 +09:00
Jean Chalard 969c06072d [IL75] Move the SubtypeSwitcher out of InputLogic.
Bug: 8636060
Change-Id: I2a5da27e73cf378e55bd80ab2054c1ba8b13f6ec
2014-01-27 18:18:27 +09:00
Jean Chalard 5cf70a1d44 Merge "[IL74] Remove unused/unwanted arguments to a method." 2014-01-27 08:57:12 +00:00
Jean Chalard 0fd556ceca [IL74] Remove unused/unwanted arguments to a method.
Bug: 8636060
Change-Id: I3c5213cc57b5b5febd25f14d40c197d2da43dfb8
2014-01-27 16:48:17 +09:00
Ken Wakasa 03283b636c Follow up to Ic7d2cbb2c1b2deaa4e735484bdc7413c0b3b1939
some cleanups as well

Change-Id: I92252eb7b13cb70283a79f50429ed77405ea9575
2014-01-27 16:08:27 +09:00
Jean Chalard 1d6e647ac3 [IL69.1] Move a static method to a utility class.
This is a followup to IL69.

Change-Id: Iba154517aa7f75b9f16aa1b808c0da8d84be837f
2014-01-24 11:59:23 +09:00
Jean Chalard 1284e556f4 [IL70] Remove unused arguments
Bug: 8636060
Change-Id: Iec56bce362ebfc52fedab02b127978abb4f3c7f9
2014-01-23 15:33:14 +09:00
Jean Chalard d1f463eacf [IL69] Oust Keyboard from WordComposer#setComposingWord
Bug: 8636060
Change-Id: I624a45500603dfad355ee3b8b794b2d895219c0b
2014-01-23 15:32:59 +09:00
Jean Chalard eb6d41a525 [IL67] Externalize a call to the keyboard switcher
Bug: 8636060
Change-Id: Ib13a54854e30afb79217a0a1f2aeca50a95ba155
2014-01-23 13:10:02 +09:00
Jean Chalard ab80b41a0d [IL66] Remove two accesses to KeyboardSwitcher.
Bug: 8636060
Change-Id: I3b144993e2bcd552f9b292b8f057c9db4216125c
2014-01-23 13:09:58 +09:00
Jean Chalard a91dfff5e5 [IL65] Pull up X,Y processing, step 4
This works because getKey{X,Y} is a no-op on
Constants.NOT_A_COORDINATE.

Bug: 8636060
Change-Id: I2f7dd96b6011f094110f7978f8ff24ef2a6e2585
2014-01-22 14:44:27 +09:00
Jean Chalard 352286a43b [IL64] Pull up X,Y processing, step 3
Bug: 8636060
Change-Id: Ic051e5d5514d270101b0571a2d30e2caa8f85bc1
2014-01-22 14:44:25 +09:00
Tadashi G. Takaoka 3033cc51b8 Refactor logic to retrieve relevant suggestions a bit
Change-Id: Ic7d2cbb2c1b2deaa4e735484bdc7413c0b3b1939
2014-01-20 12:08:25 +09:00
Jean Chalard 17bd129faf [IL59] Rename a method
Um... this is not async ? Remove that from the name

Bug: 8636060
Change-Id: Ida5f9bd6929eae75103eb2e3fb866ed7468af806
2014-01-17 02:10:56 +09:00
Jean Chalard ac6dfaf80b [IL58] Simplification
No need to test multiple times for this. Let's just never do useless
stuff, and only test for that once.

Bug: 8636060
Change-Id: I50a9e4da769fbec44fbb12eedfed03aad924cc2c
2014-01-17 02:10:51 +09:00
Jean Chalard 4752b68f5a [IL56] Don't erase suggestions when reverting a commit.
Bug: 12297051
Change-Id: Iffa1c98b8fe2b816c3ac6bc171037288107f637d
2014-01-16 03:22:46 +09:00
Jean Chalard 6c24b91601 [IL55] Remove a useless argument.
Change-Id: I0b3a6cdf49038c32194413c21da824784a53f581
2014-01-10 20:28:50 +09:00
Jean Chalard a224aafea3 [IL54.5] Use the cursor pos estimate, not the last value
For edit tasks, the estimate is actually the right thing to use.
This is really dangerous, but it will get rid of pretty much all
race conditions.

Change-Id: I2d5ca3ce45e32f1bd9c8b778421fd54b9c1f6f63
2014-01-10 19:08:47 +09:00