| Index: ios/chrome/browser/ui/context_menu/context_menu_controller.mm
|
| diff --git a/ios/chrome/browser/ui/context_menu/context_menu_controller.mm b/ios/chrome/browser/ui/context_menu/context_menu_controller.mm
|
| deleted file mode 100644
|
| index e276c0f7a5a55cb9e443831d59f31b652c032afe..0000000000000000000000000000000000000000
|
| --- a/ios/chrome/browser/ui/context_menu/context_menu_controller.mm
|
| +++ /dev/null
|
| @@ -1,87 +0,0 @@
|
| -// Copyright 2012 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/context_menu/context_menu_controller.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "base/ios/weak_nsobject.h"
|
| -#include "base/logging.h"
|
| -#import "base/mac/scoped_nsobject.h"
|
| -#import "ios/chrome/browser/ui/context_menu/context_menu_holder.h"
|
| -#include "ui/base/device_form_factor.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/strings/grit/ui_strings.h"
|
| -
|
| -@interface ContextMenuController () {
|
| - // Underlying system alert.
|
| - base::WeakNSObject<UIAlertController> _alert;
|
| -}
|
| -// Redefined to readwrite.
|
| -@property(nonatomic, readwrite, getter=isVisible) BOOL visible;
|
| -@end
|
| -
|
| -@implementation ContextMenuController
|
| -@synthesize visible = _visible;
|
| -
|
| -- (void)dealloc {
|
| - [_alert dismissViewControllerAnimated:NO completion:nil];
|
| - [super dealloc];
|
| -}
|
| -
|
| -- (void)showWithHolder:(ContextMenuHolder*)menuHolder
|
| - atPoint:(CGPoint)point
|
| - inView:(UIView*)view {
|
| - DCHECK(menuHolder.itemCount);
|
| - // Check that the view is still visible on screen, otherwise just return and
|
| - // don't show the context menu.
|
| - if (![view window] && ![view isKindOfClass:[UIWindow class]])
|
| - return;
|
| -
|
| - UIAlertController* alert = [UIAlertController
|
| - alertControllerWithTitle:menuHolder.menuTitle
|
| - message:nil
|
| - preferredStyle:UIAlertControllerStyleActionSheet];
|
| - alert.popoverPresentationController.sourceView = view;
|
| - alert.popoverPresentationController.sourceRect =
|
| - CGRectMake(point.x, point.y, 1.0, 1.0);
|
| -
|
| - // Add the actions.
|
| - base::WeakNSObject<ContextMenuController> weakSelf(self);
|
| - [menuHolder.itemTitles enumerateObjectsUsingBlock:^(
|
| - NSString* itemTitle, NSUInteger itemIndex, BOOL*) {
|
| - void (^actionHandler)(UIAlertAction*) = ^(UIAlertAction* action) {
|
| - [menuHolder performActionAtIndex:itemIndex];
|
| - [weakSelf setVisible:NO];
|
| - };
|
| - [alert addAction:[UIAlertAction actionWithTitle:itemTitle
|
| - style:UIAlertActionStyleDefault
|
| - handler:actionHandler]];
|
| - }];
|
| -
|
| - // Cancel button goes last, to match other browsers.
|
| - void (^cancelHandler)(UIAlertAction*) = ^(UIAlertAction* action) {
|
| - [weakSelf setVisible:NO];
|
| - };
|
| - UIAlertAction* cancel_action =
|
| - [UIAlertAction actionWithTitle:l10n_util::GetNSString(IDS_APP_CANCEL)
|
| - style:UIAlertActionStyleCancel
|
| - handler:cancelHandler];
|
| - [alert addAction:cancel_action];
|
| -
|
| - // Present sheet/popover using controller that is added to view hierarchy.
|
| - UIViewController* topController = view.window.rootViewController;
|
| - while (topController.presentedViewController)
|
| - topController = topController.presentedViewController;
|
| - [topController presentViewController:alert animated:YES completion:nil];
|
| - self.visible = YES;
|
| - _alert.reset(alert);
|
| -}
|
| -
|
| -- (void)dismissAnimated:(BOOL)animated
|
| - completionHandler:(ProceduralBlock)completionHandler {
|
| - [_alert dismissViewControllerAnimated:animated completion:completionHandler];
|
| -}
|
| -
|
| -@end
|
|
|