Commit 3bcb3d34 authored by Tanisha Mandre's avatar Tanisha Mandre Committed by Commit Bot

Add Credit Card Scanner View Controller Coordinator

- Implement Coordinator which uses the same Presenting delegate as the QR Scanner.

Bug: 989951

Change-Id: I6a48b71313825b1139d0d0f237fd0c91125ed487
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1730906
Commit-Queue: Tanisha Mandre <tanishamandre@google.com>
Reviewed-by: default avatarGauthier Ambard <gambard@chromium.org>
Reviewed-by: default avatarJavier Ernesto Flores Robles <javierrobles@chromium.org>
Cr-Commit-Position: refs/heads/master@{#689113}
parent 3f7e3611
......@@ -109,7 +109,7 @@
}
strongSelf.viewportRect = viewportRect;
if (strongSelf.metadataOutput) {
[strongSelf.metadataOutput setRectOfInterest:_viewportRect];
//[strongSelf.metadataOutput setRectOfInterest:_viewportRect];
}
});
}
......
......@@ -14,6 +14,7 @@
#include "ios/chrome/browser/ui/scanner/scanner_presenting.h"
#include "ios/chrome/browser/ui/scanner/scanner_transitioning_delegate.h"
#include "ios/chrome/browser/ui/scanner/scanner_view.h"
#import "ios/chrome/browser/ui/util/ui_util.h"
#include "ios/chrome/grit/ios_strings.h"
#include "ui/base/l10n/l10n_util.h"
......@@ -79,6 +80,11 @@ using base::UserMetricsAction;
]];
AVCaptureVideoPreviewLayer* previewLayer = [self.scannerView getPreviewLayer];
// CGRect rect = [self.scannerView frame];
// NSLog(@"%@", NSStringFromCGRect(rect));
previewLayer.frame = CGRectMakeCenteredRectInFrame(
[self.scannerView frame].size, [self.scannerView viewportSize]);
switch ([self.cameraController getAuthorizationStatus]) {
case AVAuthorizationStatusNotDetermined:
[self.cameraController
......
......@@ -39,7 +39,7 @@
}
- (CGRect)viewportRectOfInterest {
DCHECK(CGPointEqualToPoint(self.frame.origin, CGPointZero));
// DCHECK(CGPointEqualToPoint(self.frame.origin, CGPointZero));
CGRect viewportRect =
CGRectMakeCenteredRectInFrame(self.frame.size, _viewportSize);
AVCaptureVideoPreviewLayer* layer = [self previewLayer];
......
......@@ -11,6 +11,7 @@
#import "ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_mediator.h"
#import "ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_mediator_delegate.h"
#import "ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_view_controller.h"
#import "ios/chrome/browser/ui/settings/credit_card_scanner/credit_card_scanner_coordinator.h"
#include "ios/chrome/grit/ios_strings.h"
#include "ui/base/l10n/l10n_util_mac.h"
......@@ -23,6 +24,10 @@
// Displays message for invalid credit card data.
@property(nonatomic, strong) AlertCoordinator* alertCoordinator;
// The Credit Card Scanner Coordinator.
@property(nonatomic, strong)
CreditCardScannerCoordinator* creditCardScannerCoordinator;
// The view controller attached to this coordinator.
@property(nonatomic, strong)
AutofillAddCreditCardViewController* addCreditCardViewController;
......@@ -56,6 +61,8 @@
}
- (void)stop {
[self.creditCardScannerCoordinator stop];
self.creditCardScannerCoordinator = nil;
[self.addCreditCardViewController.navigationController
dismissViewControllerAnimated:YES
completion:nil];
......@@ -83,6 +90,13 @@
IDS_IOS_ADD_CREDIT_CARD_INVALID_EXPIRATION_DATE_ALERT)];
}
- (void)creditCardMediatorShowScanner:(AutofillAddCreditCardMediator*)mediator {
self.creditCardScannerCoordinator = [[CreditCardScannerCoordinator alloc]
initWithBaseViewController:self.addCreditCardViewController];
[self.creditCardScannerCoordinator start];
}
#pragma mark - Helper Methods
// Shows alert with received message by |AlertCoordinator|.
......
......@@ -45,7 +45,8 @@
#pragma mark - AddCreditCardViewControllerDelegate
- (void)addCreditCardViewController:(UIViewController*)viewController
- (void)addCreditCardViewController:
(AutofillAddCreditCardViewController*)viewController
addCreditCardWithHolderName:(NSString*)cardHolderName
cardNumber:(NSString*)cardNumber
expirationMonth:(NSString*)expirationMonth
......@@ -94,10 +95,16 @@
[self.addCreditCardMediatorDelegate creditCardMediatorDidFinish:self];
}
- (void)addCreditCardViewControllerDidCancel:(UIViewController*)viewController {
- (void)addCreditCardViewControllerDidCancel:
(AutofillAddCreditCardViewController*)viewController {
[self.addCreditCardMediatorDelegate creditCardMediatorDidFinish:self];
}
- (void)addCreditCardViewControllerDidUseCamera:
(AutofillAddCreditCardViewController*)viewController {
[self.addCreditCardMediatorDelegate creditCardMediatorShowScanner:self];
}
#pragma mark - Private
// Updates received credit card with received data.
......
......@@ -18,6 +18,9 @@
- (void)creditCardMediatorHasInvalidExpirationDate:
(AutofillAddCreditCardMediator*)mediator;
// Notifies that the credit card scanner needs to be shown.
- (void)creditCardMediatorShowScanner:(AutofillAddCreditCardMediator*)mediator;
// Notifies that the credit card is valid or the user cancel the view
// controller.
- (void)creditCardMediatorDidFinish:(AutofillAddCreditCardMediator*)mediator;
......
......@@ -7,8 +7,6 @@
#include "base/feature_list.h"
#include "base/mac/foundation_util.h"
#import "ios/chrome/browser/ui/autofill/cells/autofill_edit_item.h"
#include "ios/chrome/browser/ui/scanner/scanner_presenting.h"
#import "ios/chrome/browser/ui/settings/credit_card_scanner/credit_card_scanner_view_controller.h"
#import "ios/chrome/browser/ui/table_view/cells/table_view_text_edit_item.h"
#import "ios/chrome/browser/ui/table_view/cells/table_view_text_item.h"
#import "ios/chrome/browser/ui/table_view/chrome_table_view_controller.h"
......@@ -40,7 +38,7 @@ typedef NS_ENUM(NSInteger, ItemType) {
} // namespace
@interface AutofillAddCreditCardViewController () <ScannerPresenting>
@interface AutofillAddCreditCardViewController ()
// The AddCreditCardViewControllerDelegate for this ViewController.
@property(nonatomic, weak) id<AddCreditCardViewControllerDelegate> delegate;
......@@ -240,19 +238,7 @@ typedef NS_ENUM(NSInteger, ItemType) {
// Presents the credit card scanner camera screen.
- (void)handleCameraButton {
CreditCardScannerViewController* scannerController =
[[CreditCardScannerViewController alloc]
initWithPresentationProvider:self];
scannerController.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:scannerController animated:YES completion:nil];
}
#pragma mark - ScannerPresenting
- (void)dismissScannerViewController:(UIViewController*)controller
completion:(void (^)(void))completion {
[self dismissViewControllerAnimated:YES completion:completion];
[self.delegate addCreditCardViewControllerDidUseCamera:self];
}
@end
......@@ -5,13 +5,14 @@
#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_AUTOFILL_ADD_CREDIT_CARD_VIEW_CONTROLLER_DELEGATE_H_
#define IOS_CHROME_BROWSER_UI_SETTINGS_AUTOFILL_AUTOFILL_ADD_CREDIT_CARD_VIEW_CONTROLLER_DELEGATE_H_
@class UIViewController;
@class AutofillAddCreditCardViewController;
// Delegate manages adding a new credit card.
@protocol AddCreditCardViewControllerDelegate
// Receives a credit card data. Implement this method to save a new credit card.
- (void)addCreditCardViewController:(UIViewController*)viewController
- (void)addCreditCardViewController:
(AutofillAddCreditCardViewController*)viewController
addCreditCardWithHolderName:(NSString*)cardHolderName
cardNumber:(NSString*)cardNumber
expirationMonth:(NSString*)expirationMonth
......@@ -19,7 +20,12 @@
// Notifies the class which conform this delegate for cancel button tap in
// received view controller.
- (void)addCreditCardViewControllerDidCancel:(UIViewController*)viewController;
- (void)addCreditCardViewControllerDidCancel:
(AutofillAddCreditCardViewController*)viewController;
// Notifies the class which conforms to this delegate to 'Use Camera'
- (void)addCreditCardViewControllerDidUseCamera:
(AutofillAddCreditCardViewController*)viewController;
@end
......
......@@ -8,6 +8,8 @@ source_set("credit_card_scanner") {
"credit_card_scanner_camera_controller.h",
"credit_card_scanner_camera_controller.mm",
"credit_card_scanner_camera_controller_delegate.h",
"credit_card_scanner_coordinator.h",
"credit_card_scanner_coordinator.mm",
"credit_card_scanner_view.h",
"credit_card_scanner_view.mm",
"credit_card_scanner_view_controller.h",
......@@ -15,6 +17,7 @@ source_set("credit_card_scanner") {
]
deps = [
"//ios/chrome/app/strings",
"//ios/chrome/browser/ui/coordinators:chrome_coordinators",
"//ios/chrome/browser/ui/qr_scanner",
"//ios/chrome/browser/ui/scanner",
"//ios/chrome/browser/ui/util",
......
// Copyright 2019 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_SETTINGS_CREDIT_CARD_SCANNER_CREDIT_CARD_SCANNER_COORDINATOR_H_
#define IOS_CHROME_BROWSER_UI_SETTINGS_CREDIT_CARD_SCANNER_CREDIT_CARD_SCANNER_COORDINATOR_H_
#import "ios/chrome/browser/ui/coordinators/chrome_coordinator.h"
// The coordinator for the Credit Card Scanner screen.
@interface CreditCardScannerCoordinator : ChromeCoordinator
@end
#endif // IOS_CHROME_BROWSER_UI_SETTINGS_CREDIT_CARD_SCANNER_CREDIT_CARD_SCANNER_COORDINATOR_H_
// Copyright 2019 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/settings/credit_card_scanner/credit_card_scanner_coordinator.h"
#import "ios/chrome/browser/ui/scanner/scanner_presenting.h"
#import "ios/chrome/browser/ui/settings/credit_card_scanner/credit_card_scanner_view_controller.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@interface CreditCardScannerCoordinator () <ScannerPresenting>
// The view controller attached to this coordinator.
@property(nonatomic, strong) UIViewController* viewController;
@end
@implementation CreditCardScannerCoordinator
#pragma mark - ChromeCoordinator
- (void)start {
[super start];
CreditCardScannerViewController* creditCardScannerViewController =
[[CreditCardScannerViewController alloc]
initWithPresentationProvider:self];
creditCardScannerViewController.modalPresentationStyle =
UIModalPresentationFullScreen;
self.viewController = creditCardScannerViewController;
[self.baseViewController presentViewController:creditCardScannerViewController
animated:YES
completion:nil];
}
- (void)stop {
[super stop];
[self.viewController dismissViewControllerAnimated:YES completion:nil];
self.viewController = nil;
}
#pragma mark - ScannerPresenting
- (void)dismissScannerViewController:(UIViewController*)controller
completion:(void (^)(void))completion {
[self stop];
}
@end
......@@ -7,8 +7,7 @@
#include "base/logging.h"
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#import "ios/chrome/browser/ui/qr_scanner/qr_scanner_camera_controller.h"
#import "ios/chrome/browser/ui/scanner/scanner_transitioning_delegate.h"
#import "ios/chrome/browser/ui/settings/credit_card_scanner/credit_card_scanner_camera_controller.h"
#include "ios/chrome/browser/ui/settings/credit_card_scanner/credit_card_scanner_view.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
......
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