Merge "Add an exported flag in manifest"
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 79d3373..9b14928 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -15,132 +15,141 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        coreApp="true"
-        package="com.android.inputmethod.latin"
-        android:versionCode="28">
+     coreApp="true"
+     package="com.android.inputmethod.latin"
+     android:versionCode="28">
 
-    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
+    <uses-sdk android:minSdkVersion="21"
+         android:targetSdkVersion="28"/>
 
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
-    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
-    <uses-permission android:name="android.permission.READ_CONTACTS" />
-    <uses-permission android:name="android.permission.READ_PROFILE" />
-    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
-    <uses-permission android:name="android.permission.READ_SYNC_STATS" />
-    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
-    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
-    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
-    <uses-permission android:name="android.permission.VIBRATE" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
-    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
+    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
+    <uses-permission android:name="android.permission.READ_CONTACTS"/>
+    <uses-permission android:name="android.permission.READ_PROFILE"/>
+    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
+    <uses-permission android:name="android.permission.READ_SYNC_STATS"/>
+    <uses-permission android:name="android.permission.READ_USER_DICTIONARY"/>
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+    <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
+    <uses-permission android:name="android.permission.VIBRATE"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
+    <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/>
 
     <!-- A signature-protected permission to ask AOSP Keyboard to close the software keyboard.
-         To use this, add the following line into calling application's AndroidManifest.xml
+                 To use this, add the following line into calling application's AndroidManifest.xml
          <pre>
-         {@code
+                      {@code
          <uses-permission android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT"/>
-         }
+                      }
          </pre>
