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

Move IdentityManager java classes to //component/signin/public/android

This is the first step of moving most of the signin java files to a
unique directory and gn component: //component/signin/public/android.
This moves only the //components/signin/*/identity_manager/android
classes. Will follow the relevant //components/signin/core ones.

Bug: 934688
Change-Id: I7b75a5b51b992b311ebf1133d7595a77f6ccd458
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1814929
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Auto-Submit: Pâris Meuleman <pmeuleman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#726727}
parent 00706ad6
...@@ -307,7 +307,7 @@ android_library("chrome_java") { ...@@ -307,7 +307,7 @@ android_library("chrome_java") {
"//components/safe_browsing/android:safe_browsing_java", "//components/safe_browsing/android:safe_browsing_java",
"//components/search_engines/android:java", "//components/search_engines/android:java",
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//components/signin/public/identity_manager/android:java", "//components/signin/public/android:java",
"//components/spellcheck/browser/android:java", "//components/spellcheck/browser/android:java",
"//components/sync/android:sync_java", "//components/sync/android:sync_java",
"//components/sync/protocol:protocol_java", "//components/sync/protocol:protocol_java",
...@@ -830,7 +830,7 @@ android_library("chrome_test_java") { ...@@ -830,7 +830,7 @@ android_library("chrome_test_java") {
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//components/signin/core/browser/android:signin_java_test_support", "//components/signin/core/browser/android:signin_java_test_support",
"//components/signin/core/browser/android:signin_javatests", "//components/signin/core/browser/android:signin_javatests",
"//components/signin/public/identity_manager/android:java", "//components/signin/public/android:java",
"//components/sync:sync_java_test_support", "//components/sync:sync_java_test_support",
"//components/sync/android:sync_java", "//components/sync/android:sync_java",
"//components/sync/android:sync_javatests", "//components/sync/android:sync_javatests",
......
...@@ -11,7 +11,7 @@ include_rules = [ ...@@ -11,7 +11,7 @@ include_rules = [
"+components/invalidation", "+components/invalidation",
"+components/policy", "+components/policy",
"+components/signin/core/browser/android", "+components/signin/core/browser/android",
"+components/signin/public/identity_manager/android", "+components/signin/public/android",
"+components/spellcheck/browser", "+components/spellcheck/browser",
"+components/viz/common/java", "+components/viz/common/java",
"+jni", "+jni",
......
...@@ -43,7 +43,7 @@ android_library("java") { ...@@ -43,7 +43,7 @@ android_library("java") {
"//components/browser_ui/modaldialog/android:java", "//components/browser_ui/modaldialog/android:java",
"//components/policy/android:policy_java", "//components/policy/android:policy_java",
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//components/signin/public/identity_manager/android:java", "//components/signin/public/android:java",
"//components/url_formatter/android:url_formatter_java", "//components/url_formatter/android:url_formatter_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//mojo/public/java:bindings_java", "//mojo/public/java:bindings_java",
......
...@@ -25,8 +25,8 @@ import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; ...@@ -25,8 +25,8 @@ import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
import org.chromium.components.signin.AccountIdProvider; import org.chromium.components.signin.AccountIdProvider;
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.base.CoreAccountInfo;
import org.chromium.components.signin.identitymanager.ClearAccountsAction; import org.chromium.components.signin.identitymanager.ClearAccountsAction;
import org.chromium.components.signin.identitymanager.CoreAccountInfo;
import org.chromium.components.signin.identitymanager.IdentityManager; 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.metrics.SigninAccessPoint; import org.chromium.components.signin.metrics.SigninAccessPoint;
......
...@@ -20,8 +20,8 @@ import org.chromium.chrome.test.util.browser.signin.SigninTestUtil; ...@@ -20,8 +20,8 @@ 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.identitymanager.CoreAccountId; import org.chromium.components.signin.base.CoreAccountId;
import org.chromium.components.signin.identitymanager.CoreAccountInfo; import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.identitymanager.IdentityManager; 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;
......
...@@ -34,8 +34,8 @@ import org.chromium.base.test.DisableNativeTestRule; ...@@ -34,8 +34,8 @@ import org.chromium.base.test.DisableNativeTestRule;
import org.chromium.base.test.util.JniMocker; import org.chromium.base.test.util.JniMocker;
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.identitymanager.CoreAccountId; import org.chromium.components.signin.base.CoreAccountId;
import org.chromium.components.signin.identitymanager.CoreAccountInfo; import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.identitymanager.IdentityManager; 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.metrics.SigninAccessPoint; import org.chromium.components.signin.metrics.SigninAccessPoint;
......
...@@ -201,7 +201,7 @@ android_library("chrome_java_test_support") { ...@@ -201,7 +201,7 @@ android_library("chrome_java_test_support") {
"//components/policy/android:policy_java_test_support", "//components/policy/android:policy_java_test_support",
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//components/signin/core/browser/android:signin_java_test_support", "//components/signin/core/browser/android:signin_java_test_support",
"//components/signin/public/identity_manager/android:java", "//components/signin/public/android:java",
"//components/sync/android:sync_java", "//components/sync/android:sync_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//content/public/test/android:content_java_test_support", "//content/public/test/android:content_java_test_support",
......
...@@ -4,6 +4,3 @@ include_rules = [ ...@@ -4,6 +4,3 @@ include_rules = [
"+components/sync/test/android/javatests/src/org/chromium/components/sync/test/util", "+components/sync/test/android/javatests/src/org/chromium/components/sync/test/util",
] ]
specific_include_rules = {
"SigninTestUtil.java": ["+components/signin/public/identity_manager/android/java/src/org/chromium/components/signin/identitymanager/OAuth2TokenService.java"]
}
...@@ -324,7 +324,7 @@ test("components_unittests") { ...@@ -324,7 +324,7 @@ test("components_unittests") {
"//components/policy/android:policy_java", "//components/policy/android:policy_java",
"//components/signin/core/browser", "//components/signin/core/browser",
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//components/signin/public/identity_manager/android:java", "//components/signin/public/android:java",
"//components/spellcheck/browser/android:java", "//components/spellcheck/browser/android:java",
"//components/variations/android:variations_java", "//components/variations/android:variations_java",
"//content/public/android:content_java", "//content/public/android:content_java",
......
...@@ -244,7 +244,7 @@ if (is_android) { ...@@ -244,7 +244,7 @@ if (is_android) {
"//base:base_java", "//base:base_java",
"//base:jni_java", "//base:jni_java",
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//components/signin/public/identity_manager/android:java", "//components/signin/public/android:java",
"//components/sync/android:sync_java", "//components/sync/android:sync_java",
"//third_party/android_deps:com_google_protobuf_protobuf_lite_java", "//third_party/android_deps:com_google_protobuf_protobuf_lite_java",
"//third_party/cacheinvalidation:cacheinvalidation_javalib", "//third_party/cacheinvalidation:cacheinvalidation_javalib",
......
...@@ -73,9 +73,9 @@ source_set("identity_manager") { ...@@ -73,9 +73,9 @@ source_set("identity_manager") {
if (is_android) { if (is_android) {
deps += [ deps += [
"android:jni_headers",
"//components/signin/core/browser/android:jni_headers", "//components/signin/core/browser/android:jni_headers",
"//components/signin/internal/base", "//components/signin/internal/base",
"//components/signin/public/android:jni_headers",
] ]
} }
......
...@@ -14,4 +14,7 @@ specific_include_rules = { ...@@ -14,4 +14,7 @@ specific_include_rules = {
"child_account_info_fetcher_android.cc": [ "child_account_info_fetcher_android.cc": [
"+components/signin/core/browser/android/jni_headers/ChildAccountInfoFetcher_jni.h", "+components/signin/core/browser/android/jni_headers/ChildAccountInfoFetcher_jni.h",
], ],
"profile_oauth2_token_service_delegate_android.cc": [
"+components/signin/public/android/jni_headers/ProfileOAuth2TokenServiceDelegate_jni.h",
]
} }
import("//build/config/android/rules.gni")
generate_jni("jni_headers") {
namespace = "signin"
sources = [
"//components/signin/public/identity_manager/android/java/src/org/chromium/components/signin/identitymanager/CoreAccountId.java",
"//components/signin/public/identity_manager/android/java/src/org/chromium/components/signin/identitymanager/CoreAccountInfo.java",
"//components/signin/public/identity_manager/android/java/src/org/chromium/components/signin/identitymanager/IdentityManager.java",
"//components/signin/public/identity_manager/android/java/src/org/chromium/components/signin/identitymanager/IdentityMutator.java",
"//components/signin/public/identity_manager/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate.java",
]
}
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "components/signin/internal/identity_manager/android/jni_headers/ProfileOAuth2TokenServiceDelegate_jni.h" #include "components/signin/public/android/jni_headers/ProfileOAuth2TokenServiceDelegate_jni.h"
#include "components/signin/public/base/account_consistency_method.h" #include "components/signin/public/base/account_consistency_method.h"
#include "components/signin/public/identity_manager/account_info.h" #include "components/signin/public/identity_manager/account_info.h"
#include "google_apis/gaia/gaia_auth_util.h" #include "google_apis/gaia/gaia_auth_util.h"
......
...@@ -72,8 +72,8 @@ class ProfileOAuth2TokenServiceDelegateAndroid ...@@ -72,8 +72,8 @@ class ProfileOAuth2TokenServiceDelegateAndroid
const base::Optional<CoreAccountId>& primary_account_id) override; const base::Optional<CoreAccountId>& primary_account_id) override;
// Resumes the reload of accounts once the account seeding is complete. // Resumes the reload of accounts once the account seeding is complete.
// TODO(crbug.com/934688) Once OAuth2TokenService.java is internalized, use // TODO(crbug.com/934688) Once ProfileOAuth2TokenServiceDelegate.java is
// CoreAccountId instead of String. // internalized, use CoreAccountId instead of String.
void ReloadAllAccountsWithPrimaryAccountAfterSeeding( void ReloadAllAccountsWithPrimaryAccountAfterSeeding(
JNIEnv* env, JNIEnv* env,
const base::android::JavaParamRef<jstring>& account_id); const base::android::JavaParamRef<jstring>& account_id);
......
...@@ -7,7 +7,7 @@ android_library("java") { ...@@ -7,7 +7,7 @@ android_library("java") {
"//components/signin/core/browser/android:java", "//components/signin/core/browser/android:java",
"//net/android:net_java", "//net/android:net_java",
"//third_party/android_deps:android_support_v4_java", "//third_party/android_deps:android_support_v4_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:com_android_support_support_annotations_java",
] ]
srcjar_deps = [ srcjar_deps = [
...@@ -16,8 +16,8 @@ android_library("java") { ...@@ -16,8 +16,8 @@ android_library("java") {
] ]
java_files = [ java_files = [
"java/src/org/chromium/components/signin/identitymanager/CoreAccountId.java", "java/src/org/chromium/components/signin/base/CoreAccountId.java",
"java/src/org/chromium/components/signin/identitymanager/CoreAccountInfo.java", "java/src/org/chromium/components/signin/base/CoreAccountInfo.java",
"java/src/org/chromium/components/signin/identitymanager/IdentityManager.java", "java/src/org/chromium/components/signin/identitymanager/IdentityManager.java",
"java/src/org/chromium/components/signin/identitymanager/IdentityMutator.java", "java/src/org/chromium/components/signin/identitymanager/IdentityMutator.java",
"java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate.java", "java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate.java",
...@@ -26,20 +26,13 @@ android_library("java") { ...@@ -26,20 +26,13 @@ android_library("java") {
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
} }
android_library("javatests") { generate_jni("jni_headers") {
testonly = true namespace = "signin"
deps = [ sources = [
":java", "java/src/org/chromium/components/signin/base/CoreAccountId.java",
"//base:base_java", "java/src/org/chromium/components/signin/base/CoreAccountInfo.java",
"//base:base_java_test_support", "java/src/org/chromium/components/signin/identitymanager/IdentityManager.java",
"//components/signin/core/browser/android:java", "java/src/org/chromium/components/signin/identitymanager/IdentityMutator.java",
"//components/signin/core/browser/android:signin_java_test_support", "java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate.java",
"//third_party/android_deps:com_android_support_support_annotations_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/jsr-305:jsr_305_javalib",
"//third_party/junit",
] ]
java_files = [ "javatests/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java" ]
} }
specific_include_rules = { specific_include_rules = {
"CoreAccountInfo.java": [ "CoreAccountInfo.java": [
"+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountManagerFacade.java" "+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountManagerFacade.java",
], ],
"IdentityManager.java": [ "IdentityManager.java": [
"+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountManagerFacade.java", "+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountManagerFacade.java",
], ],
"ProfileOAuth2TokenServiceDelegate.java": [ "ProfileOAuth2TokenServiceDelegate.java": [
"+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountManagerFacade.java",
"+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountTrackerService.java", "+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountTrackerService.java",
"+components/signin/core/browser/android/java/src/org/chromium/components/signin/ChromeSigninController.java", "+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountManagerFacade.java",
"+components/signin/core/browser/android/java/src/org/chromium/components/signin/AuthException.java", "+components/signin/core/browser/android/java/src/org/chromium/components/signin/AuthException.java",
"+components/signin/core/browser/android/java/src/org/chromium/components/signin/ChromeSigninController.java",
], ],
"ProfileOAuth2TokenServiceDelegateTest.java": [ "ProfileOAuth2TokenServiceDelegateTest.java": [
"+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountManagerFacade.java", "+components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountManagerFacade.java",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.components.signin.identitymanager; package org.chromium.components.signin.base;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.components.signin.identitymanager; package org.chromium.components.signin.base;
import android.accounts.Account; import android.accounts.Account;
......
...@@ -14,6 +14,8 @@ import org.chromium.base.ObserverList; ...@@ -14,6 +14,8 @@ import org.chromium.base.ObserverList;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.components.signin.AccountManagerFacade; import org.chromium.components.signin.AccountManagerFacade;
import org.chromium.components.signin.base.CoreAccountId;
import org.chromium.components.signin.base.CoreAccountInfo;
/** /**
* IdentityManager provides access to native IdentityManager's public API to java components. * IdentityManager provides access to native IdentityManager's public API to java components.
......
...@@ -8,6 +8,7 @@ import androidx.annotation.Nullable; ...@@ -8,6 +8,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.components.signin.base.CoreAccountId;
import org.chromium.components.signin.metrics.SignoutDelete; import org.chromium.components.signin.metrics.SignoutDelete;
import org.chromium.components.signin.metrics.SignoutReason; import org.chromium.components.signin.metrics.SignoutReason;
......
...@@ -71,8 +71,8 @@ public final class ProfileOAuth2TokenServiceDelegate ...@@ -71,8 +71,8 @@ public final class ProfileOAuth2TokenServiceDelegate
private final AccountManagerFacade mAccountManagerFacade; private final AccountManagerFacade mAccountManagerFacade;
private boolean mPendingUpdate; private boolean mPendingUpdate;
// TODO(crbug.com/934688) Once OAuth2TokenService.java is internalized, use CoreAccountId // TODO(crbug.com/934688) Once ProfileOAuth2TokenServiceDelegate.java is internalized, use
// instead of String. // CoreAccountId instead of String.
private String mPendingUpdateAccountId; private String mPendingUpdateAccountId;
@VisibleForTesting @VisibleForTesting
......
...@@ -66,8 +66,7 @@ source_set("identity_manager") { ...@@ -66,8 +66,7 @@ source_set("identity_manager") {
} }
if (is_android) { if (is_android) {
deps += deps += [ "//components/signin/public/android:jni_headers" ]
[ "//components/signin/internal/identity_manager/android:jni_headers" ]
} }
allow_circular_includes_from = [ allow_circular_includes_from = [
......
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "components/signin/internal/identity_manager/android/jni_headers/CoreAccountId_jni.h" #include "components/signin/public/android/jni_headers/CoreAccountId_jni.h"
#include "components/signin/internal/identity_manager/android/jni_headers/CoreAccountInfo_jni.h" #include "components/signin/public/android/jni_headers/CoreAccountInfo_jni.h"
#endif #endif
namespace { namespace {
......
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "components/signin/internal/identity_manager/android/jni_headers/IdentityManager_jni.h"
#include "components/signin/internal/identity_manager/profile_oauth2_token_service_delegate.h" #include "components/signin/internal/identity_manager/profile_oauth2_token_service_delegate.h"
#include "components/signin/public/android/jni_headers/IdentityManager_jni.h"
#endif #endif
#if BUILDFLAG(ENABLE_DICE_SUPPORT) #if BUILDFLAG(ENABLE_DICE_SUPPORT)
...@@ -436,8 +436,7 @@ IdentityManager::GetAccountsWithRefreshTokens(JNIEnv* env) const { ...@@ -436,8 +436,7 @@ IdentityManager::GetAccountsWithRefreshTokens(JNIEnv* env) const {
base::android::ScopedJavaLocalRef<jclass> coreaccountinfo_clazz = base::android::ScopedJavaLocalRef<jclass> coreaccountinfo_clazz =
base::android::GetClass( base::android::GetClass(
env, env, "org/chromium/components/signin/base/CoreAccountInfo");
"org/chromium/components/signin/identitymanager/CoreAccountInfo");
base::android::ScopedJavaLocalRef<jobjectArray> array( base::android::ScopedJavaLocalRef<jobjectArray> array(
env, env->NewObjectArray(accounts.size(), coreaccountinfo_clazz.obj(), env, env->NewObjectArray(accounts.size(), coreaccountinfo_clazz.obj(),
nullptr)); nullptr));
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "components/signin/internal/identity_manager/android/jni_headers/IdentityMutator_jni.h" #include "components/signin/public/android/jni_headers/IdentityMutator_jni.h"
#include "components/signin/public/identity_manager/account_info.h" #include "components/signin/public/identity_manager/account_info.h"
#endif #endif
......
...@@ -52,7 +52,7 @@ test("services_unittests") { ...@@ -52,7 +52,7 @@ test("services_unittests") {
if (is_android) { if (is_android) {
deps += [ deps += [
"//components/signin/public/identity_manager/android:java", "//components/signin/public/android:java",
"//services/data_decoder/public/cpp/android:safe_json_java", "//services/data_decoder/public/cpp/android:safe_json_java",
"//services/device:java", "//services/device:java",
"//services/identity:java", "//services/identity:java",
......
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