OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 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.content.Context; | |
8 | |
9 import org.chromium.base.ThreadUtils; | |
10 //import org.chromium.chrome.browser.sync.ProfileSyncService; | |
11 | |
12 import java.util.concurrent.Callable; | |
13 | |
14 /** | |
15 * Assists in Java interaction the native Sync FakeServer. | |
16 */ | |
17 public class FakeServerHelper { | |
18 // Lazily-instantiated singleton FakeServerHelper. | |
19 private static FakeServerHelper sFakeServerHelper; | |
20 | |
21 // Pointer value for the FakeServer. This pointer is not owned by native | |
22 // code, so it must be stored here for future deletion. | |
23 private static long sNativeFakeServer = 0L; | |
24 | |
25 // The pointer to the native object called here. | |
26 private final long mNativeFakeServerHelperAndroid; | |
27 | |
28 // Accesses the singleton FakeServerHelper. There is at most one instance cr eated per | |
29 // application lifetime, so no deletion mechanism is provided for the native object. | |
30 public static FakeServerHelper get() { | |
31 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.
| |
32 sFakeServerHelper = new FakeServerHelper(); | |
33 } | |
34 return sFakeServerHelper; | |
35 } | |
36 | |
37 private FakeServerHelper() { | |
38 mNativeFakeServerHelperAndroid = nativeInit(); | |
39 } | |
40 | |
41 /** | |
42 * Creates and configures FakeServer. | |
43 * | |
44 * Each call to this method should be accompanied by a later call to deleteF akeServer to avoid | |
45 * a memory leak. | |
46 */ | |
47 public static void useFakeServer(final Context context) { | |
48 if (sNativeFakeServer != 0L) { | |
49 throw new IllegalStateException( | |
50 "deleteFakeServer must be called before calling useFakeServe r again."); | |
51 } | |
52 | |
53 sNativeFakeServer = ThreadUtils.runOnUiThreadBlockingNoException(new Cal lable<Long>() { | |
54 @Override | |
55 public Long call() { | |
56 FakeServerHelper fakeServerHelper = FakeServerHelper.get(); | |
57 long nativeFakeServer = fakeServerHelper.createFakeServer(); | |
58 long resources = fakeServerHelper.createNetworkResources(nativeF akeServer); | |
59 ProfileSyncService.get(context).overrideNetworkResourcesForTest( resources); | |
60 | |
61 return nativeFakeServer; | |
62 } | |
63 }); | |
64 } | |
65 | |
66 /** | |
67 * Deletes the existing FakeServer. | |
68 */ | |
69 public static void deleteFakeServer() { | |
70 if (sNativeFakeServer == 0L) { | |
71 throw new IllegalStateException( | |
72 "useFakeServer must be called before calling deleteFakeServe r."); | |
73 } | |
74 | |
75 FakeServerHelper.get().deleteFakeServer(sNativeFakeServer); | |
76 sNativeFakeServer = 0L; | |
77 } | |
78 | |
79 /** | |
80 * Creates a native FakeServer object and returns its pointer. This pointer is owned by the | |
81 * Java caller. | |
82 * | |
83 * @return the FakeServer pointer | |
84 */ | |
85 public long createFakeServer() { | |
86 return nativeCreateFakeServer(mNativeFakeServerHelperAndroid); | |
87 } | |
88 | |
89 /** | |
90 * Creates a native NetworkResources object. This pointer is owned by the Ja va caller, but | |
91 * ownership is transferred as part of ProfileSyncService.overrideNetworkRes ourcesForTest. | |
92 * | |
93 * @param nativeFakeServer pointer to a native FakeServer object. | |
94 * @return the NetworkResources pointer | |
95 */ | |
96 public long createNetworkResources(long nativeFakeServer) { | |
97 return nativeCreateNetworkResources(mNativeFakeServerHelperAndroid, nati veFakeServer); | |
98 } | |
99 | |
100 /** | |
101 * Deletes a native FakeServer. | |
102 * | |
103 * @param nativeFakeServer the pointer to be deleted | |
104 */ | |
105 public void deleteFakeServer(long nativeFakeServer) { | |
106 nativeDeleteFakeServer(mNativeFakeServerHelperAndroid, nativeFakeServer) ; | |
107 } | |
108 | |
109 // Native methods. | |
110 private native long nativeInit(); | |
111 private native long nativeCreateFakeServer(long nativeFakeServerHelperAndroi d); | |
112 private native long nativeCreateNetworkResources( | |
113 long nativeFakeServerHelperAndroid, long nativeFakeServer); | |
114 private native void nativeDeleteFakeServer( | |
115 long nativeFakeServerHelperAndroid, long nativeFakeServer); | |
116 } | |
OLD | NEW |