DO NOT MERGE: Move emailcommon2 sources to emailcommon

Change-Id: I06df7e467cd2e0117df8b8db3ddc6ff9da13f1c7
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 8a449c3..9889e69 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!--
+     Copyright (C) 2012 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -13,53 +14,31 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.email"
-    android:versionCode="410000"
-    android:versionName="4.1"
-    >
+    android:versionCode="500000"
+    android:versionName="5.0" >
 
-    <original-package
-        android:name="com.android.email" />
-
-    <uses-permission
-        android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
-    <uses-permission
-        android:name="android.permission.ACCESS_NETWORK_STATE"/>
-    <uses-permission
-        android:name="android.permission.INTERNET"/>
-    <uses-permission
-        android:name="android.permission.VIBRATE"/>
-    <uses-permission
-        android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission
-        android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <uses-permission android:name="android.permission.VIBRATE"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
-    <uses-permission
-        android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
-    <uses-permission
-        android:name="android.permission.READ_SYNC_SETTINGS" />
-    <uses-permission
-        android:name="android.permission.WRITE_SYNC_SETTINGS"/>
+    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
+    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
+    <uses-permission android:name="android.permission.READ_CONTACTS"/>
+    <uses-permission android:name="android.permission.READ_CALENDAR"/>
+    <uses-permission android:name="android.permission.READ_PROFILE"/>
+    <uses-permission android:name="android.permission.NFC"/>
+    <uses-permission android:name="android.permission.WAKE_LOCK"/>
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <uses-permission
-        android:name="android.permission.WRITE_CONTACTS"/>
-    <uses-permission
-        android:name="android.permission.READ_CONTACTS"/>
-
-    <uses-permission
-        android:name="android.permission.READ_PROFILE"/>
-
-    <uses-permission
-        android:name="android.permission.NFC"/>
-
-    <!-- Only required if a store implements push mail and needs to keep network open -->
-    <uses-permission
-        android:name="android.permission.WAKE_LOCK"/>
-    <uses-permission
-        android:name="android.permission.READ_PHONE_STATE"/>
+    <!-- This needs to be present when we are doing unbundled releases. -->
+    <uses-sdk android:targetSdkVersion="16" android:minSdkVersion="14" />
 
     <!-- Grant permission to other apps to view attachments -->
     <permission
@@ -75,158 +54,26 @@
         android:name="android.permission.USE_CREDENTIALS"/>
 
     <!-- Grant permission to system apps to access provider (see provider below) -->
+    <!-- STOPSHIP: Temporarily set protection level to "dangerous" (from "signature") -->
     <permission
         android:name="com.android.email.permission.ACCESS_PROVIDER"
-        android:protectionLevel="signature"
+        android:protectionLevel="dangerous"
         android:label="@string/permission_access_provider_label"
         android:description="@string/permission_access_provider_desc"/>
     <uses-permission
         android:name="com.android.email.permission.ACCESS_PROVIDER"/>
 
-    <!-- Note:  Actually, android:hardwareAccelerated could be "true", but in order to switch it
-         on/off in the debug screen, we have to set it "false" here and enable it at runtime.  -->
     <application
-        android:icon="@mipmap/ic_launcher_email"
+        android:icon="@mipmap/ic_launcher_mail"
         android:label="@string/app_name"
-        android:name="Email"
-        android:theme="@style/EmailTheme"
-        android:hardwareAccelerated="false"
-        >
+        android:theme="@style/UnifiedEmailTheme"
+        android:hardwareAccelerated="true" >
+        <!-- Enable search in all activities -->
+        <meta-data android:name="android.app.default_searchable"
+            android:value="com.android.email2.ui.MailActivityEmail" />
         <activity
