Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(566)

Unified Diff: ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm

Issue 2870783002: Adds Compose Email Settings UI for deprecating Native App Launcher (Closed)
Patch Set: replied to comments from rohitrao Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..f363ad417b64defe4b835a680ce44705347cddfb 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,15 @@ typedef NS_ENUM(NSInteger, ItemType) {
// The observable boolean that binds to the "Disable Popups" setting state.
ContentSettingBackedBoolean* _disablePopupsSetting;
+ // This object contains the list of available Mail client apps that can
+ // handle mailto: URLs. The value can be nil if mailto: URL rewriting is
+ // not available because of experimental settings.
+ MailtoURLRewriter* _mailtoURLRewriter;
+
// Updatable Items
CollectionViewDetailItem* _blockPopupsDetailItem;
CollectionViewDetailItem* _translateDetailItem;
+ CollectionViewDetailItem* _composeEmailDetailItem;
}
// Returns the value for the default setting with ID |settingID|.
@@ -65,6 +74,7 @@ typedef NS_ENUM(NSInteger, ItemType) {
// Helpers to create collection view items.
- (id)blockPopupsItem;
- (id)translateItem;
+- (id)composeEmailItem;
@end
@@ -94,6 +104,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;
@@ -117,6 +132,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 +167,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 +206,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 +243,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

Powered by Google App Engine
This is Rietveld 408576698