blob: ee262623832f194ddeedef8009cef52d20182822 [file] [log] [blame]
// Copyright 2021 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_BROWSER_UI_MENU_BROWSER_ACTION_FACTORY_H_
#define IOS_CHROME_BROWSER_UI_MENU_BROWSER_ACTION_FACTORY_H_
#import <UIKit/UIKit.h>
#import "base/ios/block_types.h"
#import "ios/chrome/browser/ui/lens/lens_entrypoint.h"
#import "ios/chrome/browser/ui/menu/action_factory.h"
#import "ios/chrome/browser/ui/menu/menu_action_type.h"
#import "ios/chrome/browser/window_activities/window_activity_helpers.h"
class Browser;
class GURL;
// Factory providing methods to create UIActions that depends on the provided
// browser with consistent titles, images and metrics structure. When using any
// action from this class, an histogram will be recorded on
// Mobile.ContextMenu.<Scenario>.Action.
@interface BrowserActionFactory : ActionFactory
// Initializes a factory instance for the current `browser` to create action
// instances for the given `scenario`. `browser` can be nil, and in that case
// only actions that doesn't require browser will work, and other actions will
// return nil; `scenario` is used to choose the histogram in which to record the
// actions.
- (instancetype)initWithBrowser:(Browser*)browser
scenario:(MenuScenarioHistogram)scenario;
// Creates a UIAction instance configured for opening the `URL` in a new tab and
// which will invoke the given `completion` block after execution.
- (UIAction*)actionToOpenInNewTabWithURL:(const GURL)URL
completion:(ProceduralBlock)completion;
// Creates a UIAction instance configured for opening the `URL` in a new
// incognito tab and which will invoke the given `completion` block after
// execution.
- (UIAction*)actionToOpenInNewIncognitoTabWithURL:(const GURL)URL
completion:(ProceduralBlock)completion;
// Creates a UIAction instance whose title and icon are configured for opening a
// URL in a new incognito tab. When triggered, the action will invoke the
// `block` which needs to open a URL in a new incognito tab.
- (UIAction*)actionToOpenInNewIncognitoTabWithBlock:(ProceduralBlock)block;
// Creates a UIAction instance configured for opening the `URL` in a new window
// from `activityOrigin`.
- (UIAction*)actionToOpenInNewWindowWithURL:(const GURL)URL
activityOrigin:
(WindowActivityOrigin)activityOrigin;
// Creates a UIAction instance configured for opening a new window using
// `activity`.
- (UIAction*)actionToOpenInNewWindowWithActivity:(NSUserActivity*)activity;
// Creates a UIAction instance for opening an image `URL` in current tab and
// invoke the given `completion` block after execution.
- (UIAction*)actionOpenImageWithURL:(const GURL)URL
completion:(ProceduralBlock)completion;
// Creates a UIAction instance for opening an image `params` in a new tab and
// invoke the given `completion` block after execution.
- (UIAction*)actionOpenImageInNewTabWithUrlLoadParams:(UrlLoadParams)params
completion:
(ProceduralBlock)completion;
// Creates a UIAction instance for searching with Lens.
- (UIAction*)actionToSearchWithLensWithEntryPoint:(LensEntrypoint)entryPoint;
// Creates a UIAction instance for opening a new tab.
- (UIAction*)actionToOpenNewTab;
// Creates a UIAction instance for opening a new incognito tab.
- (UIAction*)actionToOpenNewIncognitoTab;
// Creates a UIAction instance for closing the current tab.
- (UIAction*)actionToCloseCurrentTab;
// Creates a UIAction instance for showing the QR Scanner.
- (UIAction*)actionToShowQRScanner;
// Creates a UIAction instance for starting a voice search.
- (UIAction*)actionToStartVoiceSearch;
// Creates a UIAction instance for opening a new search.
- (UIAction*)actionToStartNewSearch;
// Creates a UIAction instance for opening a new incognito search.
- (UIAction*)actionToStartNewIncognitoSearch;
// Creates a UIAction instance for searching for the image in the pasteboard.
- (UIAction*)actionToSearchCopiedImage;
// Creates a UIAction instance for searching for the URL in the pasteboard.
- (UIAction*)actionToSearchCopiedURL;
// Creates a UIAction instance for searching for the text in the pasteboard.
- (UIAction*)actionToSearchCopiedText;
@end
#endif // IOS_CHROME_BROWSER_UI_MENU_BROWSER_ACTION_FACTORY_H_