Commit Graph

275 Commits (3a73b37b30d922ea742dc69d676d66c1e8101140)

Author SHA1 Message Date
Kurt Partridge ef5d760ca4 Remove ref to LatinImeLogger preference.
This is a bug; the ResearchLogger uses ResearchSettings.readResearchLoggerEnabledFlag() instead,
which the user cannot change.  (We assume they will just switch to a different keyboard.)

Change-Id: Ib5731c9eeb2bc29d9cf8608033326674f5eb6f7b
2013-05-09 14:36:40 -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 56f35a10cd Merge "Fix bug in counting words between samples" 2013-04-18 04:23:29 +00:00
Kurt Partridge 7a1721753b Merge "Fix user recording dialog" 2013-04-18 02:07:16 +00:00
Kurt Partridge 0833b3cbae Merge "Fix alarm bug" 2013-04-18 01:01:48 +00:00
Kurt Partridge b903f10393 Merge "Label logUnits after LatinImeOnEndBatchInput" 2013-04-17 21:30:47 +00:00
Kurt Partridge a5bfac5bec Merge "Fix NPE" 2013-04-17 20:33:26 +00:00
Kurt Partridge 7da87f97b0 Merge "Clean up unnecessary log messages" 2013-04-17 20:18:19 +00:00
Kurt Partridge e9e4fe5227 Merge "Fix logic error" 2013-04-17 18:57:18 +00:00
Kurt Partridge 1f99e04bba Merge "Fix JsonWriter bug" 2013-04-17 18:20:34 +00:00
Kurt Partridge dac3ee49ae Merge "Small dot in corner was not visible" 2013-04-17 17:18:35 +00: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
Kurt Partridge fdc90d4a58 Fix user recording dialog
Clicking the "include recording" checkbox in the user feedback dialog did nothing.
The code was relying on the state of the checkbox, rather than keeping its own state.
Fixing this addresses the bug.

Change-Id: I559d57a4e11f869f6e6f5e5de7878f765531a203
2013-04-17 08:42:20 -07:00
Kurt Partridge 9d3bbc82a0 Fix alarm bug
The AlarmManager takes absolute times as an argument, not durations.

Change-Id: I419434ba5908c5f4070608070bbecf753088ecc8
2013-04-17 08:39:49 -07:00
Kurt Partridge cd831fa285 Fix JsonWriter bug
JsonWriter requires that data be written to it, else close() will throw
an exception.

Change-Id: I596c5363e063cc75bcda55e0a506eefb3f17bd67
2013-04-17 01:26:52 -07:00
Kurt Partridge fe0529714e Label logUnits after LatinImeOnEndBatchInput
Previously only a commitText would cause a LogUnit to be
labeled with the word that the data generates.  In the case
of gestured text, this information is available when
LatinIME#onEndBatchInput is called. Labeling the LogUnit
at this time means that the Log will have labeled words even
if stop() is called before commit.

Change-Id: Idb2f99a9c159a1b1aa00448a2ecddeca6c351c3e
2013-04-17 01:14:36 -07:00
Kurt Partridge 4ac28ded28 Fix NPE
Change-Id: I8a091fb63dab12a0d2ba69e2fe393249bc68d103
2013-04-16 20:39:47 -07:00
Kurt Partridge 2edb4f22cb Clean up unnecessary log messages
Change-Id: I6c3252f3b31c5874ea2f909f636f58b579c06b8d
2013-04-16 20:39:47 -07:00
Kurt Partridge cd39368c21 Fix logic error
Change-Id: Ia36660c66504ba2fbb7f125704926a08726df87a
2013-04-16 20:39:47 -07:00
Kurt Partridge 2d9d4390fd Small dot in corner was not visible
Framework change perhaps?  Even if not, this makes it more visible

Change-Id: Ib6d36b5a30136c4516adac666bdff36d1cd9b337
2013-04-16 20:39:47 -07:00
Kurt Partridge 125f22dc58 Include nanoTime in filename
System is fast enough that sometimes SystemClock.currentTimeMillis() is duplicated
when used to make a unique filename.

Change-Id: I9454fbb5e10265d36b8e17cba183a1591d52cc7b
2013-04-16 20:29:42 -07:00
Kurt Partridge ededdc6a8b Merge "Avoid NPE" 2013-04-12 18:10:49 +00:00
Jean Chalard 6a114fa700 Restart suggestions when the cursor moves.
This uses the old suggestions. It does not try to recompute
new suggestions if there are no old suggestions yet: this is
coming in a later change.
If there are no suggestions, this shows the word itself
as a suggestion.

Bug: 8084810
Change-Id: I4c2e25df0ff3673be1825f57a0c19a9d23d47a48
2013-04-12 20:49:03 +09:00
Kurt Partridge 2927223edd Merge "Better isolate ResearchLogging data" 2013-04-11 21:56:01 +00:00
Kurt Partridge cdaee868a3 Merge "Preserve a class for testing" 2013-04-10 23:45:33 +00:00
Kurt Partridge 3684036eed Preserve a class for testing
Addresses b/8583091

Change-Id: I89605223784312d9572dfc7c8aaa7e5eba44c4f6
2013-04-10 16:40:17 -07:00
Kurt Partridge 6108624a00 Better isolate ResearchLogging data
Calls to LatinIME#onStartInputViewInternal log important information
about the context in which an IME is used.  This is reported as a
single LogStatement.  Previously, this was not placed into a separate
LogUnit, and was mixed in with general word data.  This change wraps
this LogStatement in its own LogUnit.

Change-Id: I0fecd41c8a1de622a764cc4b5d6902336697046c
2013-04-10 11:53:38 -07:00
Kurt Partridge dfa5628cd3 Better release build reporting
The ResearchLogger reports whether a build is a release build or not
to avoid polluting data with IME debugging work by developers.
Previously this was done by checking a constant flag, which was also
serving the dual purpose of masking out debug code in release builds.

This change introduces a heuristic to determine whether a build was
created by a developer (using the package versionName), and annotating
the data sent to the server appropriately.

Change-Id: Icbad17c66b703cabf6d23d05e2c7c41bcceaae45
2013-04-10 11:52:37 -07:00
Kurt Partridge 09ab6495a2 Merge "[FileEncap18] Clean up uploading scheduling" 2013-04-09 19:08:40 +00:00
Kurt Partridge 1f70a4d681 Merge "Allow logging while replaying" 2013-04-09 02:33:09 +00:00
Kurt Partridge 30772c3758 Allow logging while replaying
Previously logging was disabled during replay.  This makes it impossible to use logged data as a
regression test, since the new log was unavailable.  This change corrects this problem.

Change-Id: I19dc31def2f2f87fd219dc561c739d18e4ab9c9c
2013-04-01 16:49:39 -07:00
Kurt Partridge 5779bc91e6 Merge "Split LogUnits differently." 2013-04-01 23:08:21 +00:00
Kurt Partridge 39cb0334d9 Avoid NPE
Initialize FeedbackLog earlier to avoid NPE

Change-Id: I646944c68a7d092345def16060b2a4edd8c7dbef
2013-03-26 16:46:43 -07:00
Kurt Partridge 189be5196a Split LogUnits differently.
Previously an autocorrection caused a new LogUnit to be started,
splitting off the previous LogUnit right at the autocorrection method
time.  This change causes the split to happen before the MotionEvents
that led to the autocorrection being called.

Change-Id: I2504df8eb47ee77e5f46bac34a8450636c03fd9f
2013-03-26 16:46:43 -07:00
Kurt Partridge 6d71d238e2 [FileEncap18] Clean up uploading scheduling
- Move scheduling logic from ResearchLogger.java to
  UploaderService.java
- Switch to a one-shot timer.  Previously the uploader was scheduled
  on an inexact repeating schedule.  It's better to reschedule the
  next upload after the current one is finished to reduce the chances
  of multiple uploads happening at the same time.
- Avoid double-execution
    - Previously a scheduled upload might run right after an explicit
      one if they occured at the same time.  This change reduces the
      chances of this.
- Some method extraction and naming

Change-Id: I9efda11be77d334c7f61bd40a36d65f0421ebde4
2013-03-25 17:50:26 -07:00
Kurt Partridge 87bc3a4a62 Close ResearchLogger upon onFinishInputView
Previously, ResearchLogger#stop() was called both in
LatinIME#onFinishInputView() and in LatinIME#onWindowHidden().  This
resulted in multiple logs being written.

