- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / android / javatests / src / org / chromium / chrome / browser / sync / ChromiumSyncAdapterTest.java
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 com.google.protos.ipc.invalidation.Types;
15
16 import org.chromium.base.test.util.Feature;
17 import org.chromium.chrome.testshell.ChromiumTestShellTestBase;
18 import org.chromium.sync.notifier.SyncStatusHelper;
19 import org.chromium.sync.signin.AccountManagerHelper;
20
21 public class ChromiumSyncAdapterTest extends ChromiumTestShellTestBase {
22
23     private static final Account TEST_ACCOUNT =
24             AccountManagerHelper.createAccountFromName("test@gmail.com");
25
26     private TestChromiumSyncAdapter mSyncAdapter;
27
28     private static class TestChromiumSyncAdapter extends ChromiumSyncAdapter {
29         private boolean mCommandlineInitialized;
30         private boolean mSyncRequested;
31         private boolean mSyncRequestedForAllTypes;
32         private int mObjectSource;
33         private String mObjectId;
34         private long mVersion;
35         private String mPayload;
36
37         public TestChromiumSyncAdapter(Context context, Application application) {
38             super(context, application);
39         }
40
41         @Override
42         protected boolean useAsyncStartup() {
43             return true;
44         }
45
46         @Override
47         protected void initCommandLine() {
48             mCommandlineInitialized = true;
49         }
50
51         @Override
52         public void requestSync(int objectSource, String objectId, long version, String payload) {
53             mObjectSource = objectSource;
54             mObjectId = objectId;
55             mVersion = version;
56             mPayload = payload;
57             mSyncRequested = true;
58         }
59
60         @Override
61         public void requestSyncForAllTypes() {
62             mSyncRequestedForAllTypes = true;
63         }
64     }
65
66     @Override
67     protected void setUp() throws Exception {
68         super.setUp();
69         launchChromiumTestShellWithBlankPage();
70         mSyncAdapter = new TestChromiumSyncAdapter(getInstrumentation().getTargetContext(),
71                 getActivity().getApplication());
72     }
73
74     @MediumTest
75     @Feature({"Sync"})
76     public void testRequestSyncNoInvalidationData() {
77         SyncResult syncResult = new SyncResult();
78         mSyncAdapter.onPerformSync(TEST_ACCOUNT, new Bundle(),
79                 SyncStatusHelper.get(getActivity()).getContractAuthority(), null, syncResult);
80         assertTrue(mSyncAdapter.mSyncRequestedForAllTypes);
81         assertFalse(mSyncAdapter.mSyncRequested);
82         assertTrue(mSyncAdapter.mCommandlineInitialized);
83     }
84
85     private void testRequestSyncSpecificDataType(boolean withObjectSource) {
86         SyncResult syncResult = new SyncResult();
87         Bundle extras = new Bundle();
88         if (withObjectSource) {
89             extras.putInt(ChromiumSyncAdapter.INVALIDATION_OBJECT_SOURCE_KEY, 61);
90         }
91         extras.putString(ChromiumSyncAdapter.INVALIDATION_OBJECT_ID_KEY, "objectid_value");
92         extras.putLong(ChromiumSyncAdapter.INVALIDATION_VERSION_KEY, 42);
93         extras.putString(ChromiumSyncAdapter.INVALIDATION_PAYLOAD_KEY, "payload_value");
94         mSyncAdapter.onPerformSync(TEST_ACCOUNT, extras,
95                 SyncStatusHelper.get(getActivity()).getContractAuthority(), null, syncResult);
96         assertFalse(mSyncAdapter.mSyncRequestedForAllTypes);
97         assertTrue(mSyncAdapter.mSyncRequested);
98         if (withObjectSource) {
99             assertEquals(61, mSyncAdapter.mObjectSource);
100         } else {
101             assertEquals(Types.ObjectSource.Type.CHROME_SYNC.getNumber(),
102                     mSyncAdapter.mObjectSource);
103         }
104         assertEquals("objectid_value", mSyncAdapter.mObjectId);
105         assertEquals(42, mSyncAdapter.mVersion);
106         assertEquals("payload_value", mSyncAdapter.mPayload);
107         assertTrue(mSyncAdapter.mCommandlineInitialized);
108     }
109
110     @MediumTest
111     @Feature({"Sync"})
112     public void testRequestSyncSpecificDataType() {
113       testRequestSyncSpecificDataType(true /* withObjectSource */);
114     }
115
116     @MediumTest
117     @Feature({"Sync"})
118     public void testRequestSyncSpecificDataType_withoutObjectSource() {
119       testRequestSyncSpecificDataType(false /* withObjectSource */);
120     }
121
122     @MediumTest
123     @Feature({"Sync"})
124     public void testRequestSyncWhenChromeInBackground() throws InterruptedException {
125         DelayedSyncControllerTest.sendChromeToBackground(getActivity());
126         SyncResult syncResult = new SyncResult();
127         mSyncAdapter.onPerformSync(TEST_ACCOUNT, new Bundle(),
128                 SyncStatusHelper.get(getActivity()).getContractAuthority(), null, syncResult);
129         assertFalse(mSyncAdapter.mSyncRequestedForAllTypes);
130         assertFalse(mSyncAdapter.mSyncRequested);
131         assertFalse(mSyncAdapter.mCommandlineInitialized);
132     }
133 }