Commit 223e6a75 authored by Gauthier Ambard's avatar Gauthier Ambard Committed by Commit Bot

[iOS] Update ActivityService icons

This CL updates the existing ActivityService icons.
It also removes the default copy action to add a custom one, allowing
to change its icon.

Bug: 868104
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I16da49521bde80e1a0b41859843e257d7beb50e3
Reviewed-on: https://chromium-review.googlesource.com/1172624
Commit-Queue: Gauthier Ambard <gambard@chromium.org>
Reviewed-by: default avatarPeter Lee <pkl@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583996}
parent 63ecc7f1
......@@ -1384,6 +1384,9 @@ Handoff must also be enabled in the General section of Settings, and your device
<message name="IDS_IOS_SHARE_GPLUS_COMPLETE" desc="Message shown when Google+ share has been posted. [Length: Unknown. Keep it short.] [iOS only]">
Google+ post completed.
</message>
<message name="IDS_IOS_SHARE_MENU_COPY" desc="Text label of the Copy action in the extension menu that copies the current URL to the pasteboard. [iOS only]">
Copy
</message>
<message name="IDS_IOS_SHARE_MENU_FIND_IN_PAGE" desc="Text label to the Find in Page action in the extension menu that open the 'Find in Page' menu. [iOS only]">
Find in Page
</message>
......
......@@ -7,6 +7,8 @@ source_set("activities") {
sources = [
"bookmark_activity.h",
"bookmark_activity.mm",
"copy_activity.h",
"copy_activity.mm",
"find_in_page_activity.h",
"find_in_page_activity.mm",
"print_activity.h",
......@@ -18,6 +20,7 @@ source_set("activities") {
]
deps = [
"resources:activity_services_add_bookmark",
"resources:activity_services_copy",
"resources:activity_services_edit_bookmark",
"resources:activity_services_find_in_page",
"resources:activity_services_print",
......@@ -27,6 +30,7 @@ source_set("activities") {
"//base",
"//ios/chrome/app/strings",
"//ios/chrome/browser/ui/commands",
"//ios/chrome/browser/ui/util",
"//ios/web/public",
"//ui/base",
"//url",
......
// Copyright 2018 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_ACTIVITY_SERVICES_ACTIVITIES_COPY_ACTIVITY_H_
#define IOS_CHROME_BROWSER_UI_ACTIVITY_SERVICES_ACTIVITIES_COPY_ACTIVITY_H_
#import <UIKit/UIKit.h>
class GURL;
// Activity that copies the URL to the pasteboard.
@interface CopyActivity : UIActivity
- (instancetype)initWithURL:(const GURL&)URL;
// Identifier for the copy activity.
+ (NSString*)activityIdentifier;
@end
#endif // IOS_CHROME_BROWSER_UI_ACTIVITY_SERVICES_ACTIVITIES_COPY_ACTIVITY_H_
// Copyright 2018 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/activity_services/activities/copy_activity.h"
#import "ios/chrome/browser/ui/util/pasteboard_util.h"
#include "ios/chrome/grit/ios_strings.h"
#include "ui/base/l10n/l10n_util_mac.h"
#include "url/gurl.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace {
NSString* const kCopyActivityType = @"com.google.chrome.copyActivity";
} // namespace
@implementation CopyActivity {
GURL _URL;
}
+ (NSString*)activityIdentifier {
return kCopyActivityType;
}
#pragma mark - Public
- (instancetype)initWithURL:(const GURL&)URL {
self = [super init];
if (self) {
_URL = URL;
}
return self;
}
#pragma mark - UIActivity
- (NSString*)activityType {
return [[self class] activityIdentifier];
}
- (NSString*)activityTitle {
return l10n_util::GetNSString(IDS_IOS_SHARE_MENU_COPY);
}
- (UIImage*)activityImage {
return [UIImage imageNamed:@"activity_services_copy"];
}
- (BOOL)canPerformWithActivityItems:(NSArray*)activityItems {
return YES;
}
- (void)prepareWithActivityItems:(NSArray*)activityItems {
}
+ (UIActivityCategory)activityCategory {
return UIActivityCategoryAction;
}
- (void)performActivity {
StoreURLInPasteboard(_URL);
[self activityDidFinish:YES];
}
@end
......@@ -13,6 +13,15 @@ imageset("activity_services_add_bookmark") {
]
}
imageset("activity_services_copy") {
sources = [
"activity_services_copy.imageset/Contents.json",
"activity_services_copy.imageset/activity_services_copy-60@2x.png",
"activity_services_copy.imageset/activity_services_copy-60@3x.png",
"activity_services_copy.imageset/activity_services_copy-76@2x.png",
]
}
imageset("activity_services_edit_bookmark") {
sources = [
"activity_services_edit_bookmark.imageset/Contents.json",
......
{
"images" : [
{
"idiom" : "iphone",
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "activity_services_copy-60@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "activity_services_copy-60@3x.png",
"scale" : "3x"
},
{
"idiom" : "ipad",
"scale" : "1x"
},
{
"idiom" : "ipad",
"filename" : "activity_services_copy-76@2x.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
......@@ -12,6 +12,7 @@
#include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
#import "ios/chrome/browser/passwords/password_form_filler.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/find_in_page_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"
......@@ -151,9 +152,10 @@ NSString* const kActivityServicesSnackbarCategory =
// Reading List and Print activities refer to iOS' version of these.
// Chrome-specific implementations of these two activities are provided below
// in applicationActivitiesForData:dispatcher:bookmarkModel:
// The "Copy" action is also provided by chrome in order to change its icon.
NSArray* excludedActivityTypes = @[
UIActivityTypeAddToReadingList, UIActivityTypePrint,
UIActivityTypeSaveToCameraRoll
UIActivityTypeAddToReadingList, UIActivityTypeCopyToPasteboard,
UIActivityTypePrint, UIActivityTypeSaveToCameraRoll
];
[activityViewController_ setExcludedActivityTypes:excludedActivityTypes];
......@@ -251,6 +253,10 @@ NSString* const kActivityServicesSnackbarCategory =
bookmarkModel:
(bookmarks::BookmarkModel*)bookmarkModel {
NSMutableArray* applicationActivities = [NSMutableArray array];
[applicationActivities
addObject:[[CopyActivity alloc] initWithURL:data.shareURL]];
if (data.shareURL.SchemeIsHTTPOrHTTPS()) {
ReadingListActivity* readingListActivity =
[[ReadingListActivity alloc] initWithURL:data.shareURL
......
......@@ -568,7 +568,7 @@ TEST_F(ActivityServiceControllerTest, ApplicationActivitiesForData) {
[activityController applicationActivitiesForData:data
dispatcher:nil
bookmarkModel:bookmark_model_];
ASSERT_EQ(IsUIRefreshPhase1Enabled() ? 4U : 2U, [items count]);
ASSERT_EQ(IsUIRefreshPhase1Enabled() ? 5U : 3U, [items count]);
BOOL foundPrintActivity = NO;
for (id item in items) {
if ([item class] == [PrintActivity class]) {
......@@ -591,7 +591,7 @@ TEST_F(ActivityServiceControllerTest, ApplicationActivitiesForData) {
items = [activityController applicationActivitiesForData:data
dispatcher:nil
bookmarkModel:bookmark_model_];
EXPECT_EQ(IsUIRefreshPhase1Enabled() ? 3U : 1U, [items count]);
EXPECT_EQ(IsUIRefreshPhase1Enabled() ? 4U : 2U, [items count]);
foundPrintActivity = NO;
for (id item in items) {
if ([item class] == [PrintActivity class]) {
......@@ -626,7 +626,7 @@ TEST_F(ActivityServiceControllerTest, HTTPActivities) {
[activityController applicationActivitiesForData:data
dispatcher:nil
bookmarkModel:bookmark_model_];
ASSERT_EQ(5U, [items count]);
ASSERT_EQ(6U, [items count]);
// Verify non-HTTP URL.
data = [[ShareToData alloc] initWithShareURL:GURL("chrome://chromium.org/")
......@@ -640,7 +640,7 @@ TEST_F(ActivityServiceControllerTest, HTTPActivities) {
items = [activityController applicationActivitiesForData:data
dispatcher:nil
bookmarkModel:bookmark_model_];
ASSERT_EQ(1U, [items count]);
ASSERT_EQ(2U, [items count]);
}
// Verifies that the Bookmark Activity is correct on bookmarked pages.
......@@ -666,8 +666,8 @@ TEST_F(ActivityServiceControllerTest, BookmarkActivities) {
[activityController applicationActivitiesForData:data
dispatcher:nil
bookmarkModel:bookmark_model_];
ASSERT_EQ(4U, [items count]);
UIActivity* activity = [items objectAtIndex:1];
ASSERT_EQ(5U, [items count]);
UIActivity* activity = [items objectAtIndex:2];
EXPECT_EQ([BookmarkActivity class], [activity class]);
NSString* addToBookmarkString =
l10n_util::GetNSString(IDS_IOS_TOOLS_MENU_ADD_TO_BOOKMARKS);
......@@ -691,8 +691,8 @@ TEST_F(ActivityServiceControllerTest, BookmarkActivities) {
items = [activityController applicationActivitiesForData:data
dispatcher:nil
bookmarkModel:bookmark_model_];
ASSERT_EQ(4U, [items count]);
activity = [items objectAtIndex:1];
ASSERT_EQ(5U, [items count]);
activity = [items objectAtIndex:2];
EXPECT_EQ([BookmarkActivity class], [activity class]);
NSString* editBookmark =
l10n_util::GetNSString(IDS_IOS_TOOLS_MENU_EDIT_BOOKMARK);
......@@ -726,8 +726,8 @@ TEST_F(ActivityServiceControllerTest, RequestMobileDesktopSite) {
[activityController applicationActivitiesForData:data
dispatcher:mockDispatcher
bookmarkModel:bookmark_model_];
ASSERT_EQ(5U, [items count]);
UIActivity* activity = [items objectAtIndex:3];
ASSERT_EQ(6U, [items count]);
UIActivity* activity = [items objectAtIndex:4];
EXPECT_EQ([RequestDesktopOrMobileSiteActivity class], [activity class]);
NSString* requestDesktopSiteString =
l10n_util::GetNSString(IDS_IOS_SHARE_MENU_REQUEST_DESKTOP_SITE);
......@@ -750,8 +750,8 @@ TEST_F(ActivityServiceControllerTest, RequestMobileDesktopSite) {
items = [activityController applicationActivitiesForData:data
dispatcher:mockDispatcher
bookmarkModel:bookmark_model_];
ASSERT_EQ(5U, [items count]);
activity = [items objectAtIndex:3];
ASSERT_EQ(6U, [items count]);
activity = [items objectAtIndex:4];
EXPECT_EQ([RequestDesktopOrMobileSiteActivity class], [activity class]);
NSString* requestMobileSiteString =
l10n_util::GetNSString(IDS_IOS_SHARE_MENU_REQUEST_MOBILE_SITE);
......@@ -870,7 +870,7 @@ TEST_F(ActivityServiceControllerTest, FindInPageActivity) {
[activityController applicationActivitiesForData:data
dispatcher:nil
bookmarkModel:bookmark_model_];
ASSERT_EQ(4U, [items count]);
ASSERT_EQ(5U, [items count]);
BOOL foundFindInPageActivity = NO;
for (id item in items) {
if ([item class] == [FindInPageActivity class]) {
......@@ -893,7 +893,7 @@ TEST_F(ActivityServiceControllerTest, FindInPageActivity) {
items = [activityController applicationActivitiesForData:data
dispatcher:nil
bookmarkModel:bookmark_model_];
EXPECT_EQ(3U, [items count]);
EXPECT_EQ(4U, [items count]);
foundFindInPageActivity = NO;
for (id item in items) {
if ([item class] == [FindInPageActivity class]) {
......
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