Commit bdd6851f authored by Pâris MEULEMAN's avatar Pâris MEULEMAN Committed by Commit Bot

remove references to OAuth2TokenService.java outside of identity manager

Remove the remaining references to OAuth2TokenService.java, such as
IdentityServicesProvider.getOAuth2TokenService(),
IdentityManager::LegacyGetOAuth2TokenServiceObject(). This prevents
usage outside of IdentityManager and is the last step before the actual
internalization of OAuth2TokenService.java and
oauth2_token_service_delegate_android.*.

Bug: 934688
Change-Id: I4ab76100362f9aaa717bde950a07fa3d5fbe1ced
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1763685
Commit-Queue: Pâris Meuleman <pmeuleman@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712990}
parent e406e95e
...@@ -8,7 +8,6 @@ import org.chromium.base.ThreadUtils; ...@@ -8,7 +8,6 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.components.signin.AccountTrackerService; import org.chromium.components.signin.AccountTrackerService;
import org.chromium.components.signin.OAuth2TokenService;
import org.chromium.components.signin.identitymanager.IdentityManager; import org.chromium.components.signin.identitymanager.IdentityManager;
/** /**
...@@ -34,14 +33,6 @@ public final class IdentityServicesProvider { ...@@ -34,14 +33,6 @@ public final class IdentityServicesProvider {
return result; return result;
} }
public static OAuth2TokenService getOAuth2TokenService() {
ThreadUtils.assertOnUiThread();
OAuth2TokenService result = IdentityServicesProviderJni.get().getOAuth2TokenService(
Profile.getLastUsedProfile());
assert result != null;
return result;
}
public static SigninManager getSigninManager() { public static SigninManager getSigninManager() {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
SigninManager result = SigninManager result =
...@@ -54,7 +45,6 @@ public final class IdentityServicesProvider { ...@@ -54,7 +45,6 @@ public final class IdentityServicesProvider {
interface Natives { interface Natives {
public IdentityManager getIdentityManager(Profile profile); public IdentityManager getIdentityManager(Profile profile);
public AccountTrackerService getAccountTrackerService(Profile profile); public AccountTrackerService getAccountTrackerService(Profile profile);
public OAuth2TokenService getOAuth2TokenService(Profile profile);
public SigninManager getSigninManager(Profile profile); public SigninManager getSigninManager(Profile profile);
} }
} }
...@@ -25,7 +25,6 @@ import org.chromium.chrome.browser.sync.ProfileSyncService; ...@@ -25,7 +25,6 @@ import org.chromium.chrome.browser.sync.ProfileSyncService;
import org.chromium.components.signin.AccountManagerFacade; import org.chromium.components.signin.AccountManagerFacade;
import org.chromium.components.signin.AccountTrackerService; import org.chromium.components.signin.AccountTrackerService;
import org.chromium.components.signin.ChromeSigninController; import org.chromium.components.signin.ChromeSigninController;
import org.chromium.components.signin.OAuth2TokenService;
import org.chromium.components.signin.metrics.SignoutReason; import org.chromium.components.signin.metrics.SignoutReason;
import java.io.IOException; import java.io.IOException;
...@@ -102,8 +101,6 @@ public class SigninHelper { ...@@ -102,8 +101,6 @@ public class SigninHelper {
private final AccountTrackerService mAccountTrackerService; private final AccountTrackerService mAccountTrackerService;
private final OAuth2TokenService mOAuth2TokenService;
public static SigninHelper get() { public static SigninHelper get() {
synchronized (LOCK) { synchronized (LOCK) {
if (sInstance == null) { if (sInstance == null) {
...@@ -117,7 +114,6 @@ public class SigninHelper { ...@@ -117,7 +114,6 @@ public class SigninHelper {
mProfileSyncService = ProfileSyncService.get(); mProfileSyncService = ProfileSyncService.get();
mSigninManager = IdentityServicesProvider.getSigninManager(); mSigninManager = IdentityServicesProvider.getSigninManager();
mAccountTrackerService = IdentityServicesProvider.getAccountTrackerService(); mAccountTrackerService = IdentityServicesProvider.getAccountTrackerService();
mOAuth2TokenService = IdentityServicesProvider.getOAuth2TokenService();
mChromeSigninController = ChromeSigninController.get(); mChromeSigninController = ChromeSigninController.get();
} }
......
...@@ -20,9 +20,9 @@ import org.chromium.chrome.test.util.browser.signin.SigninTestUtil; ...@@ -20,9 +20,9 @@ import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
import org.chromium.components.signin.AccountIdProvider; import org.chromium.components.signin.AccountIdProvider;
import org.chromium.components.signin.AccountManagerFacade; import org.chromium.components.signin.AccountManagerFacade;
import org.chromium.components.signin.ChromeSigninController; import org.chromium.components.signin.ChromeSigninController;
import org.chromium.components.signin.OAuth2TokenService;
import org.chromium.components.signin.identitymanager.CoreAccountId; import org.chromium.components.signin.identitymanager.CoreAccountId;
import org.chromium.components.signin.identitymanager.CoreAccountInfo; import org.chromium.components.signin.identitymanager.CoreAccountInfo;
import org.chromium.components.signin.identitymanager.IdentityManager;
import org.chromium.components.signin.identitymanager.IdentityMutator; import org.chromium.components.signin.identitymanager.IdentityMutator;
import org.chromium.components.signin.test.util.AccountHolder; import org.chromium.components.signin.test.util.AccountHolder;
import org.chromium.components.signin.test.util.AccountManagerTestRule; import org.chromium.components.signin.test.util.AccountManagerTestRule;
...@@ -58,6 +58,7 @@ public class IdentityManagerIntegrationTest { ...@@ -58,6 +58,7 @@ public class IdentityManagerIntegrationTest {
private CoreAccountInfo mTestAccount2; private CoreAccountInfo mTestAccount2;
private IdentityMutator mIdentityMutator; private IdentityMutator mIdentityMutator;
private IdentityManager mIdentityManager;
private ChromeSigninController mChromeSigninController; private ChromeSigninController mChromeSigninController;
@Before @Before
...@@ -78,6 +79,7 @@ public class IdentityManagerIntegrationTest { ...@@ -78,6 +79,7 @@ public class IdentityManagerIntegrationTest {
// Get a reference to the service. // Get a reference to the service.
mIdentityMutator = IdentityServicesProvider.getSigninManager().getIdentityMutator(); mIdentityMutator = IdentityServicesProvider.getSigninManager().getIdentityMutator();
mIdentityManager = IdentityServicesProvider.getIdentityManager();
}); });
} }
...@@ -137,15 +139,15 @@ public class IdentityManagerIntegrationTest { ...@@ -137,15 +139,15 @@ public class IdentityManagerIntegrationTest {
@Test @Test
@MediumTest @MediumTest
public void testUpdateAccountListNoAccountsRegisteredAndNoSignedInUser() { public void testUpdateAccountListNoAccountsRegisteredAndNoSignedInUser() {
TestThreadUtils.runOnUiThreadBlocking(() -> { Assert.assertArrayEquals("Initial state: getAccounts must be empty",
Assert.assertArrayEquals("Initial state: getAccounts must be empty", new String[] {}, new CoreAccountInfo[] {}, mIdentityManager.getAccountsWithRefreshTokens());
OAuth2TokenService.getAccounts());
TestThreadUtils.runOnUiThreadBlocking(() -> {
// Run test. // Run test.
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(null); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(null);
Assert.assertArrayEquals("No account: getAccounts must be empty", new String[] {}, Assert.assertArrayEquals("No account: getAccounts must be empty",
OAuth2TokenService.getAccounts()); new CoreAccountInfo[] {}, mIdentityManager.getAccountsWithRefreshTokens());
}); });
} }
...@@ -159,7 +161,7 @@ public class IdentityManagerIntegrationTest { ...@@ -159,7 +161,7 @@ public class IdentityManagerIntegrationTest {
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(null); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(null);
Assert.assertArrayEquals("No signed in account: getAccounts must be empty", Assert.assertArrayEquals("No signed in account: getAccounts must be empty",
new String[] {}, OAuth2TokenService.getAccounts()); new CoreAccountInfo[] {}, mIdentityManager.getAccountsWithRefreshTokens());
}); });
} }
...@@ -173,7 +175,8 @@ public class IdentityManagerIntegrationTest { ...@@ -173,7 +175,8 @@ public class IdentityManagerIntegrationTest {
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertArrayEquals("Signed in: one account should be available", Assert.assertArrayEquals("Signed in: one account should be available",
new String[] {mTestAccount1.getId().getId()}, OAuth2TokenService.getAccounts()); new CoreAccountInfo[] {mTestAccount1},
mIdentityManager.getAccountsWithRefreshTokens());
}); });
} }
...@@ -188,7 +191,7 @@ public class IdentityManagerIntegrationTest { ...@@ -188,7 +191,7 @@ public class IdentityManagerIntegrationTest {
Assert.assertArrayEquals( Assert.assertArrayEquals(
"Signed in but different account, getAccounts must remain empty", "Signed in but different account, getAccounts must remain empty",
new String[] {}, OAuth2TokenService.getAccounts()); new CoreAccountInfo[] {}, mIdentityManager.getAccountsWithRefreshTokens());
}); });
} }
...@@ -202,7 +205,8 @@ public class IdentityManagerIntegrationTest { ...@@ -202,7 +205,8 @@ public class IdentityManagerIntegrationTest {
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertArrayEquals("Signed in and one account available", Assert.assertArrayEquals("Signed in and one account available",
new String[] {mTestAccount1.getId().getId()}, OAuth2TokenService.getAccounts()); new CoreAccountInfo[] {mTestAccount1},
mIdentityManager.getAccountsWithRefreshTokens());
}); });
// Add another account. // Add another account.
...@@ -213,9 +217,9 @@ public class IdentityManagerIntegrationTest { ...@@ -213,9 +217,9 @@ public class IdentityManagerIntegrationTest {
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertEquals("Signed in and two accounts available", Assert.assertEquals("Signed in and two accounts available",
new HashSet<String>(Arrays.asList( new HashSet<CoreAccountInfo>(Arrays.asList(mTestAccount1, mTestAccount2)),
mTestAccount1.getId().getId(), mTestAccount2.getId().getId())), new HashSet<CoreAccountInfo>(
new HashSet<String>(Arrays.asList(OAuth2TokenService.getAccounts()))); Arrays.asList(mIdentityManager.getAccountsWithRefreshTokens())));
}); });
} }
...@@ -231,9 +235,9 @@ public class IdentityManagerIntegrationTest { ...@@ -231,9 +235,9 @@ public class IdentityManagerIntegrationTest {
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertEquals("Signed in and two accounts available", Assert.assertEquals("Signed in and two accounts available",
new HashSet<String>(Arrays.asList( new HashSet<CoreAccountInfo>(Arrays.asList(mTestAccount1, mTestAccount2)),
mTestAccount1.getId().getId(), mTestAccount2.getId().getId())), new HashSet<CoreAccountInfo>(
new HashSet<String>(Arrays.asList(OAuth2TokenService.getAccounts()))); Arrays.asList(mIdentityManager.getAccountsWithRefreshTokens())));
}); });
removeAccount(TEST_ACCOUNT_HOLDER_2); removeAccount(TEST_ACCOUNT_HOLDER_2);
...@@ -243,7 +247,8 @@ public class IdentityManagerIntegrationTest { ...@@ -243,7 +247,8 @@ public class IdentityManagerIntegrationTest {
Assert.assertArrayEquals( Assert.assertArrayEquals(
"Only one account available, account2 should not be returned anymore", "Only one account available, account2 should not be returned anymore",
new String[] {mTestAccount1.getId().getId()}, OAuth2TokenService.getAccounts()); new CoreAccountInfo[] {mTestAccount1},
mIdentityManager.getAccountsWithRefreshTokens());
}); });
} }
...@@ -258,9 +263,9 @@ public class IdentityManagerIntegrationTest { ...@@ -258,9 +263,9 @@ public class IdentityManagerIntegrationTest {
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertEquals("Signed in and two accounts available", Assert.assertEquals("Signed in and two accounts available",
new HashSet<String>(Arrays.asList( new HashSet<CoreAccountInfo>(Arrays.asList(mTestAccount1, mTestAccount2)),
mTestAccount1.getId().getId(), mTestAccount2.getId().getId())), new HashSet<CoreAccountInfo>(
new HashSet<String>(Arrays.asList(OAuth2TokenService.getAccounts()))); Arrays.asList(mIdentityManager.getAccountsWithRefreshTokens())));
}); });
// Remove all. // Remove all.
...@@ -271,8 +276,8 @@ public class IdentityManagerIntegrationTest { ...@@ -271,8 +276,8 @@ public class IdentityManagerIntegrationTest {
// Re-validate and run checks. // Re-validate and run checks.
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertArrayEquals( Assert.assertArrayEquals("No account available", new CoreAccountInfo[] {},
"No account available", new String[] {}, OAuth2TokenService.getAccounts()); mIdentityManager.getAccountsWithRefreshTokens());
}); });
} }
...@@ -288,9 +293,9 @@ public class IdentityManagerIntegrationTest { ...@@ -288,9 +293,9 @@ public class IdentityManagerIntegrationTest {
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertEquals("Signed in and two accounts available", Assert.assertEquals("Signed in and two accounts available",
new HashSet<String>(Arrays.asList( new HashSet<CoreAccountInfo>(Arrays.asList(mTestAccount1, mTestAccount2)),
mTestAccount1.getId().getId(), mTestAccount2.getId().getId())), new HashSet<CoreAccountInfo>(
new HashSet<String>(Arrays.asList(OAuth2TokenService.getAccounts()))); Arrays.asList(mIdentityManager.getAccountsWithRefreshTokens())));
}); });
removeAccount(TEST_ACCOUNT_HOLDER_1); removeAccount(TEST_ACCOUNT_HOLDER_1);
...@@ -300,8 +305,8 @@ public class IdentityManagerIntegrationTest { ...@@ -300,8 +305,8 @@ public class IdentityManagerIntegrationTest {
// Re-validate and run checks. // Re-validate and run checks.
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(null); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(null);
Assert.assertEquals("Not signed in and no accounts available", new String[] {}, Assert.assertEquals("Not signed in and no accounts available", new CoreAccountInfo[] {},
OAuth2TokenService.getAccounts()); mIdentityManager.getAccountsWithRefreshTokens());
}); });
} }
...@@ -317,9 +322,9 @@ public class IdentityManagerIntegrationTest { ...@@ -317,9 +322,9 @@ public class IdentityManagerIntegrationTest {
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertEquals("Signed in and two accounts available", Assert.assertEquals("Signed in and two accounts available",
new HashSet<String>(Arrays.asList( new HashSet<CoreAccountInfo>(Arrays.asList(mTestAccount1, mTestAccount2)),
mTestAccount1.getId().getId(), mTestAccount2.getId().getId())), new HashSet<CoreAccountInfo>(
new HashSet<String>(Arrays.asList(OAuth2TokenService.getAccounts()))); Arrays.asList(mIdentityManager.getAccountsWithRefreshTokens())));
}); });
} }
...@@ -330,8 +335,8 @@ public class IdentityManagerIntegrationTest { ...@@ -330,8 +335,8 @@ public class IdentityManagerIntegrationTest {
// Run test. // Run test.
mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId()); mIdentityMutator.reloadAllAccountsFromSystemWithPrimaryAccount(mTestAccount1.getId());
Assert.assertEquals( Assert.assertEquals("No accounts available", new CoreAccountInfo[] {},
"No accounts available", new String[] {}, OAuth2TokenService.getAccounts()); mIdentityManager.getAccountsWithRefreshTokens());
}); });
} }
} }
...@@ -30,16 +30,6 @@ JNI_IdentityServicesProvider_GetAccountTrackerService( ...@@ -30,16 +30,6 @@ JNI_IdentityServicesProvider_GetAccountTrackerService(
return identity_manager->LegacyGetAccountTrackerServiceJavaObject(); return identity_manager->LegacyGetAccountTrackerServiceJavaObject();
} }
static ScopedJavaLocalRef<jobject>
JNI_IdentityServicesProvider_GetOAuth2TokenService(
JNIEnv* env,
const JavaParamRef<jobject>& j_profile_android) {
Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile_android);
signin::IdentityManager* identity_manager =
IdentityManagerFactory::GetForProfile(profile);
return identity_manager->LegacyGetOAuth2TokenServiceJavaObject();
}
static ScopedJavaLocalRef<jobject> static ScopedJavaLocalRef<jobject>
JNI_IdentityServicesProvider_GetSigninManager( JNI_IdentityServicesProvider_GetSigninManager(
JNIEnv* env, JNIEnv* env,
......
...@@ -115,6 +115,14 @@ public class IdentityManager { ...@@ -115,6 +115,14 @@ public class IdentityManager {
return IdentityManagerJni.get().hasPrimaryAccount(mNativeIdentityManager); return IdentityManagerJni.get().hasPrimaryAccount(mNativeIdentityManager);
} }
/**
* Provides the information of all accounts that have refresh tokens.
*/
@VisibleForTesting
public CoreAccountInfo[] getAccountsWithRefreshTokens() {
return IdentityManagerJni.get().getAccountsWithRefreshTokens(mNativeIdentityManager);
}
/** /**
* Provides access to the core information of the user's primary account. * Provides access to the core information of the user's primary account.
* Returns null if no such info is available, either because there * Returns null if no such info is available, either because there
...@@ -217,5 +225,6 @@ public class IdentityManager { ...@@ -217,5 +225,6 @@ public class IdentityManager {
public @Nullable CoreAccountInfo public @Nullable CoreAccountInfo
findExtendedAccountInfoForAccountWithRefreshTokenByEmailAddress( findExtendedAccountInfoForAccountWithRefreshTokenByEmailAddress(
long nativeIdentityManager, String email); long nativeIdentityManager, String email);
public CoreAccountInfo[] getAccountsWithRefreshTokens(long nativeIdentityManager);
} }
} }
...@@ -381,11 +381,6 @@ IdentityManager::LegacyGetAccountTrackerServiceJavaObject() { ...@@ -381,11 +381,6 @@ IdentityManager::LegacyGetAccountTrackerServiceJavaObject() {
return account_tracker_service_->GetJavaObject(); return account_tracker_service_->GetJavaObject();
} }
base::android::ScopedJavaLocalRef<jobject>
IdentityManager::LegacyGetOAuth2TokenServiceJavaObject() {
return token_service_->GetDelegate()->GetJavaObject();
}
base::android::ScopedJavaLocalRef<jobject> IdentityManager::GetJavaObject() { base::android::ScopedJavaLocalRef<jobject> IdentityManager::GetJavaObject() {
DCHECK(java_identity_manager_); DCHECK(java_identity_manager_);
return base::android::ScopedJavaLocalRef<jobject>(java_identity_manager_); return base::android::ScopedJavaLocalRef<jobject>(java_identity_manager_);
...@@ -432,6 +427,27 @@ base::android::ScopedJavaLocalRef<jobject> IdentityManager:: ...@@ -432,6 +427,27 @@ base::android::ScopedJavaLocalRef<jobject> IdentityManager::
return nullptr; return nullptr;
return ConvertToJavaCoreAccountInfo(env, account_info.value()); return ConvertToJavaCoreAccountInfo(env, account_info.value());
} }
base::android::ScopedJavaLocalRef<jobjectArray>
IdentityManager::GetAccountsWithRefreshTokens(JNIEnv* env) const {
std::vector<CoreAccountInfo> accounts = GetAccountsWithRefreshTokens();
base::android::ScopedJavaLocalRef<jclass> coreaccountinfo_clazz =
base::android::GetClass(
env,
"org/chromium/components/signin/identitymanager/CoreAccountInfo");
base::android::ScopedJavaLocalRef<jobjectArray> array(
env, env->NewObjectArray(accounts.size(), coreaccountinfo_clazz.obj(),
nullptr));
base::android::CheckException(env);
for (size_t i = 0; i < accounts.size(); ++i) {
base::android::ScopedJavaLocalRef<jobject> item =
ConvertToJavaCoreAccountInfo(env, accounts[i]);
env->SetObjectArrayElement(array.obj(), i, item.obj());
}
return array;
}
#endif #endif
PrimaryAccountManager* IdentityManager::GetPrimaryAccountManager() { PrimaryAccountManager* IdentityManager::GetPrimaryAccountManager() {
......
...@@ -432,13 +432,6 @@ class IdentityManager : public KeyedService, ...@@ -432,13 +432,6 @@ class IdentityManager : public KeyedService,
base::android::ScopedJavaLocalRef<jobject> base::android::ScopedJavaLocalRef<jobject>
LegacyGetAccountTrackerServiceJavaObject(); LegacyGetAccountTrackerServiceJavaObject();
// Returns a pointer to the OAuth2TokenService Java instance associated
// with this object.
// TODO(https://crbug.com/934688): Eliminate this method once
// OAuth2TokenService.java has no more client usage.
base::android::ScopedJavaLocalRef<jobject>
LegacyGetOAuth2TokenServiceJavaObject();
// Get the reference on the java IdentityManager. // Get the reference on the java IdentityManager.
base::android::ScopedJavaLocalRef<jobject> GetJavaObject(); base::android::ScopedJavaLocalRef<jobject> GetJavaObject();
...@@ -464,6 +457,9 @@ class IdentityManager : public KeyedService, ...@@ -464,6 +457,9 @@ class IdentityManager : public KeyedService,
FindExtendedAccountInfoForAccountWithRefreshTokenByEmailAddress( FindExtendedAccountInfoForAccountWithRefreshTokenByEmailAddress(
JNIEnv* env, JNIEnv* env,
const base::android::JavaParamRef<jstring>& j_email) const; const base::android::JavaParamRef<jstring>& j_email) const;
base::android::ScopedJavaLocalRef<jobjectArray> GetAccountsWithRefreshTokens(
JNIEnv* env) const;
#endif #endif
private: private:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment