| Index: chrome/android/java/proguard.flags | 
| diff --git a/chrome/android/java/proguard.flags b/chrome/android/java/proguard.flags | 
| index 1b2aed8749fb46eb1e46ec04a657560806f37177..d0f19e3e4293f77be6fc3cb6340668a511961e39 100644 | 
| --- a/chrome/android/java/proguard.flags | 
| +++ b/chrome/android/java/proguard.flags | 
| @@ -15,15 +15,62 @@ | 
| !private static final java.lang.String *; | 
| } | 
|  | 
| -# Keep code annotated with the following annotations. | 
| --keep class com.google.android.apps.chrome.**,org.chromium.** { | 
| +# Fragments are loaded using reflection via Fragment.instantiate(Context,String) | 
| +# This can be improved upon - see crbug.com/622023. | 
| +-keep public class com.google.android.apps.chrome** extends android.app.Fragment | 
| +-keep public class org.chromium** extends android.app.Fragment | 
| + | 
| +# Keeps for class level annotations. | 
| +-keep @**.UsedByReflection class * | 
| +-keep @**.VisibleForTesting class * | 
| + | 
| +# Keeps for method level annotations. | 
| +-keepclasseswithmembers class com.google.android.apps.chrome.** { | 
| @**.AccessedByNative <fields>; | 
| +} | 
| +-keepclasseswithmembers class com.google.android.apps.chrome.** { | 
| @**.CalledByNative <methods>; | 
| +} | 
| +-keepclasseswithmembers class com.google.android.apps.chrome.** { | 
| @**.CalledByNativeUnchecked <methods>; | 
| +} | 
| +-keepclasseswithmembers class com.google.android.apps.chrome.** { | 
| @**.JavascriptInterface <methods>; | 
| +} | 
| +-keepclasseswithmembers class com.google.android.apps.chrome.** { | 
| @**.NativeCall <methods>; | 
| +} | 
| +-keepclasseswithmembers class com.google.android.apps.chrome.** { | 
| @**.UsedByReflection <methods>; | 
| -  @**.VisibleForTesting *; | 
| +} | 
| +-keepclasseswithmembers class com.google.android.apps.chrome.** { | 
| +  @**.VisibleForTesting <methods>; | 
| +} | 
| +-keepclasseswithmembers class com.google.android.apps.chrome.** { | 
| +  native <methods>; | 
| +} | 
| +-keepclasseswithmembers class org.chromium.** { | 
| +  @**.AccessedByNative <fields>; | 
| +} | 
| +-keepclasseswithmembers class org.chromium.** { | 
| +  @**.CalledByNative <methods>; | 
| +} | 
| +-keepclasseswithmembers class org.chromium.** { | 
| +  @**.CalledByNativeUnchecked <methods>; | 
| +} | 
| +-keepclasseswithmembers class org.chromium.** { | 
| +  @**.JavascriptInterface <methods>; | 
| +} | 
| +-keepclasseswithmembers class org.chromium.** { | 
| +  @**.NativeCall <methods>; | 
| +} | 
| +-keepclasseswithmembers class org.chromium.** { | 
| +  @**.UsedByReflection <methods>; | 
| +} | 
| +-keepclasseswithmembers class org.chromium.** { | 
| +  @**.VisibleForTesting <methods>; | 
| +} | 
| +-keepclasseswithmembers class org.chromium.** { | 
| native <methods>; | 
| } | 
|  | 
| @@ -172,3 +219,7 @@ | 
| -keepnames class com.google.android.gms.common.GoogleApiAvailability { | 
| *; | 
| } | 
| + | 
| +# Needed for chrome_sync_shell_test_apk. Note - these do no affect chrome_apk's | 
| +# size. | 
| +-keep class org.chromium.sync.protocol.* { *; } | 
|  |