Chromium Code Reviews| 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..0c3f7177020c5f02feb51afbc256293dd70b6c57 |
| --- /dev/null |
| +++ b/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/FakeServerHelper.java |
| @@ -0,0 +1,116 @@ |
| +// 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() { |
| + if (sFakeServerHelper == null) { |
|
Yaron
2014/08/20 05:06:25
This should probably assert on ui thread. (you are
pval...(no longer on Chromium)
2014/08/20 18:20:42
Done.
|
| + 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."); |
| + } |
| + |
| + FakeServerHelper.get().deleteFakeServer(sNativeFakeServer); |
| + sNativeFakeServer = 0L; |
| + } |
| + |
| + /** |
| + * 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); |
| +} |