[iOS] Move SigninCompletionInfo out of signin_constants.h.

Follow-up to crrev.com/c/2960457.

Bug: N/A
Change-Id: I32c904db31883d79f8f3aae70207fa6bf131d59e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2963993
Commit-Queue: Nohemi Fernandez <fernandex@chromium.org>
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#892644}
diff --git a/ios/chrome/browser/ui/authentication/signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/BUILD.gn
index 7a39763..91f2b21 100644
--- a/ios/chrome/browser/ui/authentication/signin/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/signin/BUILD.gn
@@ -14,6 +14,7 @@
 source_set("signin_headers") {
   configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
+    "signin_completion_info.h",
     "signin_coordinator.h",
     "signin_utils.h",
   ]
@@ -36,6 +37,7 @@
 source_set("signin_impl") {
   configs += [ "//build/config/compiler:enable_arc" ]
   sources = [
+    "signin_completion_info.mm",
     "signin_coordinator.mm",
     "signin_utils.mm",
   ]
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_completion_info.h b/ios/chrome/browser/ui/authentication/signin/signin_completion_info.h
new file mode 100644
index 0000000..b83913f
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/signin/signin_completion_info.h
@@ -0,0 +1,46 @@
+// Copyright 2021 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.
+
+#ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_SIGNIN_COMPLETION_INFO_H_
+#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_SIGNIN_COMPLETION_INFO_H_
+
+#import "ios/chrome/browser/ui/authentication/signin/signin_constants.h"
+
+// Embed different values related to the sign-in completion.
+@interface SigninCompletionInfo : NSObject
+
+// Returns an instance with |identity| and no completion action.
++ (instancetype)signinCompletionInfoWithIdentity:(ChromeIdentity*)identity;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+// Designated initializer.
+// |identity| is the identity chosen by the user to sign-in.
+// |signinCompletionAction| is the action required to complete the sign-in.
+// If the |signinCompletionAction| is SigninCompletionActionOpenCompletionURL, a
+// completionURL must be added.
+- (instancetype)initWithIdentity:(ChromeIdentity*)identity
+          signinCompletionAction:(SigninCompletionAction)signinCompletionAction
+    NS_DESIGNATED_INITIALIZER;
+
+// Identity used by the user to sign-in.
+@property(nonatomic, strong, readonly) ChromeIdentity* identity;
+// Action to take to finish the sign-in. This action is in charged of the
+// SigninCoordinator's owner.
+@property(nonatomic, assign, readonly)
+    SigninCompletionAction signinCompletionAction;
+// URL to be opened. Optional, only used when signinCompletionAction is
+// SigninCompletionActionOpenCompletionURL.
+@property(nonatomic, assign) const GURL& completionURL;
+
+@end
+
+// Called when the sign-in dialog is closed.
+// |result| is the sign-in result state.
+// |signinCompletionInfo| different values related to the sign-in, see
+// SigninCompletionInfo class.
+using SigninCoordinatorCompletionCallback =
+    void (^)(SigninCoordinatorResult result, SigninCompletionInfo* info);
+
+#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_SIGNIN_COMPLETION_INFO_H_
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_completion_info.mm b/ios/chrome/browser/ui/authentication/signin/signin_completion_info.mm
new file mode 100644
index 0000000..8e2b81e9
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/signin/signin_completion_info.mm
@@ -0,0 +1,44 @@
+// Copyright 2021 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.
+
+#import "ios/chrome/browser/ui/authentication/signin/signin_completion_info.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+@implementation SigninCompletionInfo {
+  GURL _completionURL;
+}
+
++ (instancetype)signinCompletionInfoWithIdentity:(ChromeIdentity*)identity {
+  return [[SigninCompletionInfo alloc]
+            initWithIdentity:identity
+      signinCompletionAction:SigninCompletionActionNone];
+}
+
+- (instancetype)initWithIdentity:(ChromeIdentity*)identity
+          signinCompletionAction:
+              (SigninCompletionAction)signinCompletionAction {
+  self = [super init];
+  if (self) {
+    _identity = identity;
+    _signinCompletionAction = signinCompletionAction;
+  }
+  return self;
+}
+
+- (const GURL&)completionURL {
+  return _completionURL;
+}
+
+- (void)setCompletionURL:(const GURL&)completionURL {
+  if (_completionURL == completionURL)
+    return;
+  DCHECK(completionURL.is_valid());
+  DCHECK(_signinCompletionAction == SigninCompletionActionOpenCompletionURL);
+  _completionURL = completionURL;
+}
+
+@end
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_constants.h b/ios/chrome/browser/ui/authentication/signin/signin_constants.h
index 9b924b4e..7978b2a 100644
--- a/ios/chrome/browser/ui/authentication/signin/signin_constants.h
+++ b/ios/chrome/browser/ui/authentication/signin/signin_constants.h
@@ -62,40 +62,4 @@
   SigninCompletionActionOpenCompletionURL,
 };
 
