Commit e679937c authored by Ewann's avatar Ewann Committed by Commit Bot

Adds site security view to page info

The coordinator now handle PageInfoNavigationCommands which contains
commands related to the page info navigation.
Now by pressing "site security" item, on the root of page info,
a new view related to the site security is presented.

Bug: 1038919
Change-Id: I174a011efd532e46187c6403c7a19b79923e8da3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2089818
Commit-Queue: Ewann Pellé <ewannpv@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Reviewed-by: default avatarGauthier Ambard <gambard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#747673}
parent 9b4709d0
...@@ -12,6 +12,9 @@ source_set("page_info") { ...@@ -12,6 +12,9 @@ source_set("page_info") {
"page_info_consumer.h", "page_info_consumer.h",
"page_info_description.h", "page_info_description.h",
"page_info_description.mm", "page_info_description.mm",
"page_info_navigation_commands.h",
"page_info_site_security_view_controller.h",
"page_info_site_security_view_controller.mm",
"page_info_view_controller.h", "page_info_view_controller.h",
"page_info_view_controller.mm", "page_info_view_controller.mm",
] ]
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include "ios/chrome/browser/main/browser.h" #include "ios/chrome/browser/main/browser.h"
#import "ios/chrome/browser/ui/commands/command_dispatcher.h" #import "ios/chrome/browser/ui/commands/command_dispatcher.h"
#import "ios/chrome/browser/ui/page_info/page_info_mediator.h" #import "ios/chrome/browser/ui/page_info/page_info_mediator.h"
#import "ios/chrome/browser/ui/page_info/page_info_navigation_commands.h"
#import "ios/chrome/browser/ui/page_info/page_info_site_security_view_controller.h"
#import "ios/chrome/browser/ui/page_info/page_info_view_controller.h" #import "ios/chrome/browser/ui/page_info/page_info_view_controller.h"
#import "ios/chrome/browser/web_state_list/web_state_list.h" #import "ios/chrome/browser/web_state_list/web_state_list.h"
...@@ -15,41 +17,64 @@ ...@@ -15,41 +17,64 @@
#error "This file requires ARC support." #error "This file requires ARC support."
#endif #endif
@interface PageInfoCoordinator () @interface PageInfoCoordinator () <PageInfoNavigationCommands>
@property(nonatomic, strong) CommandDispatcher* dispatcher;
@property(nonatomic, strong) PageInfoViewController* viewController; @property(nonatomic, strong) PageInfoViewController* viewController;
@property(nonatomic, strong) PageInfoMediator* mediator; @property(nonatomic, strong) PageInfoMediator* mediator;
@property(nonatomic, strong) UINavigationController* navigationController;
@end @end
@implementation PageInfoCoordinator @implementation PageInfoCoordinator
@synthesize presentationProvider = _presentationProvider; @synthesize presentationProvider = _presentationProvider;
@synthesize navigationController = _navigationController;
#pragma mark - ChromeCoordinator #pragma mark - ChromeCoordinator
- (void)start { - (void)start {
self.dispatcher = self.browser->GetCommandDispatcher();
[self.dispatcher
startDispatchingToTarget:self
forProtocol:@protocol(PageInfoNavigationCommands)];
self.viewController = self.viewController =
[[PageInfoViewController alloc] initWithStyle:UITableViewStylePlain]; [[PageInfoViewController alloc] initWithStyle:UITableViewStylePlain];
self.viewController.handler =
HandlerForProtocol(self.dispatcher, PageInfoNavigationCommands);
web::WebState* webState = web::WebState* webState =
self.browser->GetWebStateList()->GetActiveWebState(); self.browser->GetWebStateList()->GetActiveWebState();
self.mediator = [[PageInfoMediator alloc] initWithWebState:webState]; self.mediator = [[PageInfoMediator alloc] initWithWebState:webState];
self.mediator.consumer = self.viewController; self.mediator.consumer = self.viewController;
UINavigationController* navController = [[UINavigationController alloc] self.navigationController = [[UINavigationController alloc]
initWithRootViewController:self.viewController]; initWithRootViewController:self.viewController];
[self.baseViewController presentViewController:navController [self.baseViewController presentViewController:self.navigationController
animated:YES animated:YES
completion:nil]; completion:nil];
} }
- (void)stop { - (void)stop {
[self.dispatcher stopDispatchingToTarget:self];
[self.baseViewController.presentingViewController [self.baseViewController.presentingViewController
dismissViewControllerAnimated:YES dismissViewControllerAnimated:YES
completion:nil]; completion:nil];
self.dispatcher = nil;
self.navigationController = nil;
self.mediator.consumer = nil; self.mediator.consumer = nil;
self.mediator = nil; self.mediator = nil;
self.viewController = nil; self.viewController = nil;
} }
#pragma mark - PageInfoNavigationCommands
- (void)showSiteSecurityInfo {
PageInfoSiteSecurityViewController* viewController =
[[PageInfoSiteSecurityViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
}
@end @end
// Copyright 2020 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_PAGE_INFO_PAGE_INFO_NAVIGATION_COMMANDS_H_
#define IOS_CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_NAVIGATION_COMMANDS_H_
// Commands related to the Page Info navigation inside the page info view
// controller.
@protocol PageInfoNavigationCommands
// Shows the site security information.
- (void)showSiteSecurityInfo;
@end
#endif // IOS_CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_NAVIGATION_COMMANDS_H_
// Copyright 2020 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_PAGE_INFO_PAGE_INFO_SITE_SECURITY_VIEW_CONTROLLER_H_
#define IOS_CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_SITE_SECURITY_VIEW_CONTROLLER_H_
#import <UIKit/UIKit.h>
// View Controller for displaying the site security.
@interface PageInfoSiteSecurityViewController : UIViewController
@end
#endif // IOS_CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_SITE_SECURITY_VIEW_CONTROLLER_H_
// Copyright 2020 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/page_info/page_info_site_security_view_controller.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@implementation PageInfoSiteSecurityViewController
#pragma mark - UIViewController
- (void)viewDidLoad {
// TODO(crbug.com/1038919): Implement this.
[super viewDidLoad];
self.view.backgroundColor = [UIColor redColor];
}
@end
...@@ -10,9 +10,14 @@ ...@@ -10,9 +10,14 @@
#import "ios/chrome/browser/ui/page_info/page_info_consumer.h" #import "ios/chrome/browser/ui/page_info/page_info_consumer.h"
#import "ios/chrome/browser/ui/table_view/chrome_table_view_controller.h" #import "ios/chrome/browser/ui/table_view/chrome_table_view_controller.h"
@protocol PageInfoNavigationCommands;
// View Controller for displaying the page info. // View Controller for displaying the page info.
@interface PageInfoViewController : ChromeTableViewController <PageInfoConsumer> @interface PageInfoViewController : ChromeTableViewController <PageInfoConsumer>
// Handler used to navigate inside the page info.
@property(nonatomic, weak) id<PageInfoNavigationCommands> handler;
@end @end
#endif // IOS_CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_VIEW_CONTROLLER_H_ #endif // IOS_CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_VIEW_CONTROLLER_H_
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#import "ios/chrome/browser/ui/page_info/page_info_view_controller.h" #import "ios/chrome/browser/ui/page_info/page_info_view_controller.h"
#import "ios/chrome/browser/ui/page_info/page_info_navigation_commands.h"
#import "ios/chrome/browser/ui/table_view/cells/table_view_detail_icon_item.h" #import "ios/chrome/browser/ui/table_view/cells/table_view_detail_icon_item.h"
#include "ios/chrome/grit/ios_strings.h" #include "ios/chrome/grit/ios_strings.h"
#include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util.h"
...@@ -55,4 +56,20 @@ typedef NS_ENUM(NSInteger, ItemType) { ...@@ -55,4 +56,20 @@ typedef NS_ENUM(NSInteger, ItemType) {
[self.tableView reloadData]; [self.tableView reloadData];
} }
#pragma mark - UITableViewDelegate
- (void)tableView:(UITableView*)tableView
didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
NSInteger itemType = [self.tableViewModel itemTypeForIndexPath:indexPath];
switch (itemType) {
case ItemTypeSecurity: {
[self.handler showSiteSecurityInfo];
break;
}
default:
break;
}
}
@end @end
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