| Index: chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/FakeServerHelper.java
|
| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..09a25ce673c06ba2aed6e30c9c8b9fcad538a497
|
| --- /dev/null
|
| +++ b/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/FakeServerHelper.java
|
| @@ -0,0 +1,123 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.sync;
|
| +
|
| +import android.content.Context;
|
| +
|
| +import org.chromium.base.ThreadUtils;
|
| +//import org.chromium.chrome.browser.sync.ProfileSyncService;
|
| +
|
| +import java.util.concurrent.Callable;
|
| +
|
| +/**
|
| + * Assists in Java interaction the native Sync FakeServer.
|
| + */
|
| +public class FakeServerHelper {
|
| + // Lazily-instantiated singleton FakeServerHelper.
|
| + private static FakeServerHelper sFakeServerHelper;
|
| +
|
| + // Pointer value for the FakeServer. This pointer is not owned by native
|
| + // code, so it must be stored here for future deletion.
|
| + private static long sNativeFakeServer = 0L;
|
| +
|
| + // The pointer to the native object called here.
|
| + private final long mNativeFakeServerHelperAndroid;
|
| +
|
| + // Accesses the singleton FakeServerHelper. There is at most one instance created per
|
| + // application lifetime, so no deletion mechanism is provided for the native object.
|
| + public static FakeServerHelper get() {
|
| + ThreadUtils.assertOnUiThread();
|
| + if (sFakeServerHelper == null) {
|
| + sFakeServerHelper = new FakeServerHelper();
|
| + }
|
| + return sFakeServerHelper;
|
| + }
|
| +
|
| + private FakeServerHelper() {
|
| + mNativeFakeServerHelperAndroid = nativeInit();
|
| + }
|
| +
|
| + /**
|
| + * Creates and configures FakeServer.
|
| + *
|
| + * Each call to this method should be accompanied by a later call to deleteFakeServer to avoid
|
| + * a memory leak.
|
| + */
|
| + public static void useFakeServer(final Context context) {
|
| + if (sNativeFakeServer != 0L) {
|
| + throw new IllegalStateException(
|
| + "deleteFakeServer must be called before calling useFakeServer again.");
|
| + }
|
| +
|
| + sNativeFakeServer = ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Long>() {
|
| + @Override
|
| + public Long call() {
|
| + FakeServerHelper fakeServerHelper = FakeServerHelper.get();
|
| + long nativeFakeServer = fakeServerHelper.createFakeServer();
|
| + long resources = fakeServerHelper.createNetworkResources(nativeFakeServer);
|
| + ProfileSyncService.get(context).overrideNetworkResourcesForTest(resources);
|
| +
|
| + return nativeFakeServer;
|
| + }
|
| + });
|
| + }
|
| +
|
| + /**
|
| + * Deletes the existing FakeServer.
|
| + */
|
| + public static void deleteFakeServer() {
|
| + if (sNativeFakeServer == 0L) {
|
| + throw new IllegalStateException(
|
| + "useFakeServer must be called before calling deleteFakeServer.");
|
| + }
|
| +
|
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Void>() {
|
| + @Override
|
| + public Void call() {
|
| + FakeServerHelper.get().deleteFakeServer(sNativeFakeServer);
|
| + sNativeFakeServer = 0L;
|
| + return null;
|
| + }
|
| + });
|
| + }
|
| +
|
| + /**
|
| + * Creates a native FakeServer object and returns its pointer. This pointer is owned by the
|
| + * Java caller.
|
| + *
|
| + * @return the FakeServer pointer
|
| + */
|
| + public long createFakeServer() {
|
| + return nativeCreateFakeServer(mNativeFakeServerHelperAndroid);
|
| + }
|
| +
|
| + /**
|
| + * Creates a native NetworkResources object. This pointer is owned by the Java caller, but
|
| + * ownership is transferred as part of ProfileSyncService.overrideNetworkResourcesForTest.
|
| + *
|
| + * @param nativeFakeServer pointer to a native FakeServer object.
|
| + * @return the NetworkResources pointer
|
| + */
|
| + public long createNetworkResources(long nativeFakeServer) {
|
| + return nativeCreateNetworkResources(mNativeFakeServerHelperAndroid, nativeFakeServer);
|
| + }
|
| +
|
| + /**
|
| + * Deletes a native FakeServer.
|
| + *
|
| + * @param nativeFakeServer the pointer to be deleted
|
| + */
|
| + public void deleteFakeServer(long nativeFakeServer) {
|
| + nativeDeleteFakeServer(mNativeFakeServerHelperAndroid, nativeFakeServer);
|
| + }
|
| +
|
| + // Native methods.
|
| + private native long nativeInit();
|
| + private native long nativeCreateFakeServer(long nativeFakeServerHelperAndroid);
|
| + private native long nativeCreateNetworkResources(
|
| + long nativeFakeServerHelperAndroid, long nativeFakeServer);
|
| + private native void nativeDeleteFakeServer(
|
| + long nativeFakeServerHelperAndroid, long nativeFakeServer);
|
| +}
|
|
|