-// Embed different values related to the sign-in completion.
-@interface SigninCompletionInfo : NSObject
-
-// Returns an instance with |identity| and no completion action.
-+ (instancetype)signinCompletionInfoWithIdentity:(ChromeIdentity*)identity;
-
-- (instancetype)init NS_UNAVAILABLE;
-
-// Designated initializer.
-// |identity| is the identity chosen by the user to sign-in.
-// |signinCompletionAction| is the action required to complete the sign-in.
-// If the |signinCompletionAction| is SigninCompletionActionOpenCompletionURL, a
-// completionURL must be added.
-- (instancetype)initWithIdentity:(ChromeIdentity*)identity
-          signinCompletionAction:(SigninCompletionAction)signinCompletionAction
-    NS_DESIGNATED_INITIALIZER;
-
-// Identity used by the user to sign-in.
-@property(nonatomic, strong, readonly) ChromeIdentity* identity;
-// Action to take to finish the sign-in. This action is in charged of the
-// SigninCoordinator's owner.
-@property(nonatomic, assign, readonly)
-    SigninCompletionAction signinCompletionAction;
-// URL to be opened. Optional, only used when signinCompletionAction is
-// SigninCompletionActionOpenCompletionURL.
-@property(nonatomic, assign) GURL completionURL;
-
-@end
-
-// Called when the sign-in dialog is closed.
-// |result| is the sign-in result state.
-// |signinCompletionInfo| different values related to the sign-in, see
-// SigninCompletionInfo class.
-using SigninCoordinatorCompletionCallback =
-    void (^)(SigninCoordinatorResult result, SigninCompletionInfo* info);
-
 #endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_SIGNIN_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_constants.mm b/ios/chrome/browser/ui/authentication/signin/signin_constants.mm
index 1327c8a..8d9ab27 100644
--- a/ios/chrome/browser/ui/authentication/signin/signin_constants.mm
+++ b/ios/chrome/browser/ui/authentication/signin/signin_constants.mm
@@ -20,32 +20,3 @@
     @"kWebSigninAccessibilityIdentifier";
 NSString* const kWebSigninContinueAsButtonAccessibilityIdentifier =
     @"kWebSigninContinueAsButtonAccessibilityIdentifier";
-
-@implementation SigninCompletionInfo
-
-+ (instancetype)signinCompletionInfoWithIdentity:(ChromeIdentity*)identity {
-  return [[SigninCompletionInfo alloc]
-            initWithIdentity:identity
-      signinCompletionAction:SigninCompletionActionNone];
-}
-
-- (instancetype)initWithIdentity:(ChromeIdentity*)identity
-          signinCompletionAction:
-              (SigninCompletionAction)signinCompletionAction {
-  self = [super init];
-  if (self) {
-    _identity = identity;
-    _signinCompletionAction = signinCompletionAction;
-  }
-  return self;
-}
-
-- (void)setCompletionURL:(GURL)completionURL {
-  if (_completionURL == completionURL)
-    return;
-  DCHECK(completionURL.is_valid());
-  DCHECK(_signinCompletionAction == SigninCompletionActionOpenCompletionURL);
-  _completionURL = completionURL;
-}
-
-@end
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_coordinator.h b/ios/chrome/browser/ui/authentication/signin/signin_coordinator.h
index db3c89b9..1f55406 100644
--- a/ios/chrome/browser/ui/authentication/signin/signin_coordinator.h
+++ b/ios/chrome/browser/ui/authentication/signin/signin_coordinator.h
@@ -9,6 +9,7 @@
 
 #import "base/ios/block_types.h"
 #import "components/signin/public/base/signin_metrics.h"
+#import "ios/chrome/browser/ui/authentication/signin/signin_completion_info.h"
 #import "ios/chrome/browser/ui/authentication/signin/signin_constants.h"
 #import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h"