-            android:name=".activity.Welcome"
-            >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.LAUNCHER" />
-                <category android:name="android.intent.category.APP_EMAIL" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.VIEW" />
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.LAUNCHER" />
-                <data
-                    android:scheme="content"
-                    android:host="ui.email.android.com"
-                    android:path="/view/mailbox"
-                    />
-            </intent-filter>
-        </activity>
-
-        <!-- Must be exported in order for the AccountManager to launch it -->
-        <!-- Also available for continuous test systems to force account creation -->
-        <activity
-            android:name=".activity.setup.AccountSetupBasics"
-            android:label="@string/account_setup_basics_title"
-            android:exported="true"
-            >
-            <intent-filter>
-                <action
-                    android:name="com.android.email.CREATE_ACCOUNT" />
-                <category
-                    android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-        <activity
-            android:name=".activity.setup.AccountSetupAccountType"
-            android:label="@string/account_setup_account_type_title"
-            >
-        </activity>
-        <activity
-            android:name=".activity.setup.AccountSetupIncoming"
-            android:label="@string/account_setup_incoming_title"
-            >
-        </activity>
-        <activity
-            android:name=".activity.setup.AccountSetupOutgoing"
-            android:label="@string/account_setup_outgoing_title"
-            >
-        </activity>
-        <activity
-            android:name=".activity.setup.AccountSetupExchange"
-            android:label="@string/account_setup_exchange_title"
-            >
-        </activity>
-        <activity
-            android:name=".activity.setup.AccountSetupOptions"
-            android:label="@string/account_setup_options_title"
-            >
-        </activity>
-        <activity
-            android:name=".activity.setup.AccountSetupNames"
-            android:label="@string/account_setup_names_title"
-            >
-        </activity>
-        <activity
-            android:name=".activity.setup.AccountSettings"
-            android:label="@string/settings_activity_title"
-            android:theme="@android:style/Theme.Holo.Light"
-            >
-            <intent-filter>
-                <action
-                    android:name="com.android.email.activity.setup.ACCOUNT_MANAGER_ENTRY" />
-                <category
-                    android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.EDIT" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <data
-                    android:scheme="content"
-                    android:host="ui.email.android.com"
-                    android:path="/settings"
-                    />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-        <activity
-            android:name=".activity.setup.AccountSecurity"
-            android.label="@string/account_security_title"
-            >
-        </activity>
-
-        <!-- Don't need to set the title; it will be set programatically -->
-        <activity
-            android:name=".activity.ShortcutPicker"
-            android:enabled="false"
-            android:theme="@android:style/Theme.Holo.Light.DialogWhenLarge"
-            >
-            <intent-filter
-                android:label="@string/account_shortcut_picker_name">
-                <action
-                    android:name="android.intent.action.CREATE_SHORTCUT" />
-                <category
-                    android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-        <activity
-            android:name=".activity.EmailActivity"
-            android:uiOptions="splitActionBarWhenNarrow"
-            >
-        </activity>
-        <activity
-            android:name=".activity.MessageFileView"
-            >
-            <intent-filter
-                android:label="@string/app_name">
-                <action
-                    android:name="android.intent.action.VIEW" />
-                <data
-                    android:mimeType="application/eml" />
-                <data
-                    android:mimeType="message/rfc822" />
-                <category
-                    android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-        <activity
-            android:name=".activity.MessageCompose"
-            android:label="@string/compose_title"
-            android:enabled="false"
+            android:name="com.android.mail.compose.ComposeActivity"
+            android:label="@string/app_name"
             android:theme="@android:style/Theme.Holo.Light"
             >
             <intent-filter>
@@ -263,16 +110,162 @@
                 <action
                     android:name="com.android.email.intent.action.REPLY" />
             </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.SEND" />
+                <category
+                    android:name="android.intent.category.DEFAULT" />
+                <data
+                    android:scheme="content"
+                    android:host="ui.email2.android.com"
+                    android:pathPrefix="/compose"
+                    />
+            </intent-filter>
         </activity>
 
-        <!-- Only used to support pre-HC shortcuts -->
         <activity
-            android:name=".activity.MessageList"
+            android:name=".activity.EventViewer"
+            android:label="@string/app_name"
+            android:theme="@android:style/Theme.Holo.Light"
             >
             <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.intent.action.VIEW" />
+                <category
+                    android:name="android.intent.category.DEFAULT" />
+                <data
+                    android:scheme="content"
+                    android:host="ui.email2.android.com"
+                    android:pathPrefix="/event"
+                    />
             </intent-filter>
         </activity>
