| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ios/chrome/browser/ui/key_commands_provider.h" | 5 #import "ios/chrome/browser/ui/key_commands_provider.h" |
| 6 | 6 |
| 7 #import "base/ios/weak_nsobject.h" | |
| 8 #include "base/logging.h" | 7 #include "base/logging.h" |
| 9 #include "components/strings/grit/components_strings.h" | 8 #include "components/strings/grit/components_strings.h" |
| 10 #import "ios/chrome/browser/ui/commands/generic_chrome_command.h" | 9 #import "ios/chrome/browser/ui/commands/generic_chrome_command.h" |
| 11 #include "ios/chrome/browser/ui/commands/ios_command_ids.h" | 10 #include "ios/chrome/browser/ui/commands/ios_command_ids.h" |
| 12 #import "ios/chrome/browser/ui/keyboard/UIKeyCommand+Chrome.h" | 11 #import "ios/chrome/browser/ui/keyboard/UIKeyCommand+Chrome.h" |
| 13 #include "ios/chrome/browser/ui/rtl_geometry.h" | 12 #include "ios/chrome/browser/ui/rtl_geometry.h" |
| 14 #include "ios/chrome/grit/ios_strings.h" | 13 #include "ios/chrome/grit/ios_strings.h" |
| 15 #include "ui/base/l10n/l10n_util_mac.h" | 14 #include "ui/base/l10n/l10n_util_mac.h" |
| 16 | 15 |
| 16 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 17 #error "This file requires ARC support." |
| 18 #endif |
| 19 |
| 17 @implementation KeyCommandsProvider | 20 @implementation KeyCommandsProvider |
| 18 | 21 |
| 19 - (NSArray*)keyCommandsForConsumer:(id<KeyCommandsPlumbing>)consumer | 22 - (NSArray*)keyCommandsForConsumer:(id<KeyCommandsPlumbing>)consumer |
| 20 editingText:(BOOL)editingText { | 23 editingText:(BOOL)editingText { |
| 21 base::WeakNSProtocol<id<KeyCommandsPlumbing>> weakConsumer(consumer); | 24 __weak id<KeyCommandsPlumbing> weakConsumer = consumer; |
| 22 | 25 |
| 23 // Block to execute a command from the |tag|. | 26 // Block to execute a command from the |tag|. |
| 24 void (^execute)(NSInteger) = [[^(NSInteger tag) { | 27 void (^execute)(NSInteger) = ^(NSInteger tag) { |
| 25 [weakConsumer | 28 [weakConsumer |
| 26 chromeExecuteCommand:[GenericChromeCommand commandWithTag:tag]]; | 29 chromeExecuteCommand:[GenericChromeCommand commandWithTag:tag]]; |
| 27 } copy] autorelease]; | 30 }; |
| 28 | 31 |
| 29 // Block to have the tab model open the tab at |index|, if there is one. | 32 // Block to have the tab model open the tab at |index|, if there is one. |
| 30 void (^focusTab)(NSUInteger) = [[^(NSUInteger index) { | 33 void (^focusTab)(NSUInteger) = ^(NSUInteger index) { |
| 31 [weakConsumer focusTabAtIndex:index]; | 34 [weakConsumer focusTabAtIndex:index]; |
| 32 } copy] autorelease]; | 35 }; |
| 33 | 36 |
| 34 const BOOL hasTabs = [consumer tabsCount] > 0; | 37 const BOOL hasTabs = [consumer tabsCount] > 0; |
| 35 | 38 |
| 36 const BOOL useRTLLayout = UseRTLLayout(); | 39 const BOOL useRTLLayout = UseRTLLayout(); |
| 37 const NSInteger browseLeft = useRTLLayout ? IDC_FORWARD : IDC_BACK; | 40 const NSInteger browseLeft = useRTLLayout ? IDC_FORWARD : IDC_BACK; |
| 38 const NSInteger browseRight = useRTLLayout ? IDC_BACK : IDC_FORWARD; | 41 const NSInteger browseRight = useRTLLayout ? IDC_BACK : IDC_FORWARD; |
| 39 const int browseLeftDescriptionID = useRTLLayout | 42 const int browseLeftDescriptionID = useRTLLayout |
| 40 ? IDS_IOS_KEYBOARD_HISTORY_FORWARD | 43 ? IDS_IOS_KEYBOARD_HISTORY_FORWARD |
| 41 : IDS_IOS_KEYBOARD_HISTORY_BACK; | 44 : IDS_IOS_KEYBOARD_HISTORY_BACK; |
| 42 const int browseRightDescriptionID = useRTLLayout | 45 const int browseRightDescriptionID = useRTLLayout |
| 43 ? IDS_IOS_KEYBOARD_HISTORY_BACK | 46 ? IDS_IOS_KEYBOARD_HISTORY_BACK |
| 44 : IDS_IOS_KEYBOARD_HISTORY_FORWARD; | 47 : IDS_IOS_KEYBOARD_HISTORY_FORWARD; |
| 45 BOOL (^canBrowseLeft)() = [[^() { | 48 BOOL (^canBrowseLeft)() = ^() { |
| 46 return useRTLLayout ? [weakConsumer canGoForward] | 49 return useRTLLayout ? [weakConsumer canGoForward] |
| 47 : [weakConsumer canGoBack]; | 50 : [weakConsumer canGoBack]; |
| 48 } copy] autorelease]; | 51 }; |
| 49 BOOL (^canBrowseRight)() = [[^() { | 52 BOOL (^canBrowseRight)() = ^() { |
| 50 return useRTLLayout ? [weakConsumer canGoBack] | 53 return useRTLLayout ? [weakConsumer canGoBack] |
| 51 : [weakConsumer canGoForward]; | 54 : [weakConsumer canGoForward]; |
| 52 } copy] autorelease]; | 55 }; |
| 53 | 56 |
| 54 // Initialize the array of commands with an estimated capacity. | 57 // Initialize the array of commands with an estimated capacity. |
| 55 NSMutableArray* keyCommands = [NSMutableArray arrayWithCapacity:32]; | 58 NSMutableArray* keyCommands = [NSMutableArray arrayWithCapacity:32]; |
| 56 | 59 |
| 57 // List the commands that always appear in the HUD. They appear in the HUD | 60 // List the commands that always appear in the HUD. They appear in the HUD |
| 58 // since they have titles. | 61 // since they have titles. |
| 59 [keyCommands addObjectsFromArray:@[ | 62 [keyCommands addObjectsFromArray:@[ |
| 60 [UIKeyCommand cr_keyCommandWithInput:@"t" | 63 [UIKeyCommand cr_keyCommandWithInput:@"t" |
| 61 modifierFlags:UIKeyModifierCommand | 64 modifierFlags:UIKeyModifierCommand |
| 62 title:l10n_util::GetNSStringWithFixup( | 65 title:l10n_util::GetNSStringWithFixup( |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 action:^{ | 315 action:^{ |
| 313 [weakConsumer focusNextTab]; | 316 [weakConsumer focusNextTab]; |
| 314 }], | 317 }], |
| 315 ]]; | 318 ]]; |
| 316 } | 319 } |
| 317 | 320 |
| 318 return keyCommands; | 321 return keyCommands; |
| 319 } | 322 } |
| 320 | 323 |
| 321 @end | 324 @end |
| OLD | NEW |