-         then call {@link android.content.Context#sendBroadcast(Intent)} as follows:
+                      then call {@link android.content.Context#sendBroadcast(Intent)} as follows:
          <pre>
-         {@code
-         sendBroadcast(new Intent("com.android.inputmethod.latin.HIDE_SOFT_INPUT")
-                 .setPackage("com.android.inputmethod.latin"));
-         }
+                      {@code
+                      sendBroadcast(new Intent("com.android.inputmethod.latin.HIDE_SOFT_INPUT")
+                              .setPackage("com.android.inputmethod.latin"));
+                      }
          </pre> -->
     <permission android:name="com.android.inputmethod.latin.HIDE_SOFT_INPUT"
-                android:protectionLevel="signature" />
+         android:protectionLevel="signature"/>
 
     <application android:label="@string/english_ime_name"
-            android:icon="@drawable/ic_launcher_keyboard"
-            android:supportsRtl="true"
-            android:allowBackup="true"
-            android:defaultToDeviceProtectedStorage="true"
-            android:directBootAware="true">
+         android:icon="@drawable/ic_launcher_keyboard"
+         android:supportsRtl="true"
+         android:allowBackup="true"
+         android:defaultToDeviceProtectedStorage="true"
+         android:directBootAware="true">
 
         <!-- Services -->
         <service android:name="LatinIME"
-                android:label="@string/english_ime_name"
-                android:permission="android.permission.BIND_INPUT_METHOD">
+             android:label="@string/english_ime_name"
+             android:permission="android.permission.BIND_INPUT_METHOD"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.view.InputMethod" />
+                <action android:name="android.view.InputMethod"/>
             </intent-filter>
-            <meta-data android:name="android.view.im" android:resource="@xml/method" />
+            <meta-data android:name="android.view.im"
+                 android:resource="@xml/method"/>
         </service>
 
         <service android:name=".spellcheck.AndroidSpellCheckerService"
-                 android:label="@string/spell_checker_service_name"
-                 android:permission="android.permission.BIND_TEXT_SERVICE">
+             android:label="@string/spell_checker_service_name"
+             android:permission="android.permission.BIND_TEXT_SERVICE"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.service.textservice.SpellCheckerService" />
+                <action android:name="android.service.textservice.SpellCheckerService"/>
             </intent-filter>
             <meta-data android:name="android.view.textservice.scs"
-                    android:resource="@xml/spellchecker" />
+                 android:resource="@xml/spellchecker"/>
         </service>
 
         <service android:name="com.android.inputmethod.dictionarypack.DictionaryService"
-                android:label="@string/dictionary_service_name">
+             android:label="@string/dictionary_service_name">
         </service>
 
         <!-- Activities -->
         <activity android:name=".setup.SetupActivity"
-                android:theme="@style/platformActivityTheme"
-                android:label="@string/english_ime_name"
-                android:icon="@drawable/ic_launcher_keyboard"
-                android:launchMode="singleTask"
-                android:noHistory="true">
+             android:theme="@style/platformActivityTheme"
+             android:label="@string/english_ime_name"
+             android:icon="@drawable/ic_launcher_keyboard"
+             android:launchMode="singleTask"
+             android:noHistory="true"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
         </activity>
 
-        <activity
-            android:name=".permissions.PermissionsActivity"
-            android:theme="@android:style/Theme.Translucent.NoTitleBar"
-            android:exported="false"
-            android:taskAffinity="" >
+        <activity android:name=".permissions.PermissionsActivity"
+             android:theme="@android:style/Theme.Translucent.NoTitleBar"
+             android:exported="false"
+             android:taskAffinity="">
         </activity>
 
         <activity android:name=".setup.SetupWizardActivity"
-                android:theme="@style/platformActivityTheme"
-                android:label="@string/english_ime_name"
-                android:clearTaskOnLaunch="true">
+             android:theme="@style/platformActivityTheme"
+             android:label="@string/english_ime_name"
+             android:clearTaskOnLaunch="true"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.intent.action.MAIN"/>
             </intent-filter>
         </activity>
 
         <activity android:name=".settings.SettingsActivity"
-                android:theme="@style/platformSettingsTheme"
-                android:label="@string/english_ime_settings">
+             android:theme="@style/platformSettingsTheme"
+             android:label="@string/english_ime_settings"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.intent.action.MAIN"/>
             </intent-filter>
         </activity>
 
         <activity android:name=".spellcheck.SpellCheckerSettingsActivity"
-                  android:theme="@style/platformSettingsTheme"
-                  android:label="@string/android_spell_checker_settings">
+             android:theme="@style/platformSettingsTheme"
+             android:label="@string/android_spell_checker_settings"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.intent.action.MAIN"/>
             </intent-filter>
         </activity>
 
         <activity android:name="com.android.inputmethod.dictionarypack.DictionarySettingsActivity"
-                android:theme="@style/platformSettingsTheme"
-                android:label="@string/dictionary_settings_title"
-                android:uiOptions="splitActionBarWhenNarrow">
+             android:theme="@style/platformSettingsTheme"
+             android:label="@string/dictionary_settings_title"
+             android:uiOptions="splitActionBarWhenNarrow"
+             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
             </intent-filter>
         </activity>
 
         <activity android:name="com.android.inputmethod.dictionarypack.DownloadOverMeteredDialog"
-                android:theme="@style/platformActivityTheme"
-                android:label="@string/dictionary_install_over_metered_network_prompt">
+             android:theme="@style/platformActivityTheme"
+             android:label="@string/dictionary_install_over_metered_network_prompt"
+             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
             </intent-filter>
@@ -148,47 +157,51 @@
 
         <!-- Unexported activity used for tests. -->
         <activity android:name=".settings.TestFragmentActivity"
-                android:exported="false" />
+             android:exported="false"/>
 
         <!-- Broadcast receivers -->
-        <receiver android:name="SystemBroadcastReceiver">
+        <receiver android:name="SystemBroadcastReceiver"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
-                <action android:name="android.intent.action.BOOT_COMPLETED" />
-                <action android:name="android.intent.action.USER_INITIALIZE" />
-                <action android:name="android.intent.action.LOCALE_CHANGED" />
+                <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
+                <action android:name="android.intent.action.BOOT_COMPLETED"/>
+                <action android:name="android.intent.action.USER_INITIALIZE"/>
+                <action android:name="android.intent.action.LOCALE_CHANGED"/>
             </intent-filter>
         </receiver>
 
-        <receiver android:name="DictionaryPackInstallBroadcastReceiver" android:exported="false">
+        <receiver android:name="DictionaryPackInstallBroadcastReceiver"
+             android:exported="false">
             <intent-filter>
-                <action android:name="com.android.inputmethod.dictionarypack.aosp.UNKNOWN_CLIENT" />
+                <action android:name="com.android.inputmethod.dictionarypack.aosp.UNKNOWN_CLIENT"/>
             </intent-filter>
         </receiver>
 
-        <receiver android:name="com.android.inputmethod.dictionarypack.EventHandler">
+        <receiver android:name="com.android.inputmethod.dictionarypack.EventHandler"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
-                <action android:name="android.intent.action.DATE_CHANGED" />
-                <action android:name="com.android.inputmethod.dictionarypack.aosp.UPDATE_NOW" />
-                <action android:name="com.android.inputmethod.dictionarypack.aosp.INIT_AND_UPDATE_NOW" />
+                <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
+                <action android:name="android.intent.action.DATE_CHANGED"/>
+                <action android:name="com.android.inputmethod.dictionarypack.aosp.UPDATE_NOW"/>
+                <action android:name="com.android.inputmethod.dictionarypack.aosp.INIT_AND_UPDATE_NOW"/>
             </intent-filter>
         </receiver>
 
         <!-- Broadcast receiver for AccountManager#LOGIN_ACCOUNTS_CHANGED_ACTION. -->
-        <receiver android:name=".accounts.AccountsChangedReceiver">
+        <receiver android:name=".accounts.AccountsChangedReceiver"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
+                <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED"/>
             </intent-filter>
         </receiver>
 
         <!-- Content providers -->
         <provider android:name="com.android.inputmethod.dictionarypack.DictionaryProvider"
-                android:grantUriPermissions="true"
-                android:exported="false"
-                android:authorities="@string/authority"
-                android:multiprocess="false"
-                android:label="@string/dictionary_provider_name">
+             android:grantUriPermissions="true"
+             android:exported="false"
+             android:authorities="@string/authority"
+             android:multiprocess="false"
+             android:label="@string/dictionary_provider_name">
         </provider>
     </application>
 </manifest>
diff --git a/tools/EditTextVariations/AndroidManifest.xml b/tools/EditTextVariations/AndroidManifest.xml
index 96c244b..b5a27b9 100644
--- a/tools/EditTextVariations/AndroidManifest.xml
+++ b/tools/EditTextVariations/AndroidManifest.xml
@@ -14,34 +14,27 @@
      limitations under the License.
 -->
 
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.inputmethod.tools.edittextvariations"
-    android:versionName="0.67"
-    android:versionCode="67"
->
-    <supports-screens android:resizeable="true" />
-    <uses-sdk
-        android:targetSdkVersion="27"
-        android:minSdkVersion="11" />
-    <application
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:allowBackup="false"
-    >
-        <activity
-            android:name=".EditTextVariations"
-            android:windowSoftInputMode="stateHidden|adjustPan"
-            android:theme="@style/defaultActivityTheme"
-            android:label="@string/app_name"
-        >
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+     package="com.android.inputmethod.tools.edittextvariations"
+     android:versionName="0.67"
+     android:versionCode="67">
+    <supports-screens android:resizeable="true"/>
+    <uses-sdk android:targetSdkVersion="27"
+         android:minSdkVersion="11"/>
+    <application android:icon="@drawable/ic_launcher"
+         android:label="@string/app_name"
+         android:allowBackup="false">
+        <activity android:name=".EditTextVariations"
+             android:windowSoftInputMode="stateHidden|adjustPan"
+             android:theme="@style/defaultActivityTheme"
+             android:label="@string/app_name"
+             android:exported="true">
             <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
         </activity>
-        <receiver
-            android:name=".NotificationBroadcastReceiver"
-            android:exported="false" />
+        <receiver android:name=".NotificationBroadcastReceiver"
+             android:exported="false"/>
     </application>
 </manifest>