Since onFinishInputView is the more reliable of the two (it is called
in InputMethodService#onDestroy; onWindowHidden is not), the code now
uses onFinishInputView as a stopping signal.

Change-Id: Iae4b8c3bdab226027624eeab19b3737367e4a108
2013-03-25 17:31:25 -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 f33f1cab2f [FileEncap9] Extract ResearchLogDirectory class
Previously used a monotonically increasing int.  Now uses uuid and nanoseconds.

squashed in:
    [FileEncap11] Read preference from ResearchSettings
    Change-Id: Ic779e0a69db6b16e92c6f4b63dbe7b7add566ab6

    [FileEncap12] Simplify directory cleanup invocation
    Change-Id: I688047409c0343d32b11447fb625dfb726c731ec

    [FileEncap14] Change log filename syntax
    Change-Id: I9243b20b2eb392f81ab8c5c3d19315211240e0bc

Change-Id: I5c9d70e0cb7b0965158e17dd71dfab796bd9a440
2013-03-14 06:37:56 -07:00
Kurt Partridge 7faa2caa80 Merge "[Lazy4] Remove useless debug code" 2013-03-14 13:13:57 +00:00
Jean Chalard 13a82d9530 [Lazy2] Pass a runnable to abort
Change-Id: I721afbf426099753aa876a55323eb806b08c24d6
2013-03-12 18:56:57 -07:00
Jean Chalard 7423005b96 [Lazy1] Switch to blocking log closures
Change-Id: I4daec20b7b47b0d71c5aab6e17cd660015e19e71
2013-03-12 17:09:08 -07:00
Jean Chalard 220b271dfa [Lazy4] Remove useless debug code
This code is cluttering readability and getting in the way
of future updates.
Future updates will make it much easier to debug and to
test this code, so this needs to disappear.

Change-Id: I32e28ec608587b6b7c07250a2692b13e8fc98465
2013-03-08 17:46:00 -08:00
Kurt Partridge bba39b9b67 [FileEncap8] Remove useless "success" variable
Change-Id: Icf76bc0b795b6a9221d9a6d61c38df31af54ab7b
2013-03-07 17:43:35 -08:00
Kurt Partridge ee3261ff55 [FileEncap7] Extract uploadContents method
Change-Id: I018b2726533042dbcb25713ea039aec41c148db2
2013-03-07 17:43:28 -08:00
Kurt Partridge 4436446e9b [FileEncap6] Extract Uploader class
Gerrit was stuck on original change I9ef4eb7450

Change-Id: I6d4ee686944074779aca5b09b018782c7033874d
2013-03-07 16:19:44 -08:00
Kurt Partridge 9283644c41 [FileEncap5] Move conditional logic to caller
Change-Id: I6599539059f86dc8902210d325439c08035b2e2a
2013-03-06 07:19:41 -08:00
Kurt Partridge 88f466678c [FileEncap4] Simplify logic
Change-Id: Ibb8660d12812b867856259d3e5c04a31e281027d
2013-03-06 07:19:41 -08:00
Kurt Partridge 7f7850d23a [FileEncap3] Extract isUploadingUnconditionally method
- remove isUploadingUnconditionally local variable

Change-Id: I69be8708c1f306568cbb9c5cbefc9e42a87df497
2013-03-06 07:19:41 -08:00
Kurt Partridge 466e665b3c [FileEncap2] Remove mCanUpload instance variable
Change-Id: I62a100c4d73bb64a14a7994f7dd9af7b6946d064
2013-03-06 07:19:41 -08:00
Kurt Partridge 347b2ebebf [FileEncap1] Extract hasUploadingPermisssions method
Change-Id: Ica1dabcf066cde6580035f12fa35a404cb32fb3f
2013-03-06 07:19:41 -08:00
Kurt Partridge 84bc16af3e Little cleanups
Change-Id: I2ded3d0a29610941fac27c9b26168dd6c06ceccc
2013-03-05 18:37:44 -08:00
Kurt Partridge 4eeb90cd72 Clean up initialization ordering
This change is based on an earlier one that got stuck in Gerrit: Iab77504b

Change-Id: I27ad9dfb1bbb2300bd1e61d881a6ea0e116db066
2013-03-05 18:37:00 -08:00
Kurt Partridge 157c00145b Clean up logic in onUserLoggingConsent
- Make ResearchSetting for whether the user has seen the splash screen
- Inline #setLoggingAllowed, which is short and is now only called by
  onUserLoggingConsent

Change-Id: Icdf4592777b80643807b6ccf1d3896459c503e02
2013-03-04 12:05:03 -08:00
Kurt Partridge 75e6fb68e9 Clean up PREF_USABILITY_STUDY_MODE
- Refer to a common default value in DebugSettings
- Make PREF_USABILITY_STUDY_MODE independent of the ResearchLogger
- ResearchLogger uses its own preference through ResearchSettings

multi-project commit with Ie0df836c9d779eba484b522666ec357f4e234823

Change-Id: I88547a2f619db6e7364abbbec12f9f76855dd11a
2013-03-04 12:05:03 -08:00
Kurt Partridge 788dc55662 Merge "Remove MainLogBuffer#setSuggest()" 2013-03-04 15:10:31 +00:00
Kurt Partridge a8e668c81e Merge "Move UUID preference reading to ResearchSettings.java" 2013-03-02 01:50:03 +00: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 00ed4704f9 Move UUID preference reading to ResearchSettings.java
Change-Id: I8157249259cf8c3218c5c82a5729f4cbc1fb4eeb
2013-02-28 19:54:21 -08:00
Kurt Partridge 59912837b3 [TestPrep22] Make variable package-private for testing
Change-Id: I902a6a40df1c672c611672f34d2f3237b0d1821b
2013-02-28 06:45:35 -08:00
Kurt Partridge 5cd50faaca [TestPrep20] Clean up import statement
Change-Id: Ifcfec09b669d8b2012b1c960bd4b1471c7946870
2013-02-28 06:45:34 -08:00
Kurt Partridge abaa88fd4e Merge "[TestPrep18] Make class public for testing" 2013-02-28 01:00:46 +00:00
Kurt Partridge a04fbce412 Merge "[TestPrep17] Allow fake dictionary for testing" 2013-02-27 23:59:01 +00:00
Kurt Partridge 424a976e58 Merge "Ensure Preference listener is unregistered" 2013-02-27 03:49:40 +00:00
Kurt Partridge 96d019f183 [TestPrep18] Make class public for testing
Change-Id: I4b457f44dd6a5a595c61a62061ea02c251fa9ab1
2013-02-26 19:22:56 -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 7e2c1e69bf Ensure Preference listener is unregistered
Change-Id: I1a4d1e7bc45fc30cb1b63ea6020f0eee6e804333
2013-02-26 18:40:34 -08:00
Kurt Partridge f170f145af [TestPrep11] Only use mHasWrittenData to control JsonWriter#endArray() call
Change-Id: If2107e38575b009a4c372194ecd827e27bdbb2b4
2013-02-26 15:02:52 -08:00
Kurt Partridge a5e564bea0 [TestPrep10] Add some comments
Change-Id: Ia8e0bd72b0dc09bfc256ec5d1996637554376b5f
2013-02-26 15:02:52 -08:00
Kurt Partridge 744b363ae8 [TestPrep8] Narrow try/catch scope
Change-Id: If15f250feb81c2ad55ce1bc7dc3dafa57de87aef
2013-02-21 17:01:08 -08:00
Kurt Partridge 78c1ad32e6 [TestPrep7] Encapsulate JsonWriter creation
Change-Id: I4e97fa28dd0bb1101edc0db03f024432fee6f6fe
2013-02-21 17:01:08 -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 b6d05aeb7c [TestPrep2] Rename a method
Change-Id: Id9a72045afa3558b20b9d63c8720fb7443d34fd9
2013-02-20 17:13:00 -08:00
Kurt Partridge 8d429bf1a8 [TestPrep1] Move MotionEvent.Action strings to LoggingUtils
Change-Id: I7b9ed800552f2fd546ed21e9dc06ea1ff5798337
2013-02-20 17:12:56 -08:00
Kurt Partridge 531dd150eb Cleanup in preparation for tests
multi-project commit with I1212da392ecda0ad78962da68941870b5a651eee

Change-Id: Ie74af59d4e45bf954723fee9dcf350a36468c381
2013-02-12 20:48:44 -08:00
Kurt Partridge 04de6802cc Merge "Add batchMode field to PickSuggestionManually" 2013-02-12 16:54:35 +00:00
Kurt Partridge 2cabb7aed0 Close file properly
Change-Id: Ied55b6a6f1e64bbca558316d8d3d207d7655cf91
2013-02-08 11:43:51 -08:00
Kurt Partridge c52569ffcb Add batchMode field to PickSuggestionManually
Change-Id: Iaaffc71378154240538bf90f0b85c3f17f3f78b3
2013-02-08 11:39:04 -08:00
Kurt Partridge b02a19c49d Refactor LogStatement publishing method
The method in LogUnit for publishing a LogStatement to a JsonWriter doesn't
depend on anything in the LogUnit.

multi-project commit with Id1d6ff4851148bba0e6b5a1ec6eec2b842d9c707

Change-Id: I323cec239d6ea1cee602c2ecf9b13713791e9283
2013-02-05 15:18:20 -08:00
Kurt Partridge 445d8e8bf6 Merge "[Rlog79b] Save channel name during internal use" 2013-02-04 19:16:33 +00:00
Kurt Partridge 7708bcf6fb [Rlog48c] Replay historical motion data
Change-Id: Ib398ea61ff048b1a4ac3b7f7b4a772e173a7b294
2013-02-04 06:13:51 -08:00
Kurt Partridge d34347bd4b [Rlog79b] Save channel name during internal use
The feedback string is used as a channel name in internal builds.  Add a flag
that lets it be saved between calls to make it easier to generate test data.

Change-Id: I5c6149b1e68239cd968b6852d03cc240ddde99ca
2013-02-04 06:09:45 -08:00
Kurt Partridge ce9e7f667d [Rlog48b] Better visual indicator for logging state
Now applies yellow bars if recording, green bars if replaying.

Change-Id: I39d39de6254fd57107ea5355c43b154244520985
2013-02-01 17:10:56 -08:00
Kurt Partridge ceffa0bec9 Merge "[Rlog79a] Disallow empty feedback messages" 2013-02-01 17:15:07 +00:00
Kurt Partridge 0cafd6580c Merge "[Rlog48a] Update and make logging strings consistent" 2013-02-01 16:33:42 +00:00
Kurt Partridge d3f718fccd [Rlog79a] Disallow empty feedback messages
Change-Id: I30f7c07606e466c3c9538adad94024d00f0901de
2013-02-01 07:08:32 -08:00
Kurt Partridge 5bdd7bab11 Merge "[Rlog47] Replayer service, inspect-researchLog.py" 2013-02-01 15:05:58 +00:00
Kurt Partridge c20a415e15 [Rlog48a] Update and make logging strings consistent
Change-Id: Iae04115921aaf6bbc3c6ad6e7d2d0e7401af41f8
2013-01-31 19:08:54 -08:00
Kurt Partridge 40be4c3bdb ResearchLogger invocation tests
- Start with just a smoke test.
- Sets up a private SharedPreferences

multi-project commit with I81cceba23692d64c2ea58a46351fc36d118ff825

Change-Id: I96e02d9a8de70cb5c03fd7411b886903e7a83673
2013-01-31 14:54:14 -08:00
Kurt Partridge 588d9b5c8d [Rlog47] Replayer service, inspect-researchLog.py
multi-project commit with Ia2dd81afb4ea124094a20a39e31ffd193edff3d2

Change-Id: I80fe8f2ce137fedf48038955d5f3d9deed04f763
2013-01-31 12:13:08 -08:00
Kurt Partridge e8a0bfb315 [Rlog39] Remove unnecessary commitCurrentLogUnit() call
Change-Id: I1983095058d004476065328ad34bb9e325af7062
2013-01-30 17:39:42 -08:00
Kurt Partridge faf35c323b [Rlog29] User interface for recording
- Also, internal flag for automatically replaying after a recording is made (off by default)
- RLog key to "Bug?"

multi-project commit with I0c2fababd73eed5a341af487bca04ddd650d4cc2

Change-Id: I162c96a715de7180f276e08b4686a20f29dabafb
2013-01-29 15:46:16 -08:00
Kurt Partridge f3731188e5 [Rlog27] Add replay capability
- Add support for replaying log files to the ResearchLogger.  This will let
  users preview data that they choose to upload.
- When the user explicitly requests that the system record their action, it
  will record everything up to, and including, the motion involved in shutting
  off the recording.  This change also removes the stop-recording motion
  commands.

Change-Id: Ib1df383bbf1881512cb111fab9f6749c25e436ba
2013-01-29 09:33:25 -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 edb5c4638b Merge "[Rlog81a] Determine correction type of words" 2013-01-23 17:12:02 +00:00
Kurt Partridge 0c16a5c6ee [Rlog81a] Determine correction type of words
Heuristic to determine whether a word was a typo correction or a complete
replacement by examining a correction to see if it falls within the list of
suggested words of the original.

Change-Id: Ieec4861a811e96aef0d14622e662b589ef8b4772
2013-01-22 11:41:52 -08:00
Kurt Partridge 4cb853191c [Rlog15] ResearchLogger option to include account name in feedback
multi-project commit with I0a293f392bd605c8203dc9a62993345ad58dcfbe

Change-Id: Ief5b940a62dbaeaecdf1c55f2ffdd1e0fdaea2b9
2013-01-21 12:18:43 -08:00