summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/FakeServerHelper.java24
-rw-r--r--chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTest.java38
-rw-r--r--sync/BUILD.gn1
-rw-r--r--sync/sync_tests.gypi1
-rw-r--r--sync/test/fake_server/android/fake_server_helper_android.cc32
-rw-r--r--sync/test/fake_server/android/fake_server_helper_android.h9
6 files changed, 104 insertions, 1 deletions
diff --git a/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/FakeServerHelper.java b/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/FakeServerHelper.java
index 09a25ce..51cd031 100644
--- a/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/FakeServerHelper.java
+++ b/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/FakeServerHelper.java
@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.sync;
import android.content.Context;
import org.chromium.base.ThreadUtils;
-//import org.chromium.chrome.browser.sync.ProfileSyncService;
+import org.chromium.sync.internal_api.pub.base.ModelType;
import java.util.concurrent.Callable;
@@ -113,6 +113,25 @@ public class FakeServerHelper {
nativeDeleteFakeServer(mNativeFakeServerHelperAndroid, nativeFakeServer);
}
+ /**
+ * Returns whether {@code count} entities exist on the fake Sync server with the given
+ * {@code modelType} and {@code name}.
+ *
+ * @param count the number of fake server entities to verify
+ * @param modelType the model type of entities to verify
+ * @param name the name of entities to verify
+ *
+ * @return whether the number of specified entities exist
+ */
+ public boolean verifyEntityCountByTypeAndName(int count, ModelType modelType, String name) {
+ if (sNativeFakeServer == 0L) {
+ throw new IllegalStateException(
+ "useFakeServer must be called before data verification.");
+ }
+ return nativeVerifyEntityCountByTypeAndName(mNativeFakeServerHelperAndroid,
+ sNativeFakeServer, count, modelType.toString(), name);
+ }
+
// Native methods.
private native long nativeInit();
private native long nativeCreateFakeServer(long nativeFakeServerHelperAndroid);
@@ -120,4 +139,7 @@ public class FakeServerHelper {
long nativeFakeServerHelperAndroid, long nativeFakeServer);
private native void nativeDeleteFakeServer(
long nativeFakeServerHelperAndroid, long nativeFakeServer);
+ private native boolean nativeVerifyEntityCountByTypeAndName(
+ long nativeFakeServerHelperAndroid, long nativeFakeServer, int count, String modelType,
+ String name);
}
diff --git a/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTest.java b/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTest.java
index 4386426..24c142d 100644
--- a/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTest.java
+++ b/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTest.java
@@ -23,11 +23,14 @@ import org.chromium.content.browser.ContentViewCore;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.JavaScriptUtils;
+import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.sync.AndroidSyncSettings;
+import org.chromium.sync.internal_api.pub.base.ModelType;
import org.chromium.sync.signin.AccountManagerHelper;
import org.chromium.sync.signin.ChromeSigninController;
import org.chromium.sync.test.util.MockAccountManager;
import org.chromium.sync.test.util.MockSyncContentResolverDelegate;
+import org.chromium.ui.base.PageTransition;
import java.util.concurrent.TimeoutException;
@@ -43,6 +46,7 @@ public class SyncTest extends ChromeShellTestBase {
private SyncTestUtil.SyncTestContext mContext;
private MockAccountManager mAccountManager;
private SyncController mSyncController;
+ private FakeServerHelper mFakeServerHelper;
@Override
protected void setUp() throws Exception {
@@ -66,6 +70,7 @@ public class SyncTest extends ChromeShellTestBase {
@Override
public void run() {
mSyncController = SyncController.get(mContext);
+ mFakeServerHelper = FakeServerHelper.get();
}
});
FakeServerHelper.useFakeServer(getInstrumentation().getTargetContext());
@@ -181,6 +186,39 @@ public class SyncTest extends ChromeShellTestBase {
SyncTestUtil.verifySignedInWithAccount(mContext, account);
}
+ @LargeTest
+ @Feature({"Sync"})
+ public void testUploadTypedUrl() throws Exception {
+ setupTestAccountAndSignInToSync(FOREIGN_SESSION_TEST_MACHINE_ID);
+
+ // TestHttpServerClient is preferred here but it can't be used. The test server
+ // serves pages on localhost and Chrome doesn't sync localhost URLs as typed URLs.
+ // This type of URL requires no external data connection or resources.
+ final String urlToLoad = "data:text,testTypedUrl";
+ assertTrue("A typed URL entity for " + urlToLoad + " already exists on the fake server.",
+ mFakeServerHelper.verifyEntityCountByTypeAndName(0, ModelType.TYPED_URL,
+ urlToLoad));
+
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ LoadUrlParams params = new LoadUrlParams(urlToLoad, PageTransition.TYPED);
+ getActivity().getActiveTab().loadUrl(params);
+ }
+ });
+
+ boolean synced = CriteriaHelper.pollForCriteria(new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ return mFakeServerHelper.verifyEntityCountByTypeAndName(1, ModelType.TYPED_URL,
+ urlToLoad);
+ }
+ }, SyncTestUtil.UI_TIMEOUT_MS, SyncTestUtil.CHECK_INTERVAL_MS);
+
+ assertTrue("The typed URL entity for " + urlToLoad + " was not found on the fake server.",
+ synced);
+ }
+
private void setupTestAccountAndSignInToSync(
final String syncClientIdentifier)
throws InterruptedException {
diff --git a/sync/BUILD.gn b/sync/BUILD.gn
index df5f23a..605f797 100644
--- a/sync/BUILD.gn
+++ b/sync/BUILD.gn
@@ -804,6 +804,7 @@ if (is_android) {
":fake_server_jni",
":test_support_sync_fake_server",
"//base",
+ "//testing/gtest",
]
}
}
diff --git a/sync/sync_tests.gypi b/sync/sync_tests.gypi
index b1ef9cf..1c39e5b 100644
--- a/sync/sync_tests.gypi
+++ b/sync/sync_tests.gypi
@@ -475,6 +475,7 @@
'dependencies': [
'sync_fake_server_jni_headers',
'test_support_sync_fake_server',
+ '../testing/gtest.gyp:gtest',
'../base/base.gyp:base',
],
'sources': [
diff --git a/sync/test/fake_server/android/fake_server_helper_android.cc b/sync/test/fake_server/android/fake_server_helper_android.cc
index 725ba63..8491474 100644
--- a/sync/test/fake_server/android/fake_server_helper_android.cc
+++ b/sync/test/fake_server/android/fake_server_helper_android.cc
@@ -6,11 +6,17 @@
#include <jni.h>
+#include "base/android/jni_string.h"
#include "base/basictypes.h"
+#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "jni/FakeServerHelper_jni.h"
+#include "sync/internal_api/public/base/model_type.h"
#include "sync/internal_api/public/network_resources.h"
#include "sync/test/fake_server/fake_server.h"
#include "sync/test/fake_server/fake_server_network_resources.h"
+#include "sync/test/fake_server/fake_server_verifier.h"
+#include "testing/gtest/include/gtest/gtest.h"
FakeServerHelperAndroid::FakeServerHelperAndroid(JNIEnv* env, jobject obj) {
}
@@ -46,6 +52,32 @@ void FakeServerHelperAndroid::DeleteFakeServer(JNIEnv* env,
delete fake_server_ptr;
}
+jboolean FakeServerHelperAndroid::VerifyEntityCountByTypeAndName(
+ JNIEnv* env,
+ jobject obj,
+ jlong fake_server,
+ jlong count,
+ jstring model_type_string,
+ jstring name) {
+ syncer::ModelType model_type;
+ if (!NotificationTypeToRealModelType(base::android::ConvertJavaStringToUTF8(
+ env, model_type_string), &model_type)) {
+ LOG(WARNING) << "Invalid ModelType string.";
+ return false;
+ }
+ fake_server::FakeServer* fake_server_ptr =
+ reinterpret_cast<fake_server::FakeServer*>(fake_server);
+ fake_server::FakeServerVerifier fake_server_verifier(fake_server_ptr);
+ testing::AssertionResult result =
+ fake_server_verifier.VerifyEntityCountByTypeAndName(
+ count, model_type, base::android::ConvertJavaStringToUTF8(env, name));
+
+ if (!result)
+ LOG(WARNING) << result.message();
+
+ return result;
+}
+
// static
bool FakeServerHelperAndroid::Register(JNIEnv* env) {
return RegisterNativesImpl(env);
diff --git a/sync/test/fake_server/android/fake_server_helper_android.h b/sync/test/fake_server/android/fake_server_helper_android.h
index 24e1d9e..dfbdb7b 100644
--- a/sync/test/fake_server/android/fake_server_helper_android.h
+++ b/sync/test/fake_server/android/fake_server_helper_android.h
@@ -30,6 +30,15 @@ class FakeServerHelperAndroid {
// CreateFakeServer).
void DeleteFakeServer(JNIEnv* env, jobject obj, jlong fake_server);
+ // Returns true if and only if |fake_server| contains |count| entities that
+ // match |model_type_string| and |name|.
+ jboolean VerifyEntityCountByTypeAndName(JNIEnv* env,
+ jobject obj,
+ jlong fake_server,
+ jlong count,
+ jstring model_type_string,
+ jstring name);
+
private:
virtual ~FakeServerHelperAndroid();
};