Commit 837af2f6 authored by Sebastien Lalancette's avatar Sebastien Lalancette Committed by Commit Bot

[Sharing] Hooked Up QR Code Generation Activity in Controller.

Added code to add the generate QR code activity to the activity service
controller behind its feature flag. Also added a simple unit test.

Bug: 1064990
Change-Id: Ib386f3bb8fa85d27094197b2febbc1a4c1d66a5a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2127891
Commit-Queue: Sebastien Lalancette <seblalancette@chromium.org>
Reviewed-by: default avatarGauthier Ambard <gambard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#754935}
parent b1a0b0c7
...@@ -38,6 +38,7 @@ source_set("activity_services") { ...@@ -38,6 +38,7 @@ source_set("activity_services") {
"//ios/chrome/browser/snapshots", "//ios/chrome/browser/snapshots",
"//ios/chrome/browser/sync", "//ios/chrome/browser/sync",
"//ios/chrome/browser/tabs", "//ios/chrome/browser/tabs",
"//ios/chrome/browser/ui:feature_flags",
"//ios/chrome/browser/ui/activity_services/activities", "//ios/chrome/browser/ui/activity_services/activities",
"//ios/chrome/browser/ui/activity_services/requirements", "//ios/chrome/browser/ui/activity_services/requirements",
"//ios/chrome/browser/ui/commands", "//ios/chrome/browser/ui/commands",
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#import <MobileCoreServices/MobileCoreServices.h> #import <MobileCoreServices/MobileCoreServices.h>
#include "base/feature_list.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/mac/foundation_util.h" #include "base/mac/foundation_util.h"
#include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics.h"
...@@ -23,6 +24,7 @@ ...@@ -23,6 +24,7 @@
#import "ios/chrome/browser/ui/activity_services/activities/bookmark_activity.h" #import "ios/chrome/browser/ui/activity_services/activities/bookmark_activity.h"
#import "ios/chrome/browser/ui/activity_services/activities/copy_activity.h" #import "ios/chrome/browser/ui/activity_services/activities/copy_activity.h"
#import "ios/chrome/browser/ui/activity_services/activities/find_in_page_activity.h" #import "ios/chrome/browser/ui/activity_services/activities/find_in_page_activity.h"
#import "ios/chrome/browser/ui/activity_services/activities/generate_qr_code_activity.h"
#import "ios/chrome/browser/ui/activity_services/activities/print_activity.h" #import "ios/chrome/browser/ui/activity_services/activities/print_activity.h"
#import "ios/chrome/browser/ui/activity_services/activities/reading_list_activity.h" #import "ios/chrome/browser/ui/activity_services/activities/reading_list_activity.h"
#import "ios/chrome/browser/ui/activity_services/activities/request_desktop_or_mobile_site_activity.h" #import "ios/chrome/browser/ui/activity_services/activities/request_desktop_or_mobile_site_activity.h"
...@@ -35,7 +37,9 @@ ...@@ -35,7 +37,9 @@
#import "ios/chrome/browser/ui/activity_services/requirements/activity_service_presentation.h" #import "ios/chrome/browser/ui/activity_services/requirements/activity_service_presentation.h"
#import "ios/chrome/browser/ui/activity_services/share_protocol.h" #import "ios/chrome/browser/ui/activity_services/share_protocol.h"
#import "ios/chrome/browser/ui/activity_services/share_to_data.h" #import "ios/chrome/browser/ui/activity_services/share_to_data.h"
#import "ios/chrome/browser/ui/commands/qr_generation_commands.h"
#import "ios/chrome/browser/ui/commands/snackbar_commands.h" #import "ios/chrome/browser/ui/commands/snackbar_commands.h"
#include "ios/chrome/browser/ui/ui_feature_flags.h"
#include "ios/chrome/browser/ui/util/ui_util.h" #include "ios/chrome/browser/ui/util/ui_util.h"
#import "ios/chrome/browser/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
#include "ios/chrome/grit/ios_strings.h" #include "ios/chrome/grit/ios_strings.h"
...@@ -74,8 +78,9 @@ NSString* const kActivityServicesSnackbarCategory = ...@@ -74,8 +78,9 @@ NSString* const kActivityServicesSnackbarCategory =
// Returns an array of UIActivity objects that can handle the given |data|. // Returns an array of UIActivity objects that can handle the given |data|.
- (NSArray*) - (NSArray*)
applicationActivitiesForData:(ShareToData*)data applicationActivitiesForData:(ShareToData*)data
browserCommandHandler:(id<BrowserCommands>)browserCommandHandler commandHandler:(id<BrowserCommands,
findInPageHandler:(id<FindInPageCommands>)findInPageHandler FindInPageCommands,
QRGenerationCommands>)commandHandler
bookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel bookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel
canSendTabToSelf:(BOOL)canSendTabToSelf; canSendTabToSelf:(BOOL)canSendTabToSelf;
// Processes |extensionItems| returned from App Extension invocation returning // Processes |extensionItems| returned from App Extension invocation returning
...@@ -127,9 +132,10 @@ NSString* const kActivityServicesSnackbarCategory = ...@@ -127,9 +132,10 @@ NSString* const kActivityServicesSnackbarCategory =
- (void)shareWithData:(ShareToData*)data - (void)shareWithData:(ShareToData*)data
browserState:(ChromeBrowserState*)browserState browserState:(ChromeBrowserState*)browserState
dispatcher: dispatcher:(id<BrowserCommands,
(id<BrowserCommands, FindInPageCommands, SnackbarCommands>) FindInPageCommands,
dispatcher QRGenerationCommands,
SnackbarCommands>)dispatcher
passwordProvider:(id<ActivityServicePassword>)passwordProvider passwordProvider:(id<ActivityServicePassword>)passwordProvider
positionProvider:(id<ActivityServicePositioner>)positionProvider positionProvider:(id<ActivityServicePositioner>)positionProvider
presentationProvider:(id<ActivityServicePresentation>)presentationProvider { presentationProvider:(id<ActivityServicePresentation>)presentationProvider {
...@@ -165,8 +171,7 @@ NSString* const kActivityServicesSnackbarCategory = ...@@ -165,8 +171,7 @@ NSString* const kActivityServicesSnackbarCategory =
initWithActivityItems:[self activityItemsForData:data] initWithActivityItems:[self activityItemsForData:data]
applicationActivities:[self applicationActivities:[self
applicationActivitiesForData:data applicationActivitiesForData:data
browserCommandHandler:dispatcher commandHandler:dispatcher
findInPageHandler:dispatcher
bookmarkModel:bookmarkModel bookmarkModel:bookmarkModel
canSendTabToSelf:canSendTabToSelf]]; canSendTabToSelf:canSendTabToSelf]];
...@@ -284,8 +289,9 @@ NSString* const kActivityServicesSnackbarCategory = ...@@ -284,8 +289,9 @@ NSString* const kActivityServicesSnackbarCategory =
- (NSArray*) - (NSArray*)
applicationActivitiesForData:(ShareToData*)data applicationActivitiesForData:(ShareToData*)data
browserCommandHandler:(id<BrowserCommands>)browserCommandHandler commandHandler:(id<BrowserCommands,
findInPageHandler:(id<FindInPageCommands>)findInPageHandler FindInPageCommands,
QRGenerationCommands>)commandHandler
bookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel bookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel
canSendTabToSelf:(BOOL)canSendTabToSelf { canSendTabToSelf:(BOOL)canSendTabToSelf {
NSMutableArray* applicationActivities = [NSMutableArray array]; NSMutableArray* applicationActivities = [NSMutableArray array];
...@@ -296,15 +302,14 @@ NSString* const kActivityServicesSnackbarCategory = ...@@ -296,15 +302,14 @@ NSString* const kActivityServicesSnackbarCategory =
if (data.shareURL.SchemeIsHTTPOrHTTPS()) { if (data.shareURL.SchemeIsHTTPOrHTTPS()) {
if (canSendTabToSelf) { if (canSendTabToSelf) {
SendTabToSelfActivity* sendTabToSelfActivity = SendTabToSelfActivity* sendTabToSelfActivity =
[[SendTabToSelfActivity alloc] [[SendTabToSelfActivity alloc] initWithDispatcher:commandHandler];
initWithDispatcher:browserCommandHandler];
[applicationActivities addObject:sendTabToSelfActivity]; [applicationActivities addObject:sendTabToSelfActivity];
} }
ReadingListActivity* readingListActivity = ReadingListActivity* readingListActivity =
[[ReadingListActivity alloc] initWithURL:data.shareURL [[ReadingListActivity alloc] initWithURL:data.shareURL
title:data.title title:data.title
dispatcher:browserCommandHandler]; dispatcher:commandHandler];
[applicationActivities addObject:readingListActivity]; [applicationActivities addObject:readingListActivity];
if (bookmarkModel) { if (bookmarkModel) {
...@@ -313,27 +318,35 @@ NSString* const kActivityServicesSnackbarCategory = ...@@ -313,27 +318,35 @@ NSString* const kActivityServicesSnackbarCategory =
BookmarkActivity* bookmarkActivity = BookmarkActivity* bookmarkActivity =
[[BookmarkActivity alloc] initWithURL:data.visibleURL [[BookmarkActivity alloc] initWithURL:data.visibleURL
bookmarked:bookmarked bookmarked:bookmarked
dispatcher:browserCommandHandler]; dispatcher:commandHandler];
[applicationActivities addObject:bookmarkActivity]; [applicationActivities addObject:bookmarkActivity];
} }
if (base::FeatureList::IsEnabled(kQRCodeGeneration)) {
GenerateQrCodeActivity* generateQrCodeActivity =
[[GenerateQrCodeActivity alloc] initWithURL:data.shareURL
title:data.title
dispatcher:commandHandler];
[applicationActivities addObject:generateQrCodeActivity];
}
if (data.isPageSearchable) { if (data.isPageSearchable) {
FindInPageActivity* findInPageActivity = FindInPageActivity* findInPageActivity =
[[FindInPageActivity alloc] initWithHandler:findInPageHandler]; [[FindInPageActivity alloc] initWithHandler:commandHandler];
[applicationActivities addObject:findInPageActivity]; [applicationActivities addObject:findInPageActivity];
} }
if (data.userAgent != web::UserAgentType::NONE) { if (data.userAgent != web::UserAgentType::NONE) {
RequestDesktopOrMobileSiteActivity* requestActivity = RequestDesktopOrMobileSiteActivity* requestActivity =
[[RequestDesktopOrMobileSiteActivity alloc] [[RequestDesktopOrMobileSiteActivity alloc]
initWithDispatcher:browserCommandHandler initWithDispatcher:commandHandler
userAgent:data.userAgent]; userAgent:data.userAgent];
[applicationActivities addObject:requestActivity]; [applicationActivities addObject:requestActivity];
} }
} }
if (data.isPagePrintable) { if (data.isPagePrintable) {
PrintActivity* printActivity = [[PrintActivity alloc] init]; PrintActivity* printActivity = [[PrintActivity alloc] init];
printActivity.dispatcher = browserCommandHandler; printActivity.dispatcher = commandHandler;
[applicationActivities addObject:printActivity]; [applicationActivities addObject:printActivity];
} }
return applicationActivities; return applicationActivities;
......
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