Chromium Code Reviews| Index: ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm |
| diff --git a/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm b/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm |
| index 9f6ece6fef6f8f750012599bdc69ebbbe1f08d6e..bfe82b4688ae79fc03d07007b4ba9dcff4fc6eb4 100644 |
| --- a/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm |
| +++ b/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm |
| @@ -14,10 +14,12 @@ |
| #include "components/translate/core/browser/translate_pref_names.h" |
| #include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
| #include "ios/chrome/browser/content_settings/host_content_settings_map_factory.h" |
| +#include "ios/chrome/browser/experimental_flags.h" |
| #import "ios/chrome/browser/prefs/pref_observer_bridge.h" |
| #import "ios/chrome/browser/ui/collection_view/cells/collection_view_detail_item.h" |
| #import "ios/chrome/browser/ui/collection_view/collection_view_model.h" |
| #import "ios/chrome/browser/ui/settings/block_popups_collection_view_controller.h" |
| +#import "ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.h" |
| #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" |
| #import "ios/chrome/browser/ui/settings/translate_collection_view_controller.h" |
| #import "ios/chrome/browser/ui/settings/utils/content_setting_backed_boolean.h" |
| @@ -40,6 +42,7 @@ typedef NS_ENUM(NSInteger, SectionIdentifier) { |
| typedef NS_ENUM(NSInteger, ItemType) { |
| ItemTypeSettingsBlockPopups = kItemTypeEnumZero, |
| ItemTypeSettingsTranslate, |
| + ItemTypeSettingsComposeEmail, |
| }; |
| } // namespace |
| @@ -54,9 +57,12 @@ typedef NS_ENUM(NSInteger, ItemType) { |
| // The observable boolean that binds to the "Disable Popups" setting state. |
| ContentSettingBackedBoolean* _disablePopupsSetting; |
| + MailtoURLRewriter* _mailtoURLRewriter; |
|
jif
2017/05/11 14:03:58
optional:
add comment
pkl (ping after 24h if needed)
2017/05/11 17:23:16
Done.
|
| + |
| // Updatable Items |
| CollectionViewDetailItem* _blockPopupsDetailItem; |
| CollectionViewDetailItem* _translateDetailItem; |
| + CollectionViewDetailItem* _composeEmailDetailItem; |
| } |
| // Returns the value for the default setting with ID |settingID|. |
| @@ -65,6 +71,7 @@ typedef NS_ENUM(NSInteger, ItemType) { |
| // Helpers to create collection view items. |
| - (id)blockPopupsItem; |
| - (id)translateItem; |
| +- (id)composeEmailItem; |
| @end |
| @@ -94,6 +101,11 @@ typedef NS_ENUM(NSInteger, ItemType) { |
| inverted:YES]; |
| [_disablePopupsSetting setObserver:self]; |
| + if (!experimental_flags::IsNativeAppLauncherEnabled()) { |
| + _mailtoURLRewriter = [[MailtoURLRewriter alloc] initWithStandardHandlers]; |
| + [_mailtoURLRewriter setObserver:self]; |
| + } |
| + |
| [self loadModel]; |
| } |
| return self; |
| @@ -101,6 +113,7 @@ typedef NS_ENUM(NSInteger, ItemType) { |
| - (void)dealloc { |
| [_disablePopupsSetting setObserver:nil]; |
| + [_mailtoURLRewriter setObserver:nil]; |
|
jif
2017/05/11 14:03:58
This is not necessary.
Filed a bug about removing
pkl (ping after 24h if needed)
2017/05/11 17:23:16
Removed. Thanks.
|
| } |
| - (instancetype)init { |
| @@ -117,6 +130,11 @@ typedef NS_ENUM(NSInteger, ItemType) { |
| toSectionWithIdentifier:SectionIdentifierSettings]; |
| [model addItem:[self translateItem] |
| toSectionWithIdentifier:SectionIdentifierSettings]; |
| + if (!experimental_flags::IsNativeAppLauncherEnabled() && |
| + [[_mailtoURLRewriter defaultHandlers] count] > 1) { |
| + [model addItem:[self composeEmailItem] |
| + toSectionWithIdentifier:SectionIdentifierSettings]; |
| + } |
| } |
| - (CollectionViewItem*)blockPopupsItem { |
| @@ -147,6 +165,18 @@ typedef NS_ENUM(NSInteger, ItemType) { |
| return _translateDetailItem; |
| } |
| +- (CollectionViewItem*)composeEmailItem { |
| + _composeEmailDetailItem = [[CollectionViewDetailItem alloc] |
| + initWithType:ItemTypeSettingsComposeEmail]; |
| + _composeEmailDetailItem.text = |
| + l10n_util::GetNSString(IDS_IOS_COMPOSE_EMAIL_SETTING); |
| + _composeEmailDetailItem.detailText = [_mailtoURLRewriter defaultHandlerName]; |
| + _composeEmailDetailItem.accessoryType = |
| + MDCCollectionViewCellAccessoryDisclosureIndicator; |
| + _composeEmailDetailItem.accessibilityTraits |= UIAccessibilityTraitButton; |
| + return _composeEmailDetailItem; |
| +} |
| + |
| - (ContentSetting)getContentSetting:(ContentSettingsType)settingID { |
| return ios::HostContentSettingsMapFactory::GetForBrowserState(browserState_) |
| ->GetDefaultContentSetting(settingID, NULL); |
| @@ -174,6 +204,13 @@ typedef NS_ENUM(NSInteger, ItemType) { |
| [self.navigationController pushViewController:controller animated:YES]; |
| break; |
| } |
| + case ItemTypeSettingsComposeEmail: { |
| + UIViewController* controller = |
| + [[ComposeEmailHandlerCollectionViewController alloc] |
| + initWithRewriter:_mailtoURLRewriter]; |
| + [self.navigationController pushViewController:controller animated:YES]; |
| + break; |
| + } |
| } |
| } |
| @@ -204,4 +241,13 @@ typedef NS_ENUM(NSInteger, ItemType) { |
| [self reconfigureCellsForItems:@[ _blockPopupsDetailItem ]]; |
| } |
| +#pragma mark - MailtoURLRewriterObserver |
| + |
| +- (void)rewriterDidChange:(MailtoURLRewriter*)rewriter { |
| + if (rewriter != _mailtoURLRewriter) |
| + return; |
| + _composeEmailDetailItem.detailText = [rewriter defaultHandlerName]; |
| + [self reconfigureCellsForItems:@[ _composeEmailDetailItem ]]; |
| +} |
| + |
| @end |