chromium/ios/chrome/common/app_group/app_group_command.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_COMMON_APP_GROUP_APP_GROUP_COMMAND_H_
#define IOS_CHROME_COMMON_APP_GROUP_APP_GROUP_COMMAND_H_

#import <UIKit/UIKit.h>

typedef void (^URLOpenerBlock)(NSURL* URL);

// This class contains helper functions to prepare dictionary commands, place
// them in the shared NSUserDefault, and launch Chrome to execute them.
@interface AppGroupCommand : NSObject
- (instancetype)initWithSourceApp:(NSString*)sourceApp
                   URLOpenerBlock:(URLOpenerBlock)opener;

// Prepares a command without argument.
- (void)prepareWithCommandID:(NSString*)commandID;

// Prepares a command to open `URL`.
- (void)prepareToOpenURL:(NSURL*)URL;

// Prepares a command to open an item in a list.
// `URL` is the URL in the item, and `index` is the index of the item in the
// list.
- (void)prepareToOpenItem:(NSURL*)URL index:(NSNumber*)index;

// Prepares a command to search for `text`.
- (void)prepareToSearchText:(NSString*)text;

// Prepares a command to search for `image`.
- (void)prepareToSearchImage:(UIImage*)image;

// Launches the main app and execute the receiver.
- (void)executeInApp;

@end

#endif  // IOS_CHROME_COMMON_APP_GROUP_APP_GROUP_COMMAND_H_