1 | // Copyright 2013 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. |
4 | |
5 | package org.chromium.chrome.browser.sync; |
6 | |
7 | import android.accounts.Account; |
8 | import android.app.Application; |
9 | import android.content.Context; |
10 | import android.content.SyncResult; |
11 | import android.os.Bundle; |
12 | import android.test.suitebuilder.annotation.MediumTest; |
13 | |
14 | import org.chromium.base.test.util.Feature; |
15 | import org.chromium.chrome.testshell.ChromiumTestShellTestBase; |
16 | import org.chromium.sync.notifier.SyncStatusHelper; |
17 | import org.chromium.sync.signin.AccountManagerHelper; |
18 | |
19 | public class ChromiumSyncAdapterTest extends ChromiumTestShellTestBase { |
20 | |
21 | private static final Account TEST_ACCOUNT = |
22 | AccountManagerHelper.createAccountFromName("test@gmail.com"); |
23 | |
24 | private TestChromiumSyncAdapter mSyncAdapter; |
25 | |
26 | private static class TestChromiumSyncAdapter extends ChromiumSyncAdapter { |
27 | private boolean mCommandlineInitialized; |
28 | private boolean mSyncRequested; |
29 | private boolean mSyncRequestedForAllTypes; |
30 | private String mObjectId; |
31 | private long mVersion; |
32 | private String mPayload; |
33 | |
34 | public TestChromiumSyncAdapter(Context context, Application application) { |
35 | super(context, application); |
36 | } |
37 | |
38 | @Override |
39 | protected boolean useAsyncStartup() { |
40 | return true; |
41 | } |
42 | |
43 | @Override |
44 | protected void initCommandLine() { |
45 | mCommandlineInitialized = true; |
46 | } |
47 | |
48 | @Override |
49 | public void requestSync( String objectId, long version, String payload) { |
50 | mObjectId = objectId; |
51 | mVersion = version; |
52 | mPayload = payload; |
53 | mSyncRequested = true; |
54 | } |
55 | |
56 | @Override |
57 | public void requestSyncForAllTypes() { |
58 | mSyncRequestedForAllTypes = true; |
59 | } |
60 | } |
61 | |
62 | @Override |
63 | protected void setUp() throws Exception { |
64 | super.setUp(); |
65 | launchChromiumTestShellWithBlankPage(); |
66 | mSyncAdapter = new TestChromiumSyncAdapter(getInstrumentation().getTargetContext(), |
67 | getActivity().getApplication()); |
68 | } |
69 | |
70 | @MediumTest |
71 | @Feature({"Sync"}) |
72 | public void testRequestSyncNoInvalidationData() { |
73 | SyncResult syncResult = new SyncResult(); |
74 | mSyncAdapter.onPerformSync(TEST_ACCOUNT, new Bundle(), |
75 | SyncStatusHelper.get(getActivity()).getContractAuthority(), null, syncResult); |
76 | assertTrue(mSyncAdapter.mSyncRequestedForAllTypes); |
77 | assertFalse(mSyncAdapter.mSyncRequested); |
78 | assertTrue(mSyncAdapter.mCommandlineInitialized); |
79 | } |
80 | |
81 | @MediumTest |
82 | @Feature({"Sync"}) |
83 | public void testRequestSyncSpecificDataType() { |
84 | SyncResult syncResult = new SyncResult(); |
85 | Bundle extras = new Bundle(); |
86 | extras.putString(ChromiumSyncAdapter.INVALIDATION_OBJECT_ID_KEY, "objectid_value"); |
87 | extras.putLong(ChromiumSyncAdapter.INVALIDATION_VERSION_KEY, 42); |
88 | extras.putString(ChromiumSyncAdapter.INVALIDATION_PAYLOAD_KEY, "payload_value"); |
89 | mSyncAdapter.onPerformSync(TEST_ACCOUNT, extras, |
90 | SyncStatusHelper.get(getActivity()).getContractAuthority(), null, syncResult); |
91 | assertFalse(mSyncAdapter.mSyncRequestedForAllTypes); |
92 | assertTrue(mSyncAdapter.mSyncRequested); |
93 | assertEquals("objectid_value", mSyncAdapter.mObjectId); |
94 | assertEquals(42, mSyncAdapter.mVersion); |
95 | assertEquals("payload_value", mSyncAdapter.mPayload); |
96 | assertTrue(mSyncAdapter.mCommandlineInitialized); |
97 | } |
98 | |
99 | @MediumTest |
100 | @Feature({"Sync"}) |
101 | public void testRequestSyncWhenChromeInBackground() throws InterruptedException { |
102 | DelayedSyncControllerTest.sendChromeToBackground(getActivity()); |
103 | SyncResult syncResult = new SyncResult(); |
104 | mSyncAdapter.onPerformSync(TEST_ACCOUNT, new Bundle(), |
105 | SyncStatusHelper.get(getActivity()).getContractAuthority(), null, syncResult); |
106 | assertFalse(mSyncAdapter.mSyncRequestedForAllTypes); |
107 | assertFalse(mSyncAdapter.mSyncRequested); |
108 | assertFalse(mSyncAdapter.mCommandlineInitialized); |
109 | } |
110 | } |