182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook/** 282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * Copyright (c) 2011, Google Inc. 382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * 482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * Licensed under the Apache License, Version 2.0 (the "License"); 582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * you may not use this file except in compliance with the License. 682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * You may obtain a copy of the License at 782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * 882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * http://www.apache.org/licenses/LICENSE-2.0 982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * 1082ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * Unless required by applicable law or agreed to in writing, software 1182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * distributed under the License is distributed on an "AS IS" BASIS, 1282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * See the License for the specific language governing permissions and 1482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook * limitations under the License. 1582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook */ 1682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 1730e2c24b056542f3b1b438aeb798305d1226d0c8Andy Huangpackage com.android.mail.providers.protos.mock; 1882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 1982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport android.content.ContentProvider; 2082ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport android.content.ContentValues; 2182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport android.database.Cursor; 2282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport android.database.MatrixCursor; 2382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport android.net.Uri; 2482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport android.provider.BaseColumns; 2546ce0b13c33d1ade0e4537e780b41fea5e2a6be9Mindy Pereiraimport android.text.Html; 2682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 27571de2212f311cc4a514ffa74e7585a2df1fb907Mindy Pereiraimport com.android.mail.providers.ConversationInfo; 28cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereiraimport com.android.mail.providers.Folder; 29b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedyimport com.android.mail.providers.FolderList; 303b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieuximport com.android.mail.providers.ParticipantInfo; 3192551d057965689f1952faeb06763f0762bc717fMindy Pereiraimport com.android.mail.providers.ReplyFromAccount; 32f323c046034b4658a80438575d8e9f01d92e57e6Alice Yangimport com.android.mail.providers.Settings; 339ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.android.mail.providers.UIProvider.AccountCapabilities; 349ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.android.mail.providers.UIProvider.AccountColumns; 35b1f573c59ec20f9149443e1e0cc8b64ff3a07feaPaul Westbrookimport com.android.mail.providers.UIProvider.AccountColumns.SettingsColumns; 369ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.android.mail.providers.UIProvider.AttachmentColumns; 379ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.android.mail.providers.UIProvider.ConversationColumns; 38db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrookimport com.android.mail.providers.UIProvider.ConversationCursorCommand; 399ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.android.mail.providers.UIProvider.FolderCapabilities; 409ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.android.mail.providers.UIProvider.FolderColumns; 419ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.android.mail.providers.UIProvider.MessageColumns; 42aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrookimport com.google.common.annotations.VisibleForTesting; 4382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport com.google.common.collect.ImmutableList; 449ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.google.common.collect.Lists; 459ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blankimport com.google.common.collect.Maps; 4682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 4792551d057965689f1952faeb06763f0762bc717fMindy Pereiraimport org.json.JSONArray; 4892551d057965689f1952faeb06763f0762bc717fMindy Pereira 4992551d057965689f1952faeb06763f0762bc717fMindy Pereiraimport java.util.ArrayList; 5027a0cf01582a7a1902a300ff32dd0d60f8f544f0Mindy Pereiraimport java.util.Date; 5182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport java.util.List; 5282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport java.util.Map; 5382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookimport java.util.Set; 5482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 5582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrookpublic final class MockUiProvider extends ContentProvider { 5682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 5782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook public static final String AUTHORITY = "com.android.mail.mockprovider"; 5882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 596d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static final int NUM_ACCOUNTS = 5; 606d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 6182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 6272a9d380a0effb191c4ef8e32899ea62ebf52f55Paul Westbrook private static final Uri MOCK_ACCOUNTS_URI = Uri.parse("content://" + AUTHORITY + "/accounts"); 6372a9d380a0effb191c4ef8e32899ea62ebf52f55Paul Westbrook 6482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook // A map of query result for uris 65db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook // TODO(pwestbro) read this map from an external file 6677177b171c483d485bdbff0178564394e8f57d0fPaul Westbrook private static Map<String, List<Map<String, Object>>> MOCK_QUERY_RESULTS = Maps.newHashMap(); 6782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 686d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static void initializeAccount(int accountId, 696d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook Map<String, List<Map<String, Object>>> resultMap) { 706d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> inboxfolderDetailsMap = 716d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createFolderDetailsMap(0, accountId, "zero", true, 0, 2); 726d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(inboxfolderDetailsMap.get(FolderColumns.URI).toString(), 736d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook ImmutableList.of(inboxfolderDetailsMap)); 746d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 756d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> accountDetailsMap = createAccountDetailsMap(accountId, 766d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook (String)inboxfolderDetailsMap.get(FolderColumns.URI)); 776d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(((Uri) accountDetailsMap.get(AccountColumns.URI)).toString(), 786d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook ImmutableList.of(accountDetailsMap)); 796d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 806d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> secondFolderDetailsMap = 816d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createFolderDetailsMap(2, accountId, "two", 2, 2); 826d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(secondFolderDetailsMap.get(FolderColumns.URI).toString(), 836d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook ImmutableList.of(secondFolderDetailsMap)); 846d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 856d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put( 866d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook inboxfolderDetailsMap.get(FolderColumns.CHILD_FOLDERS_LIST_URI).toString(), 876d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook ImmutableList.of(createFolderDetailsMap(10, accountId, "zeroChild0", 0, 0), 886d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createFolderDetailsMap(11, accountId, "zeroChild1", 0, 0))); 896d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 906d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final ArrayList<Map<String, Object>> conversations = new ArrayList<Map<String, Object>>(); 9119a95a9366d50e8e21a9e786305ad216a2349675mindyp for (int i = 0; i < 100; i++) { 926d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final String name = "zeroConv"+i; 936d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook conversations.add(createConversationDetailsMap(accountId, name.hashCode(), 946d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook name, 1, 5, i % 2)); 9519a95a9366d50e8e21a9e786305ad216a2349675mindyp } 966d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(inboxfolderDetailsMap.get(FolderColumns.CONVERSATION_LIST_URI).toString(), 9719a95a9366d50e8e21a9e786305ad216a2349675mindyp conversations); 98a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira 996d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> message0 = 1006d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createMessageDetailsMap(accountId, "zeroConv0".hashCode(), "zeroConv0", 1, false); 1016d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(message0.get(MessageColumns.URI).toString(), ImmutableList.of(message0)); 1026d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(conversations.get(0).get(ConversationColumns.MESSAGE_LIST_URI).toString(), 103a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira ImmutableList.of(message0)); 1046d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(message0.get(MessageColumns.ATTACHMENT_LIST_URI).toString(), 105f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira ImmutableList.of(createAttachmentDetailsMap(0, "zero"))); 1066d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> message1 = 1076d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createMessageDetailsMap(accountId, "zeroConv1".hashCode(), "zeroConv1", 1, false); 1086d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(message1.get(MessageColumns.URI).toString(), ImmutableList.of(message1)); 1096d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> message1a = 1106d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createMessageDetailsMap(accountId, "zeroConv1a".hashCode(), "zeroConv1a", 2, false); 1116d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(message1a.get(MessageColumns.URI).toString(), ImmutableList.of(message1a)); 1126d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(conversations.get(1).get(ConversationColumns.MESSAGE_LIST_URI).toString(), 1136349a043bce28ec999d72635222ae0eb576eb9cdMindy Pereira ImmutableList.of(message1, message1a)); 1146d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(message1.get(MessageColumns.ATTACHMENT_LIST_URI).toString(), 115f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira ImmutableList.of(createAttachmentDetailsMap(1, "one"))); 116a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira 1176d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> folderDetailsMap1 = 1186d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createFolderDetailsMap(1, accountId, "one", 0, 0); 1196d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(folderDetailsMap1.get(FolderColumns.URI).toString(), 1206349a043bce28ec999d72635222ae0eb576eb9cdMindy Pereira ImmutableList.of(folderDetailsMap1)); 1216d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 1226d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook // We currently have two configurations for accounts 1236d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook if (accountId % 2 == 0) { 1246d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(accountDetailsMap.get(AccountColumns.FOLDER_LIST_URI).toString(), 1256d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook ImmutableList.of(inboxfolderDetailsMap, folderDetailsMap1)); 1266d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook } else { 1276d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(secondFolderDetailsMap.get(FolderColumns.URI).toString(), 1286d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook ImmutableList.of(secondFolderDetailsMap)); 1296d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> folderDetailsMap3 = 1306d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createFolderDetailsMap(3, accountId, "three", 0, 0); 1316d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(folderDetailsMap3.get(FolderColumns.URI).toString(), 1326d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook ImmutableList.of(folderDetailsMap3)); 1336d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 1346d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(accountDetailsMap.get(AccountColumns.FOLDER_LIST_URI).toString(), 1356d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook ImmutableList.of(secondFolderDetailsMap, folderDetailsMap3)); 1366d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook } 1376d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 1386d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> conv3 = 1396d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createConversationDetailsMap(accountId, "zeroConv3".hashCode(), "zeroConv3", 1406d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 0, 1, 0); 1416d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(conv3.get(ConversationColumns.URI).toString(), 1423263fa9bc22e6c99543bce1dc07310e964cd2a57Mindy Pereira ImmutableList.of(conv3)); 1436d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> conv4 = 1446d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createConversationDetailsMap(accountId, "zeroConv4".hashCode(), "zeroConv4", 1456d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 0, 1, 0); 1466d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(conv4.get(ConversationColumns.URI).toString(), 14758ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira ImmutableList.of(conv4)); 1486d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(secondFolderDetailsMap.get(FolderColumns.CONVERSATION_LIST_URI).toString(), 14958ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira ImmutableList.of(conv3, conv4)); 15078c623edaefb8969f31df7251f0ff0335e041f3bMindy Pereira 1516d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> message2 = 1526d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createMessageDetailsMap(accountId, "zeroConv3".hashCode(), "zeroConv3", 0, true); 1536d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(message2.get(MessageColumns.URI).toString(), ImmutableList.of(message2)); 1546d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(conv3.get(ConversationColumns.MESSAGE_LIST_URI).toString(), 15578c623edaefb8969f31df7251f0ff0335e041f3bMindy Pereira ImmutableList.of(message2)); 1566d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final Map<String, Object> message3 = 1576d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook createMessageDetailsMap(accountId, "zeroConv4".hashCode(), "zeroConv4", 0, true); 1586d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(message3.get(MessageColumns.URI).toString(), ImmutableList.of(message3)); 1596d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(conv4.get(ConversationColumns.MESSAGE_LIST_URI).toString(), 16078c623edaefb8969f31df7251f0ff0335e041f3bMindy Pereira ImmutableList.of(message3)); 16178c623edaefb8969f31df7251f0ff0335e041f3bMindy Pereira 1626d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook // Add the account to the list of accounts 1636d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook List<Map<String, Object>> accountList = resultMap.get(getAccountsUri().toString()); 1646d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook if (accountList == null) { 1656d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook accountList = Lists.newArrayList(); 1666d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook resultMap.put(getAccountsUri().toString(), accountList); 1676d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook } 1686d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook accountList.add(accountDetailsMap); 1696d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook } 1706d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 1716d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook public static void initializeMockProvider() { 1726d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook MOCK_QUERY_RESULTS = Maps.newHashMap(); 1736d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 1746d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook for (int accountId = 0; accountId < NUM_ACCOUNTS; accountId++) { 1756d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook initializeAccount(accountId, MOCK_QUERY_RESULTS); 1766d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook } 17782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 17882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 1796d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static Map<String, Object> createConversationDetailsMap(int accountId, 1806d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook int conversationId, String subject, int hasAttachments, int messageCount, 1816d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook int draftCount) { 1826d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final String conversationUri = getMockConversationUri(accountId, conversationId); 183a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira Map<String, Object> conversationMap = Maps.newHashMap(); 184a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira conversationMap.put(BaseColumns._ID, Long.valueOf(conversationId)); 1856349a043bce28ec999d72635222ae0eb576eb9cdMindy Pereira conversationMap.put(ConversationColumns.URI, conversationUri); 186a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira conversationMap.put(ConversationColumns.MESSAGE_LIST_URI, conversationUri + "/getMessages"); 187fa7ef6e5023ed9bc1f2d9f3eea427afe5b78eb2aMindy Pereira conversationMap.put(ConversationColumns.SUBJECT, "Conversation " + subject); 18827a0cf01582a7a1902a300ff32dd0d60f8f544f0Mindy Pereira conversationMap.put(ConversationColumns.SNIPPET, "snippet"); 1894db59c58c0af9f44d95a12dbe21322bed58cc518Mindy Pereira conversationMap.put(ConversationColumns.SENDER_INFO, 190259e52238941db08b518154215c579fd2f57ea86Mindy Pereira "account1@mock.com, account2@mock.com"); 19127a0cf01582a7a1902a300ff32dd0d60f8f544f0Mindy Pereira conversationMap.put(ConversationColumns.DATE_RECEIVED_MS, new Date().getTime()); 192fa7ef6e5023ed9bc1f2d9f3eea427afe5b78eb2aMindy Pereira conversationMap.put(ConversationColumns.HAS_ATTACHMENTS, hasAttachments); 1934db59c58c0af9f44d95a12dbe21322bed58cc518Mindy Pereira conversationMap.put(ConversationColumns.NUM_MESSAGES, 1); 1944db59c58c0af9f44d95a12dbe21322bed58cc518Mindy Pereira conversationMap.put(ConversationColumns.NUM_DRAFTS, 1); 1954db59c58c0af9f44d95a12dbe21322bed58cc518Mindy Pereira conversationMap.put(ConversationColumns.SENDING_STATE, 1); 196c8a994227b9c686d88ee05840544162711a85712Marc Blank conversationMap.put(ConversationColumns.READ, 0); 197d5edd2d02649dffb40065fdb6a16acf91552b800Scott Kennedy conversationMap.put(ConversationColumns.SEEN, 0); 198c8a994227b9c686d88ee05840544162711a85712Marc Blank conversationMap.put(ConversationColumns.STARRED, 0); 19958ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira conversationMap.put(ConversationColumns.CONVERSATION_INFO, 20058ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira generateConversationInfo(messageCount, draftCount)); 201b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy final List<Folder> folders = new ArrayList<Folder>(3); 202b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy for (int i = 0; i < 3; i++) { 203b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy final Folder folder = Folder.newUnsafeInstance(); 204b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy folder.name = "folder" + i; 205cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira switch (i) { 206cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira case 0: 207b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy folder.bgColor = "#fff000"; 208cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira break; 209cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira case 1: 210b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy folder.bgColor = "#0000FF"; 211cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira break; 212cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira case 2: 213b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy folder.bgColor = "#FFFF00"; 214cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira break; 215cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira default: 216b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy folder.bgColor = null; 217cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira break; 218cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira } 219cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira 220b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy folders.add(folder); 221cc8211df898ba9dac17a766b89f28d6e6f0afef0Mindy Pereira } 222b10212ef23a4e2317fc43c62dff9ad177b5bcf2cScott Kennedy final FolderList folderList = FolderList.copyOf(folders); 223db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook conversationMap.put( 224db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook MockRespondMatrixCursor.MOCK_RESPOND_PREFIX + 225db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook ConversationCursorCommand.COMMAND_GET_RAW_FOLDERS, folderList); 226a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira return conversationMap; 227a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira } 228a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira 229351ad4e87e0b0b98df9ca88266a8a63541dc5a81Andy Huang private static byte[] generateConversationInfo(int messageCount, int draftCount) { 23058ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira ConversationInfo info = new ConversationInfo(messageCount, draftCount, "first", 231c3efca18f09904f4ce39395169559c5d82bd3d06Mindy Pereira "firstUnread", "last"); 23258ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira for (int i = 0; i < messageCount; i++) { 23358ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira if (i % 2 == 0) { 2343b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux info.addParticipant(new ParticipantInfo(i + "Test", "testsender@test.com", -1, 2353b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux false)); 23658ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira } else if (i % 3 == 0) { 2373b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux info.addParticipant(new ParticipantInfo(i + "sender@test.com", "sender@test.com", 2383b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux -1, false)); 23958ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira } else { 2403b59b333ad0693f74f9a8cfb24a468a8acbaca8cJames Lemieux info.addParticipant(new ParticipantInfo(" .. ", null, -1, false)); 24158ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira } 24258ef69ad99623fd8795a95227aa718d3d6177c5aMindy Pereira } 243351ad4e87e0b0b98df9ca88266a8a63541dc5a81Andy Huang return info.toBlob(); 244571de2212f311cc4a514ffa74e7585a2df1fb907Mindy Pereira } 245571de2212f311cc4a514ffa74e7585a2df1fb907Mindy Pereira 2466d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static Map<String, Object> createMessageDetailsMap(int accountId, int messageId, 2476d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook String subject, int hasAttachments, boolean addReplyTo) { 2486d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final String accountUri = getMockAccountUri(accountId); 2496d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final String messageUri = getMockMessageUri(accountId, messageId); 250a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira Map<String, Object> messageMap = Maps.newHashMap(); 251a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira messageMap.put(BaseColumns._ID, Long.valueOf(messageId)); 2526349a043bce28ec999d72635222ae0eb576eb9cdMindy Pereira messageMap.put(MessageColumns.URI, messageUri); 253a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira messageMap.put(MessageColumns.SUBJECT, "Message " + subject); 2546349a043bce28ec999d72635222ae0eb576eb9cdMindy Pereira messageMap.put(MessageColumns.SNIPPET, "SNIPPET"); 25546ce0b13c33d1ade0e4537e780b41fea5e2a6be9Mindy Pereira String html = "<html><body><b><i>This is some html!!!</i></b></body></html>"; 25646ce0b13c33d1ade0e4537e780b41fea5e2a6be9Mindy Pereira messageMap.put(MessageColumns.BODY_HTML, html); 25746ce0b13c33d1ade0e4537e780b41fea5e2a6be9Mindy Pereira messageMap.put(MessageColumns.BODY_TEXT, Html.fromHtml(html)); 258fa7ef6e5023ed9bc1f2d9f3eea427afe5b78eb2aMindy Pereira messageMap.put(MessageColumns.HAS_ATTACHMENTS, hasAttachments); 259732600e38891db139bae02dc91dd0c5b0987e8e9Andy Huang messageMap.put(MessageColumns.DATE_RECEIVED_MS, new Date().getTime()); 260f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira messageMap.put(MessageColumns.ATTACHMENT_LIST_URI, messageUri + "/getAttachments"); 2614a27ea93a9eb05558f97a05a5342afb10f3d92ddMindy Pereira messageMap.put(MessageColumns.TO, "account1@mock.com, account2@mock.com"); 262a26b54e3a858de409be3746e65591bb8a0d6ea9aMindy Pereira messageMap.put(MessageColumns.FROM, "fromaccount1@mock.com"); 2636d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook messageMap.put(MessageColumns.MESSAGE_ACCOUNT_URI, accountUri); 264a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira return messageMap; 265a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira } 266a1406077e7bfecd81c4c2bed0d21dedef3b6e168Mindy Pereira 267f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira private static Map<String, Object> createAttachmentDetailsMap(int attachmentId, String name) { 268f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira Map<String, Object> attachmentMap = Maps.newHashMap(); 269f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira attachmentMap.put(BaseColumns._ID, Long.valueOf(attachmentId)); 270f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira attachmentMap.put(AttachmentColumns.NAME, "Attachment " + name); 2717a07fb4955e34250225287212b07d1b6f12bf671Mindy Pereira attachmentMap.put(AttachmentColumns.URI, 2727a07fb4955e34250225287212b07d1b6f12bf671Mindy Pereira "attachmentUri/" + attachmentMap.get(AttachmentColumns.NAME)); 273f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira return attachmentMap; 274f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira } 275f30cc097db54007eac8d722aadf290540a139b0eMindy Pereira 2766d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static Map<String, Object> createFolderDetailsMap(int folderId, int accountId, 2776d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook String name, int unread, int total) { 2786d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook return createFolderDetailsMap(folderId, accountId, name, false, unread, total); 279750cc737974ada080cafe6aa1bf496bc8b2e3063Mindy Pereira } 280750cc737974ada080cafe6aa1bf496bc8b2e3063Mindy Pereira 2816d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static Map<String, Object> createFolderDetailsMap(int folderId, int accountId, 2826d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook String name, boolean hasChildren, int unread, int total) { 2836d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook final String folderUri = getMockAccountFolderUri(accountId, folderId); 2846d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 2853a565bfee87ea7b56c02f66e8139a3b7a0fdf718Mindy Pereira Map<String, Object> folderMap = Maps.newHashMap(); 286bc2370402e8ed6862da46c2bc9b39be3d934952fTony Mantler folderMap.put(BaseColumns._ID, folderId); 2876349a043bce28ec999d72635222ae0eb576eb9cdMindy Pereira folderMap.put(FolderColumns.URI, folderUri); 2883a565bfee87ea7b56c02f66e8139a3b7a0fdf718Mindy Pereira folderMap.put(FolderColumns.NAME, "Folder " + name); 289bc2370402e8ed6862da46c2bc9b39be3d934952fTony Mantler folderMap.put(FolderColumns.HAS_CHILDREN, hasChildren ? 1 : 0); 2903a565bfee87ea7b56c02f66e8139a3b7a0fdf718Mindy Pereira folderMap.put(FolderColumns.CONVERSATION_LIST_URI, folderUri + "/getConversations"); 291750cc737974ada080cafe6aa1bf496bc8b2e3063Mindy Pereira folderMap.put(FolderColumns.CHILD_FOLDERS_LIST_URI, folderUri + "/getChildFolders"); 292bc2370402e8ed6862da46c2bc9b39be3d934952fTony Mantler folderMap.put(FolderColumns.CAPABILITIES, FolderCapabilities.CAN_ACCEPT_MOVED_MESSAGES); 29380445dec1014d21ffd61591caa7b99f29b2806b3Mindy Pereira folderMap.put(FolderColumns.UNREAD_COUNT, unread); 29480445dec1014d21ffd61591caa7b99f29b2806b3Mindy Pereira folderMap.put(FolderColumns.TOTAL_COUNT, total); 2959ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blank folderMap.put(FolderColumns.SYNC_STATUS, 0); 2969ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blank folderMap.put(FolderColumns.LAST_SYNC_RESULT, 0); 2973a565bfee87ea7b56c02f66e8139a3b7a0fdf718Mindy Pereira return folderMap; 2983a565bfee87ea7b56c02f66e8139a3b7a0fdf718Mindy Pereira } 2993a565bfee87ea7b56c02f66e8139a3b7a0fdf718Mindy Pereira 300aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook // Temporarily made this public to allow the Gmail accounts to use the mock ui provider uris 301db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook public static Map<String, Object> createAccountDetailsMap(int accountId,String defaultInbox) { 302aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook final String accountUri = getMockAccountUri(accountId); 30382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook Map<String, Object> accountMap = Maps.newHashMap(); 30482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook accountMap.put(BaseColumns._ID, Long.valueOf(accountId)); 3055fc441a23f8827bb562bd01e41a0bd19cf0e2baeMindy Pereira accountMap.put(AccountColumns.NAME, "account" + accountId + "@mockuiprovider.com"); 306db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.TYPE, "com.android.mail.providers.protos.mock"); 3073e16687b074895bc6cc63a1ed93abf7033586fd2Tony Mantler accountMap.put(AccountColumns.ACCOUNT_MANAGER_NAME, 3083e16687b074895bc6cc63a1ed93abf7033586fd2Tony Mantler "account" + accountId + "@mockuiprovider.com"); 309468671839fc23e268ca5801d40bd973ddd515522Ray Chen accountMap.put(AccountColumns.ACCOUNT_ID, 310468671839fc23e268ca5801d40bd973ddd515522Ray Chen "account" + accountId + "@mockuiprovider.com"); 31182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook accountMap.put(AccountColumns.PROVIDER_VERSION, Long.valueOf(1)); 312cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira accountMap.put(AccountColumns.URI, Uri.parse(accountUri)); 31382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook accountMap.put(AccountColumns.CAPABILITIES, 314db8f2f9ad5dcb1d52c399520129d89b1ca38f423Paul Westbrook Integer.valueOf( 31582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.SYNCABLE_FOLDERS | 31682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.REPORT_SPAM | 31782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.ARCHIVE | 31882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.MUTE | 31982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.SERVER_SEARCH | 32082ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.FOLDER_SERVER_SEARCH | 321ccf9a34bcdcfdb884799ea3f3ecbd425970f26fcJames Lemieux AccountCapabilities.SERVER_SANITIZED_HTML | 32282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.DRAFT_SYNCHRONIZATION | 32382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.MULTIPLE_FROM_ADDRESSES | 32482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.SMART_REPLY | 32582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook AccountCapabilities.LOCAL_SEARCH | 326d92e9f3d45cfedd3ebfedcf0805283007053e091Mindy Pereira AccountCapabilities.THREADED_CONVERSATIONS | 327d92e9f3d45cfedd3ebfedcf0805283007053e091Mindy Pereira AccountCapabilities.MULTIPLE_FOLDERS_PER_CONV)); 32892551d057965689f1952faeb06763f0762bc717fMindy Pereira JSONArray replyFroms = new JSONArray(); 32992551d057965689f1952faeb06763f0762bc717fMindy Pereira ArrayList<ReplyFromAccount> list = new ArrayList<ReplyFromAccount>(); 33092551d057965689f1952faeb06763f0762bc717fMindy Pereira list.add(new ReplyFromAccount(null, Uri.parse(accountUri), "customAddress1@custom.com", 331cd970ddaba4e212b668588db2104dc46ad3ad793Mindy Pereira "customAddress2@custom.com", "Custom1", false, true)); 33292551d057965689f1952faeb06763f0762bc717fMindy Pereira list.add(new ReplyFromAccount(null, Uri.parse(accountUri), "customAddress2@custom.com", 333cd970ddaba4e212b668588db2104dc46ad3ad793Mindy Pereira "customAddress2@custom.com", "Custom2", false, true)); 33492551d057965689f1952faeb06763f0762bc717fMindy Pereira for (ReplyFromAccount a : list) { 33592551d057965689f1952faeb06763f0762bc717fMindy Pereira replyFroms.put(a.serialize()); 33692551d057965689f1952faeb06763f0762bc717fMindy Pereira } 33792551d057965689f1952faeb06763f0762bc717fMindy Pereira accountMap.put(AccountColumns.ACCOUNT_FROM_ADDRESSES, replyFroms.toString()); 338cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira accountMap.put(AccountColumns.FOLDER_LIST_URI, Uri.parse(accountUri + "/folders")); 339db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.FULL_FOLDER_LIST_URI, Uri.parse(accountUri + "/folders")); 340009f1b55b555638fd7276f8b996243a5d4ba7681Tony Mantler accountMap.put(AccountColumns.ALL_FOLDER_LIST_URI, Uri.parse(accountUri + "/folders")); 341cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira accountMap.put(AccountColumns.SEARCH_URI, Uri.parse(accountUri + "/search")); 342cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira accountMap.put(AccountColumns.EXPUNGE_MESSAGE_URI, 343cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira Uri.parse(accountUri + "/expungeMessage")); 344cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira accountMap.put(AccountColumns.UNDO_URI, Uri.parse(accountUri + "/undo")); 345571de2212f311cc4a514ffa74e7585a2df1fb907Mindy Pereira accountMap.put(AccountColumns.SETTINGS_INTENT_URI, Uri.EMPTY); 346571de2212f311cc4a514ffa74e7585a2df1fb907Mindy Pereira accountMap.put(AccountColumns.HELP_INTENT_URI, Uri.EMPTY); 347db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.SEND_FEEDBACK_INTENT_URI, Uri.EMPTY); 348db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.REAUTHENTICATION_INTENT_URI, Uri.EMPTY); 3499ace18a77e1c61700291f6116bb8162c8fce1fadMarc Blank accountMap.put(AccountColumns.SYNC_STATUS, 0); 350cfb7f33ff8ef9dc60b9143af32de64c7a3d71f36Mindy Pereira accountMap.put(AccountColumns.COMPOSE_URI, Uri.parse(accountUri + "/compose")); 35127e85f244604c8de53b76b135e0dd6f2bf3cad96Vikram Aggarwal accountMap.put(AccountColumns.RECENT_FOLDER_LIST_URI, 35227e85f244604c8de53b76b135e0dd6f2bf3cad96Vikram Aggarwal Uri.parse(accountUri + "/recentFolderListUri")); 35392551d057965689f1952faeb06763f0762bc717fMindy Pereira accountMap.put(AccountColumns.MIME_TYPE, "account/mock"); 3541883b346928322a9f045bc5b7426ddcd6af9beb3Mindy Pereira accountMap.put(AccountColumns.COLOR, 0); 355571de2212f311cc4a514ffa74e7585a2df1fb907Mindy Pereira accountMap.put(AccountColumns.RECENT_FOLDER_LIST_URI, Uri.EMPTY); 356db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.DEFAULT_RECENT_FOLDER_LIST_URI, Uri.EMPTY); 357db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.MANUAL_SYNC_URI, Uri.EMPTY); 358db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.VIEW_INTENT_PROXY_URI, Uri.EMPTY); 359db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.ACCOUNT_COOKIE_QUERY_URI, Uri.EMPTY); 360db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.UPDATE_SETTINGS_URI, Uri.EMPTY); 361db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(AccountColumns.ENABLE_MESSAGE_TRANSFORMS, 1); 362db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook 363db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook 364db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook // Add settings columns 365db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.SIGNATURE, ""); 366db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.AUTO_ADVANCE, 1); 367db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.SNAP_HEADERS, 1); 368db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.REPLY_BEHAVIOR, 1); 369db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.CONV_LIST_ICON, 1); 370db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.CONFIRM_DELETE, 1); 371db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.CONFIRM_ARCHIVE, 1); 372db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.CONFIRM_SEND, 1); 373571de2212f311cc4a514ffa74e7585a2df1fb907Mindy Pereira accountMap.put(SettingsColumns.DEFAULT_INBOX, defaultInbox); 374db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.DEFAULT_INBOX_NAME, "Inbox"); 375db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.FORCE_REPLY_FROM_DEFAULT, 1); 376db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.MAX_ATTACHMENT_SIZE, 25 * 1024 * 1024); 377db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.SWIPE, 1); 37817646055214b9ab3abc2553379bf046ca3e53fb2Andrew Sapperstein accountMap.put(SettingsColumns.IMPORTANCE_MARKERS_ENABLED, 1); 37917646055214b9ab3abc2553379bf046ca3e53fb2Andrew Sapperstein accountMap.put(SettingsColumns.SHOW_CHEVRONS_ENABLED, 0); 380db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.SETUP_INTENT_URI, Uri.EMPTY); 381db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.CONVERSATION_VIEW_MODE, 1); 382db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.VEILED_ADDRESS_PATTERN, null); 383db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook accountMap.put(SettingsColumns.MOVE_TO_INBOX, Uri.EMPTY); 384f323c046034b4658a80438575d8e9f01d92e57e6Alice Yang accountMap.put(SettingsColumns.SHOW_IMAGES, Settings.ShowImages.ASK_FIRST); 38582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook return accountMap; 38682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 38782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 388aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook public static String getMockAccountUri(int accountId) { 389aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook return "content://" + AUTHORITY + "/account/" + accountId; 390aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook } 391aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook 3926d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static String getMockAccountFolderUri(int accountId, int folderId) { 3936d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook return getMockAccountUri(accountId) + "/folder/" + folderId; 3946d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook } 3956d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 3966d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static String getMockConversationUri(int accountId, int conversationId) { 3976d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook return getMockAccountUri(accountId) + "/conversation/" + conversationId; 3986d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook } 3996d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 4006d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook private static String getMockMessageUri(int accountId, int messageId) { 4016d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook return getMockAccountUri(accountId) + "/message/" + messageId; 4026d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook } 4036d2442ba4417717b2a19714b0ac28c7265872ba3Paul Westbrook 40482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook @Override 40582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook public boolean onCreate() { 40645402ff1f55eb83fc9add99f83649a259b5c51a2Paul Westbrook MockUiProvider.initializeMockProvider(); 40782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook return true; 40882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 40982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 41082ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook @Override 41182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, 41282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook String sortOrder) { 41382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 414db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook final List<Map<String, Object>> queryResults = MOCK_QUERY_RESULTS.get(url.toString()); 41582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 41682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook if (queryResults != null && queryResults.size() > 0) { 41782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook // Get the projection. If there are rows in the result set, pick the first item to 41882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook // generate the projection 41982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook // TODO (pwestbro): handle the case where we want to return an empty result.\ 4205de96f9ce56156e34f3ba1e19d75a188240eb174Mindy Pereira if (projection == null) { 4215de96f9ce56156e34f3ba1e19d75a188240eb174Mindy Pereira Set<String> keys = queryResults.get(0).keySet(); 4225de96f9ce56156e34f3ba1e19d75a188240eb174Mindy Pereira projection = keys.toArray(new String[keys.size()]); 4235de96f9ce56156e34f3ba1e19d75a188240eb174Mindy Pereira } 424db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook final MatrixCursor matrixCursor = 425db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook new MockRespondMatrixCursor(projection, queryResults.size(), queryResults); 42682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 42782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook for (Map<String, Object> queryResult : queryResults) { 42882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook MatrixCursor.RowBuilder rowBuilder = matrixCursor.newRow(); 42982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 430fa7ef6e5023ed9bc1f2d9f3eea427afe5b78eb2aMindy Pereira for (String key : projection) { 43182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook rowBuilder.add(queryResult.get(key)); 43282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 43382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 43482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook return matrixCursor; 43582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 43682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 43782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook return null; 43882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 43982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 44082ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook @Override 44182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook public Uri insert(Uri url, ContentValues values) { 44282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook return url; 44382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 44482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 44582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook @Override 44682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook public int update(Uri url, ContentValues values, String selection, 44782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook String[] selectionArgs) { 44882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook return 0; 44982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 45082ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 45182ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook @Override 45282ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook public int delete(Uri url, String selection, String[] selectionArgs) { 45382ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook return 0; 45482ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 45582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 45682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook @Override 45782ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook public String getType(Uri uri) { 45882ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook return null; 45982ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook } 46082ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 461aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook @VisibleForTesting 462aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook static Uri getAccountsUri() { 463db5356a92ebc593e9eb564aaadad8dac8cd83554Paul Westbrook return MOCK_ACCOUNTS_URI; 464aa3e7a53861d62b8ca3858c83d6cb07ae4617cf9Paul Westbrook } 46582ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook} 46682ea6da7fe2bbb76b2c2caf06a9d0ee07e456363Paul Westbrook 467