0

[ios] Add ActivityToMoveTab to window_activities

This CL adds a new NSUserActivity type for moving a tab
to a new window.

This CL is one in a series to add drag and drop functionality
in a multi-window world.

Dragging a tab (which will come in a later CL) to the
edge of the screen in an iPad is a gesture to create
a new window with that tab. A custom NSUserActivity is
required to enable this gesture.

Bug: 1087844
Change-Id: I0462f3074825f682ccc4c1e8345f22e310abdcc5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2236896
Reviewed-by: Mark Cogan <marq@chromium.org>
Commit-Queue: edchin <edchin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#778848}
This commit is contained in:
edchin
2020-06-16 16:29:28 +00:00
committed by Commit Bot
parent 974a211277
commit bea4cc9c33
3 changed files with 21 additions and 1 deletions

@@ -10,7 +10,7 @@ source_set("window_activities") {
] ]
deps = [ deps = [
"//base", "//base",
"//ios/chrome/browser", "//ios/chrome/browser:chrome_url_constants",
"//ios/chrome/browser/url_loading", "//ios/chrome/browser/url_loading",
"//ios/web/public/navigation", "//ios/web/public/navigation",
"//net", "//net",

@@ -52,10 +52,17 @@ NSUserActivity* ActivityToLoadURL(WindowActivityOrigin origin,
// |url|. // |url|.
NSUserActivity* ActivityToLoadURL(WindowActivityOrigin origin, const GURL& url); NSUserActivity* ActivityToLoadURL(WindowActivityOrigin origin, const GURL& url);
// Create a new activity that moves a tab either between browsers, or reorders
// within a browser.
NSUserActivity* ActivityToMoveTab(NSString* tab_id);
// true if |activity| is one that indicates a URL load (including loading the // true if |activity| is one that indicates a URL load (including loading the
// new tab page in a new tab). // new tab page in a new tab).
bool ActivityIsURLLoad(NSUserActivity* activity); bool ActivityIsURLLoad(NSUserActivity* activity);
// true if |activity| is one that indicates a tab move.
bool ActivityIsTabMove(NSUserActivity* activity);
// The URLLoadParams needed to perform the load defined in |activity|, if any. // The URLLoadParams needed to perform the load defined in |activity|, if any.
// If |activity| is not a URL load activity, the default UrlLoadParams are // If |activity| is not a URL load activity, the default UrlLoadParams are
// returned. // returned.

@@ -17,12 +17,14 @@
// Activity types. // Activity types.
NSString* const kLoadURLActivityType = @"org.chromium.load.url"; NSString* const kLoadURLActivityType = @"org.chromium.load.url";
NSString* const kLoadIncognitoURLActivityType = @"org.chromium.load.otr-url"; NSString* const kLoadIncognitoURLActivityType = @"org.chromium.load.otr-url";
NSString* const kMoveTabActivityType = @"org.chromium.move-tab";
// User info keys. // User info keys.
NSString* const kURLKey = @"LoadParams_URL"; NSString* const kURLKey = @"LoadParams_URL";
NSString* const kReferrerURLKey = @"LoadParams_ReferrerURL"; NSString* const kReferrerURLKey = @"LoadParams_ReferrerURL";
NSString* const kReferrerPolicyKey = @"LoadParams_ReferrerPolicy"; NSString* const kReferrerPolicyKey = @"LoadParams_ReferrerPolicy";
NSString* const kOriginKey = @"LoadParams_Origin"; NSString* const kOriginKey = @"LoadParams_Origin";
NSString* const kTabIdentifierKey = @"TabIdentifier";
namespace { namespace {
@@ -74,11 +76,22 @@ NSUserActivity* ActivityToLoadURL(WindowActivityOrigin origin,
return activity; return activity;
} }
NSUserActivity* ActivityToMoveTab(NSString* tab_id) {
NSUserActivity* activity =
[[NSUserActivity alloc] initWithActivityType:kMoveTabActivityType];
[activity addUserInfoEntriesFromDictionary:@{kTabIdentifierKey : tab_id}];
return activity;
}
bool ActivityIsURLLoad(NSUserActivity* activity) { bool ActivityIsURLLoad(NSUserActivity* activity) {
return [activity.activityType isEqualToString:kLoadURLActivityType] || return [activity.activityType isEqualToString:kLoadURLActivityType] ||
[activity.activityType isEqualToString:kLoadIncognitoURLActivityType]; [activity.activityType isEqualToString:kLoadIncognitoURLActivityType];
} }
bool ActivityIsTabMove(NSUserActivity* activity) {
return [activity.activityType isEqualToString:kMoveTabActivityType];
}
UrlLoadParams LoadParamsFromActivity(NSUserActivity* activity) { UrlLoadParams LoadParamsFromActivity(NSUserActivity* activity) {
if (!ActivityIsURLLoad(activity)) if (!ActivityIsURLLoad(activity))
return UrlLoadParams(); return UrlLoadParams();