+            
+        <!-- TODO: this activity doesn't exist.  Determine what to do here -->
+        <activity android:name=".ui.CreateShortcutActivity"
+            android:label="@string/activity_folder_selection" />
+
+        <activity android:name="com.android.mail.ui.FolderSelectionActivity"
+            android:label="@string/activity_folder_selection" />
+
+        <activity android:name="com.android.email2.ui.MailboxSelectionActivityEmail"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name="com.android.mail.ui.ShortcutNameActivity"
+            android:label="@string/shortcut_name_title"
+            android:theme="@style/ShortcutWidgetTheme">
+        </activity>
+
+        <activity android:name="com.android.mail.ui.MailboxSelectionActivity"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name="com.android.email2.ui.CreateShortcutActivityEmail"
+            android:theme="@style/ShortcutWidgetTheme"
+            android:label="@string/activity_folder_selection">
+
+            <intent-filter>
+                <action android:name="android.intent.action.CREATE_SHORTCUT" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+        </activity>
+
+        <activity
+            android:label="@string/app_name"
+            android:name="com.android.email2.ui.MailActivityEmail"
+            android:uiOptions="splitActionBarWhenNarrow">
+            <intent-filter >
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="content"/>
+                <data android:mimeType="application/email-ls" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.SEARCH" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
+        </activity>
+
+        <!-- Must be exported in order for the AccountManager to launch it -->
+        <!-- Also available for continuous test systems to force account creation -->
+        <activity
+            android:name=".activity.setup.AccountSetupBasics"
+            android:label="@string/account_setup_basics_title"
+            android:exported="true"
+            >
+            <intent-filter>
+                <action
+                    android:name="com.android.email.CREATE_ACCOUNT" />
+                <category
+                    android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".activity.setup.AccountSetupType"
+            android:label="@string/account_setup_account_type_title"
+            >
+        </activity>
+        <activity
+            android:name=".activity.setup.AccountSetupIncoming"
+            android:label="@string/account_setup_incoming_title"
+            >
+        </activity>
+        <activity
+            android:name=".activity.setup.AccountSetupOutgoing"
+            android:label="@string/account_setup_outgoing_title"
+            >
+        </activity>
+        <activity
+            android:name=".activity.setup.AccountSetupOptions"
+            android:label="@string/account_setup_options_title"
+            >
+        </activity>
+        <activity
+            android:name=".activity.setup.AccountSetupNames"
+            android:label="@string/account_setup_names_title"
+            >
+        </activity>
+        <activity
+            android:name=".activity.setup.AccountSettings"
+            android:label="@string/settings_activity_title"
+            android:theme="@android:style/Theme.Holo.Light"
+            >
+            <intent-filter>
+                <action
+                    android:name="com.android.email.activity.setup.ACCOUNT_MANAGER_ENTRY" />
+                <category
+                    android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.EDIT" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data
+                    android:scheme="content"
+                    android:host="ui.email.android.com"
+                    android:pathPrefix="/settings"
+                    />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".activity.setup.AccountSecurity"
+            android.label="@string/account_security_title"
+            >
+        </activity>
 
         <activity
             android:name=".activity.setup.MailboxSettings"
@@ -280,6 +273,60 @@
             >
         </activity>
 
+        <activity
+            android:name="com.android.mail.photo.MailPhotoViewActivity"
+            android:label="@string/app_name"
+            android:theme="@style/PhotoViewTheme" >
+        </activity>
+
+        <provider
+            android:authorities="com.android.email2.conversation.provider"
+            android:label="@string/conversation_content_provider"
+            android:multiprocess="false"
+            android:name="com.android.mail.browse.EmailConversationProvider" >
+            <grant-uri-permission android:pathPattern=".*" />
+        </provider>
+
+        <provider
+            android:authorities="com.android.email2.accountcache"
+            android:label="@string/account_cache_provider"
+            android:multiprocess="false"
+            android:name="com.android.mail.providers.EmailAccountCacheProvider" >
+            <grant-uri-permission android:pathPattern=".*" />
+        </provider>
+
+        <!-- The android:name is the name of the Provider class which is stored in
+          UnifiedEmail, and has package name com.android.mail.providers and the class is
+          called SuggestionsProvider. The authority name is specified in the MailAppProvider
+          which is specific to the two apps separately. -->
+        <provider android:name="com.android.mail.providers.SuggestionsProvider"
+            android:authorities="com.android.email.suggestionsprovider" />
+
+        <receiver android:name="com.android.mail.providers.protos.boot.AccountReceiver">
+          <intent-filter>
+              <action android:name="com.android.email2.providers.protos.boot.intent.ACTION_PROVIDER_CREATED" />
+          </intent-filter>
+        </receiver>
+
+        <service android:name="com.android.mail.compose.EmptyService"/>
+        <!-- Widget -->
+        <receiver android:name="com.android.mail.widget.WidgetProvider" android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.android.mail.ACTION_NOTIFY_DATASET_CHANGED" />
+                <data android:mimeType="application/email-ls" />
+            </intent-filter>
+            <meta-data android:name="android.appwidget.provider"
+                       android:resource="@xml/widget_info" />
+        </receiver>
+        <service android:name="com.android.mail.widget.WidgetService"
+                 android:permission="android.permission.BIND_REMOTEVIEWS"
+                 android:exported="false" />
+
+        <!-- From Email application -->
+
         <receiver
             android:name=".service.AttachmentDownloadService$Watchdog"
             android:enabled="true"/>
