From 3bd8f055ea03dee942cd2d91bbdd1726eb78b973 Mon Sep 17 00:00:00 2001 From: Elmehdi Rahmaoui Date: Tue, 28 Jun 2022 10:43:20 +0000 Subject: [PATCH] [iOS]: Add new function to return elements to add to context_menu New function to return the contextMenu title and the list of elements to add. Bug: 1336264 Change-Id: Id81a143dedd0861bd557500e349e06b2b15a1117 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3721638 Reviewed-by: Rohit Rao Commit-Queue: Elmehdi Rahmaoui Reviewed-by: David Jean Cr-Commit-Position: refs/heads/main@{#1018612} --- .../context_menu/chromium_context_menu.mm | 10 ++++++++- .../context_menu/test_context_menu.mm | 9 +++++++- .../chrome/browser/context_menu/BUILD.gn | 6 +++++- .../browser/context_menu/context_menu_api.h | 21 ++++++++++++++++++- .../browser/context_menu/context_menu_api.mm | 12 +++++++++++ 5 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 ios/public/provider/chrome/browser/context_menu/context_menu_api.mm diff --git a/ios/chrome/browser/providers/context_menu/chromium_context_menu.mm b/ios/chrome/browser/providers/context_menu/chromium_context_menu.mm index 6e033b62ad2ed2..d870f67fbf379a 100644 --- a/ios/chrome/browser/providers/context_menu/chromium_context_menu.mm +++ b/ios/chrome/browser/providers/context_menu/chromium_context_menu.mm @@ -15,10 +15,18 @@ bool AddContextMenuElements(NSMutableArray* menu_elements, ChromeBrowserState* browser_state, web::WebState* web_state, web::ContextMenuParams params, - UIViewController* presentingViewController) { + UIViewController* presenting_view_controller) { // Chromium does not add elements to the context menu. return false; } +ElementsToAddToContextMenu* GetContextMenuElementsToAdd( + ChromeBrowserState* browser_state, + web::WebState* web_state, + web::ContextMenuParams params, + UIViewController* presenting_view_controller) { + return nil; +} + } // namespace provider } // namespace ios diff --git a/ios/chrome/test/providers/context_menu/test_context_menu.mm b/ios/chrome/test/providers/context_menu/test_context_menu.mm index e5273542824c52..9f97972ce08f91 100644 --- a/ios/chrome/test/providers/context_menu/test_context_menu.mm +++ b/ios/chrome/test/providers/context_menu/test_context_menu.mm @@ -15,10 +15,17 @@ bool AddContextMenuElements(NSMutableArray* menu_elements, ChromeBrowserState* browser_state, web::WebState* web_state, web::ContextMenuParams params, - UIViewController* presentingViewController) { + UIViewController* presenting_view_controller) { // No context menu elements added for tests. return false; } +ElementsToAddToContextMenu* GetContextMenuElementsToAdd( + ChromeBrowserState* browser_state, + web::WebState* web_state, + web::ContextMenuParams params, + UIViewController* presenting_view_controller) { + return nil; +} } // namespace provider } // namespace ios diff --git a/ios/public/provider/chrome/browser/context_menu/BUILD.gn b/ios/public/provider/chrome/browser/context_menu/BUILD.gn index 7fda2c4bbee07e..b846b0da9d7e45 100644 --- a/ios/public/provider/chrome/browser/context_menu/BUILD.gn +++ b/ios/public/provider/chrome/browser/context_menu/BUILD.gn @@ -4,7 +4,11 @@ source_set("context_menu_api") { configs += [ "//build/config/compiler:enable_arc" ] - sources = [ "context_menu_api.h" ] + sources = [ + "context_menu_api.h", + "context_menu_api.mm", + ] + deps = [ "//ios/web/public/ui" ] frameworks = [ "UIKit.framework" ] } diff --git a/ios/public/provider/chrome/browser/context_menu/context_menu_api.h b/ios/public/provider/chrome/browser/context_menu/context_menu_api.h index 4b78733fb3d596..60f7d432f0abec 100644 --- a/ios/public/provider/chrome/browser/context_menu/context_menu_api.h +++ b/ios/public/provider/chrome/browser/context_menu/context_menu_api.h @@ -11,6 +11,17 @@ class ChromeBrowserState; +// Wraps information to add/show to/in a context menu +@interface ElementsToAddToContextMenu : NSObject + +// The title of the context menu. Can be nil. +@property(nonatomic, copy) NSString* title; + +// List of elements to add to a context menu. Can be nil. +@property(nonatomic, copy) NSMutableArray* elements; + +@end + namespace web { class WebState; } // namespace web @@ -24,7 +35,15 @@ bool AddContextMenuElements(NSMutableArray* menu_elements, ChromeBrowserState* browser_state, web::WebState* web_state, web::ContextMenuParams params, - UIViewController* presentingViewController); + UIViewController* presenting_view_controller); + +// Returns the elements to add to the context menu, with their title. If no +// elements needs to be added, returns nil. +ElementsToAddToContextMenu* GetContextMenuElementsToAdd( + ChromeBrowserState* browser_state, + web::WebState* web_state, + web::ContextMenuParams params, + UIViewController* presenting_view_controller); } // namespace provider } // namespace ios diff --git a/ios/public/provider/chrome/browser/context_menu/context_menu_api.mm b/ios/public/provider/chrome/browser/context_menu/context_menu_api.mm new file mode 100644 index 00000000000000..41ac8e35f1e9ea --- /dev/null +++ b/ios/public/provider/chrome/browser/context_menu/context_menu_api.mm @@ -0,0 +1,12 @@ +// Copyright 2022 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/public/provider/chrome/browser/context_menu/context_menu_api.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@implementation ElementsToAddToContextMenu +@end