@@ -288,14 +335,16 @@
             android:name=".service.EmailBroadcastReceiver"
             android:enabled="true">
             <intent-filter>
-                <action
-                    android:name="android.intent.action.BOOT_COMPLETED" />
-                <action
-                    android:name="android.intent.action.DEVICE_STORAGE_LOW" />
-                <action
-                    android:name="android.intent.action.DEVICE_STORAGE_OK" />
-                <action
-                    android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+                <action android:name="android.intent.action.DEVICE_STORAGE_LOW" />
+                <action android:name="android.intent.action.DEVICE_STORAGE_OK" />
+                <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
+            </intent-filter>
+            <!-- To handle new message notifications -->
+            <intent-filter>
+                <action android:name="com.android.mail.action.update_notification"
+                        android:priority="-10" />
+                <data android:mimeType="application/email-ls" />
             </intent-filter>
             <!-- To handle secret code to activate the debug screen. -->
             <intent-filter>
@@ -327,12 +376,6 @@
 
         <service
             android:name=".service.MailService"
-            android:enabled="false"
-            >
-        </service>
-
-        <service
-            android:name=".Controller$ControllerService"
             android:enabled="true"
             >
         </service>
@@ -394,6 +437,28 @@
             </intent-filter>
         </service>
 
+        <service
+            android:name=".service.ImapService"
+            android:enabled="true"
+            android:permission="com.android.email.permission.ACCESS_PROVIDER"
+            >
+            <intent-filter>
+                <action
+                    android:name="com.android.email.IMAP_INTENT" />
+            </intent-filter>
+        </service>
+
+        <service
+            android:name=".service.Pop3Service"
+            android:enabled="true"
+            android:permission="com.android.email.permission.ACCESS_PROVIDER"
+            >
+            <intent-filter>
+                <action
+                    android:name="com.android.email.POP3_INTENT" />
+            </intent-filter>
+        </service>
+
         <!--Required stanza to register the EasAuthenticatorService with AccountManager -->
         <service
             android:name=".service.EasAuthenticatorService"
@@ -461,37 +526,5 @@
             android:label="@string/app_name"
             />
 
-        <!-- Email AppWidget definitions -->
-        <activity
-            android:name=".widget.WidgetConfiguration"
-            android:enabled="false"
-            android:theme="@android:style/Theme.Holo.Light.DialogWhenLarge"
-            >
-            <intent-filter
-                android:label="@string/account_shortcut_picker_name">
-                <action
-                    android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
-                <category
-                    android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-        <service
-            android:name=".provider.WidgetProvider$WidgetService"
-            android:permission="android.permission.BIND_REMOTEVIEWS"
-            android:exported="false"
-            />
-        <receiver
-            android:name=".provider.WidgetProvider" >
-            <intent-filter>
-                <action
-                    android:name="android.appwidget.action.APPWIDGET_UPDATE" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="com.android.email.MESSAGE_LIST_DATASET_CHANGED" />
-            </intent-filter>
-            <meta-data
-                android:name="android.appwidget.provider"
-                android:resource="@xml/widget_info" />
-        </receiver>
     </application>
 </manifest>