Browse Source

chore: remove redundant @available checks (#34407)

* chore: require macOS 10.13 for Chromium

* chore: fix lint
Shelley Vohr 2 years ago
parent
commit
539a53786c

+ 43 - 53
shell/browser/api/electron_api_system_preferences_mac.mm

@@ -423,17 +423,14 @@ std::string SystemPreferences::GetSystemColor(gin_helper::ErrorThrower thrower,
 }
 
 bool SystemPreferences::CanPromptTouchID() {
-  if (@available(macOS 10.12.2, *)) {
-    base::scoped_nsobject<LAContext> context([[LAContext alloc] init]);
-    if (![context
-            canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
-                        error:nil])
-      return false;
-    if (@available(macOS 10.13.2, *))
-      return [context biometryType] == LABiometryTypeTouchID;
-    return true;
-  }
-  return false;
+  base::scoped_nsobject<LAContext> context([[LAContext alloc] init]);
+  if (![context
+          canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
+                      error:nil])
+    return false;
+  if (@available(macOS 10.13.2, *))
+    return [context biometryType] == LABiometryTypeTouchID;
+  return true;
 }
 
 v8::Local<v8::Promise> SystemPreferences::PromptTouchID(
@@ -442,46 +439,40 @@ v8::Local<v8::Promise> SystemPreferences::PromptTouchID(
   gin_helper::Promise<void> promise(isolate);
   v8::Local<v8::Promise> handle = promise.GetHandle();
 
-  if (@available(macOS 10.12.2, *)) {
-    base::scoped_nsobject<LAContext> context([[LAContext alloc] init]);
-    base::ScopedCFTypeRef<SecAccessControlRef> access_control =
-        base::ScopedCFTypeRef<SecAccessControlRef>(
-            SecAccessControlCreateWithFlags(
-                kCFAllocatorDefault,
-                kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
-                kSecAccessControlPrivateKeyUsage |
-                    kSecAccessControlUserPresence,
-                nullptr));
-
-    scoped_refptr<base::SequencedTaskRunner> runner =
-        base::SequencedTaskRunnerHandle::Get();
-
-    __block gin_helper::Promise<void> p = std::move(promise);
-    [context
-        evaluateAccessControl:access_control
-                    operation:LAAccessControlOperationUseKeySign
-              localizedReason:[NSString stringWithUTF8String:reason.c_str()]
-                        reply:^(BOOL success, NSError* error) {
-                          if (!success) {
-                            std::string err_msg = std::string(
-                                [error.localizedDescription UTF8String]);
-                            runner->PostTask(
-                                FROM_HERE,
-                                base::BindOnce(
-                                    gin_helper::Promise<void>::RejectPromise,
-                                    std::move(p), std::move(err_msg)));
-                          } else {
-                            runner->PostTask(
-                                FROM_HERE,
-                                base::BindOnce(
-                                    gin_helper::Promise<void>::ResolvePromise,
-                                    std::move(p)));
-                          }
-                        }];
-  } else {
-    promise.RejectWithErrorMessage(
-        "This API is not available on macOS versions older than 10.12.2");
-  }
+  base::scoped_nsobject<LAContext> context([[LAContext alloc] init]);
+  base::ScopedCFTypeRef<SecAccessControlRef> access_control =
+      base::ScopedCFTypeRef<SecAccessControlRef>(
+          SecAccessControlCreateWithFlags(
+              kCFAllocatorDefault, kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
+              kSecAccessControlPrivateKeyUsage | kSecAccessControlUserPresence,
+              nullptr));
+
+  scoped_refptr<base::SequencedTaskRunner> runner =
+      base::SequencedTaskRunnerHandle::Get();
+
+  __block gin_helper::Promise<void> p = std::move(promise);
+  [context
+      evaluateAccessControl:access_control
+                  operation:LAAccessControlOperationUseKeySign
+            localizedReason:[NSString stringWithUTF8String:reason.c_str()]
+                      reply:^(BOOL success, NSError* error) {
+                        if (!success) {
+                          std::string err_msg = std::string(
+                              [error.localizedDescription UTF8String]);
+                          runner->PostTask(
+                              FROM_HERE,
+                              base::BindOnce(
+                                  gin_helper::Promise<void>::RejectPromise,
+                                  std::move(p), std::move(err_msg)));
+                        } else {
+                          runner->PostTask(
+                              FROM_HERE,
+                              base::BindOnce(
+                                  gin_helper::Promise<void>::ResolvePromise,
+                                  std::move(p)));
+                        }
+                      }];
+
   return handle;
 }
 
@@ -529,8 +520,7 @@ std::string SystemPreferences::GetColor(gin_helper::ErrorThrower thrower,
   } else if (color == "quaternary-label") {
     sysColor = [NSColor quaternaryLabelColor];
   } else if (color == "scrubber-textured-background") {
-    if (@available(macOS 10.12.2, *))
-      sysColor = [NSColor scrubberTexturedBackgroundColor];
+    sysColor = [NSColor scrubberTexturedBackgroundColor];
   } else if (color == "secondary-label") {
     sysColor = [NSColor secondaryLabelColor];
   } else if (color == "selected-content-background") {

+ 0 - 34
shell/browser/mac/electron_application_delegate.mm

@@ -19,30 +19,6 @@
 
 #import <UserNotifications/UserNotifications.h>
 
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
-// On macOS 10.12, the IME system attempts to allocate a 2^64 size buffer,
-// which would typically cause an OOM crash. To avoid this, the problematic
-// method is swizzled out and the make-OOM-fatal bit is disabled for the
-// duration of the original call. https://crbug.com/654695
-static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session;
-@interface OOMDisabledIMKInputSession : NSObject
-@end
-@implementation OOMDisabledIMKInputSession
-- (void)_coreAttributesFromRange:(NSRange)range
-                 whichAttributes:(long long)attributes  // NOLINT(runtime/int)
-               completionHandler:(void (^)(void))block {
-  // The allocator flag is per-process, so other threads may temporarily
-  // not have fatal OOM occur while this method executes, but it is better
-  // than crashing when using IME.
-  base::allocator::SetCallNewHandlerOnMallocFailure(false);
-  g_swizzle_imk_input_session->InvokeOriginal<
-      void, NSRange, long long, void (^)(void)>(  // NOLINT(runtime/int)
-      self, _cmd, range, attributes, block);
-  base::allocator::SetCallNewHandlerOnMallocFailure(true);
-}
-@end
-#endif  // BUILDFLAG(USE_ALLOCATOR_SHIM)
-
 static NSDictionary* UNNotificationResponseToNSDictionary(
     UNNotificationResponse* response) API_AVAILABLE(macosx(10.14)) {
   // [response isKindOfClass:[UNNotificationResponse class]]
@@ -109,16 +85,6 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
 
   electron::Browser::Get()->DidFinishLaunching(
       electron::NSDictionaryToDictionaryValue(notification_info));
-
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
-  // Disable fatal OOM to hack around an OS bug https://crbug.com/654695.
-  if (base::mac::IsOS10_12()) {
-    g_swizzle_imk_input_session = new base::mac::ScopedObjCClassSwizzler(
-        NSClassFromString(@"IMKInputSession"),
-        [OOMDisabledIMKInputSession class],
-        @selector(_coreAttributesFromRange:whichAttributes:completionHandler:));
-  }
-#endif
 }
 
 - (void)applicationDidBecomeActive:(NSNotification*)notification {

+ 3 - 5
shell/browser/mac/in_app_purchase_product.mm

@@ -220,11 +220,9 @@
                    withLocal:product.priceLocale] UTF8String];
 
       // Currency Information
-      if (@available(macOS 10.12, *)) {
-        if (product.priceLocale.currencyCode != nil) {
-          productStruct.currencyCode =
-              [product.priceLocale.currencyCode UTF8String];
-        }
+      if (product.priceLocale.currencyCode != nil) {
+        productStruct.currencyCode =
+            [product.priceLocale.currencyCode UTF8String];
       }
     }
   }

+ 19 - 40
shell/browser/native_window_mac.mm

@@ -392,13 +392,9 @@ NativeWindowMac::NativeWindowMac(const gin_helper::Dictionary& options,
   // Create a tab only if tabbing identifier is specified and window has
   // a native title bar.
   if (tabbingIdentifier.empty() || transparent() || !has_frame()) {
-    if (@available(macOS 10.12, *)) {
-      [window_ setTabbingMode:NSWindowTabbingModeDisallowed];
-    }
+    [window_ setTabbingMode:NSWindowTabbingModeDisallowed];
   } else {
-    if (@available(macOS 10.12, *)) {
-      [window_ setTabbingIdentifier:base::SysUTF8ToNSString(tabbingIdentifier)];
-    }
+    [window_ setTabbingIdentifier:base::SysUTF8ToNSString(tabbingIdentifier)];
   }
 
   // Resize to content bounds.
@@ -1564,68 +1560,51 @@ void NativeWindowMac::UpdateFrame() {
 
 void NativeWindowMac::SetTouchBar(
     std::vector<gin_helper::PersistentDictionary> items) {
-  if (@available(macOS 10.12.2, *)) {
-    touch_bar_.reset([[ElectronTouchBar alloc]
-        initWithDelegate:window_delegate_.get()
-                  window:this
-                settings:std::move(items)]);
-    [window_ setTouchBar:nil];
-  }
+  touch_bar_.reset([[ElectronTouchBar alloc]
+      initWithDelegate:window_delegate_.get()
+                window:this
+              settings:std::move(items)]);
+  [window_ setTouchBar:nil];
 }
 
 void NativeWindowMac::RefreshTouchBarItem(const std::string& item_id) {
-  if (@available(macOS 10.12.2, *)) {
-    if (touch_bar_ && [window_ touchBar])
-      [touch_bar_ refreshTouchBarItem:[window_ touchBar] id:item_id];
-  }
+  if (touch_bar_ && [window_ touchBar])
+    [touch_bar_ refreshTouchBarItem:[window_ touchBar] id:item_id];
 }
 
 void NativeWindowMac::SetEscapeTouchBarItem(
     gin_helper::PersistentDictionary item) {
-  if (@available(macOS 10.12.2, *)) {
-    if (touch_bar_ && [window_ touchBar])
-      [touch_bar_ setEscapeTouchBarItem:std::move(item)
-                            forTouchBar:[window_ touchBar]];
-  }
+  if (touch_bar_ && [window_ touchBar])
+    [touch_bar_ setEscapeTouchBarItem:std::move(item)
+                          forTouchBar:[window_ touchBar]];
 }
 
 void NativeWindowMac::SelectPreviousTab() {
-  if (@available(macOS 10.12, *)) {
-    [window_ selectPreviousTab:nil];
-  }
+  [window_ selectPreviousTab:nil];
 }
 
 void NativeWindowMac::SelectNextTab() {
-  if (@available(macOS 10.12, *)) {
-    [window_ selectNextTab:nil];
-  }
+  [window_ selectNextTab:nil];
 }
 
 void NativeWindowMac::MergeAllWindows() {
-  if (@available(macOS 10.12, *)) {
-    [window_ mergeAllWindows:nil];
-  }
+  [window_ mergeAllWindows:nil];
 }
 
 void NativeWindowMac::MoveTabToNewWindow() {
-  if (@available(macOS 10.12, *)) {
-    [window_ moveTabToNewWindow:nil];
-  }
+  [window_ moveTabToNewWindow:nil];
 }
 
 void NativeWindowMac::ToggleTabBar() {
-  if (@available(macOS 10.12, *)) {
-    [window_ toggleTabBar:nil];
-  }
+  [window_ toggleTabBar:nil];
 }
 
 bool NativeWindowMac::AddTabbedWindow(NativeWindow* window) {
   if (window_ == window->GetNativeWindow().GetNativeNSWindow()) {
     return false;
   } else {
-    if (@available(macOS 10.12, *))
-      [window_ addTabbedWindow:window->GetNativeWindow().GetNativeNSWindow()
-                       ordered:NSWindowAbove];
+    [window_ addTabbedWindow:window->GetNativeWindow().GetNativeNSWindow()
+                     ordered:NSWindowAbove];
   }
   return true;
 }

+ 2 - 4
shell/browser/ui/cocoa/electron_menu_controller.mm

@@ -422,10 +422,8 @@ static base::scoped_nsobject<NSMenu> recentDocumentsMenuSwap_;
       [item setKeyEquivalentModifierMask:modifier_mask];
     }
 
-    if (@available(macOS 10.13, *)) {
-      [(id)item
-          setAllowsKeyEquivalentWhenHidden:(model->WorksWhenHiddenAt(index))];
-    }
+    [(id)item
+        setAllowsKeyEquivalentWhenHidden:(model->WorksWhenHiddenAt(index))];
 
     // Set menu item's role.
     [item setTarget:self];

+ 1 - 1
shell/browser/ui/cocoa/electron_ns_window.mm

@@ -56,7 +56,7 @@ bool ScopedDisableResize::disable_resize_ = false;
   return [super contentRectForFrameRect:frameRect];
 }
 
-- (NSTouchBar*)makeTouchBar API_AVAILABLE(macosx(10.12.2)) {
+- (NSTouchBar*)makeTouchBar {
   if (shell_->touch_bar())
     return [shell_->touch_bar() makeTouchBar];
   else

+ 1 - 2
shell/browser/ui/cocoa/electron_ns_window_delegate.mm

@@ -329,8 +329,7 @@ using FullScreenTransitionState =
 #pragma mark - NSTouchBarDelegate
 
 - (NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar
-      makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier
-    API_AVAILABLE(macosx(10.12.2)) {
+      makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier {
   if (touchBar && shell_->touch_bar())
     return [shell_->touch_bar() makeItemForIdentifier:identifier];
   else

+ 18 - 33
shell/browser/ui/cocoa/electron_touch_bar.h

@@ -29,19 +29,16 @@
                 window:(electron::NativeWindow*)window
               settings:(std::vector<gin_helper::PersistentDictionary>)settings;
 
-- (NSTouchBar*)makeTouchBar API_AVAILABLE(macosx(10.12.2));
-- (NSTouchBar*)touchBarFromItemIdentifiers:(NSMutableArray*)items
-    API_AVAILABLE(macosx(10.12.2));
+- (NSTouchBar*)makeTouchBar;
+- (NSTouchBar*)touchBarFromItemIdentifiers:(NSMutableArray*)items;
 - (NSMutableArray*)identifiersFromSettings:
     (const std::vector<gin_helper::PersistentDictionary>&)settings;
 - (void)refreshTouchBarItem:(NSTouchBar*)touchBar
-                         id:(const std::string&)item_id
-    API_AVAILABLE(macosx(10.12.2));
+                         id:(const std::string&)item_id;
 - (void)addNonDefaultTouchBarItems:
     (const std::vector<gin_helper::PersistentDictionary>&)items;
 - (void)setEscapeTouchBarItem:(gin_helper::PersistentDictionary)item
-                  forTouchBar:(NSTouchBar*)touchBar
-    API_AVAILABLE(macosx(10.12.2));
+                  forTouchBar:(NSTouchBar*)touchBar;
 
 - (NSString*)idFromIdentifier:(NSString*)identifier
                    withPrefix:(NSString*)prefix;
@@ -52,47 +49,35 @@
 
 // Selector actions
 - (void)buttonAction:(id)sender;
-- (void)colorPickerAction:(id)sender API_AVAILABLE(macosx(10.12.2));
-- (void)sliderAction:(id)sender API_AVAILABLE(macosx(10.12.2));
+- (void)colorPickerAction:(id)sender;
+- (void)sliderAction:(id)sender;
 
 // Helpers to create touch bar items
-- (NSTouchBarItem*)makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier
-    API_AVAILABLE(macosx(10.12.2));
+- (NSTouchBarItem*)makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier;
 - (NSTouchBarItem*)makeButtonForID:(NSString*)id
-                    withIdentifier:(NSString*)identifier
-    API_AVAILABLE(macosx(10.12.2));
+                    withIdentifier:(NSString*)identifier;
 - (NSTouchBarItem*)makeLabelForID:(NSString*)id
-                   withIdentifier:(NSString*)identifier
-    API_AVAILABLE(macosx(10.12.2));
+                   withIdentifier:(NSString*)identifier;
 - (NSTouchBarItem*)makeColorPickerForID:(NSString*)id
-                         withIdentifier:(NSString*)identifier
-    API_AVAILABLE(macosx(10.12.2));
+                         withIdentifier:(NSString*)identifier;
 - (NSTouchBarItem*)makeSliderForID:(NSString*)id
-                    withIdentifier:(NSString*)identifier
-    API_AVAILABLE(macosx(10.12.2));
+                    withIdentifier:(NSString*)identifier;
 - (NSTouchBarItem*)makePopoverForID:(NSString*)id
-                     withIdentifier:(NSString*)identifier
-    API_AVAILABLE(macosx(10.12.2));
+                     withIdentifier:(NSString*)identifier;
 - (NSTouchBarItem*)makeGroupForID:(NSString*)id
-                   withIdentifier:(NSString*)identifier
-    API_AVAILABLE(macosx(10.12.2));
+                   withIdentifier:(NSString*)identifier;
 
 // Helpers to update touch bar items
 - (void)updateButton:(NSCustomTouchBarItem*)item
-        withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2));
+        withSettings:(const gin_helper::PersistentDictionary&)settings;
 - (void)updateLabel:(NSCustomTouchBarItem*)item
-       withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2));
+       withSettings:(const gin_helper::PersistentDictionary&)settings;
 - (void)updateColorPicker:(NSColorPickerTouchBarItem*)item
-             withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2));
+             withSettings:(const gin_helper::PersistentDictionary&)settings;
 - (void)updateSlider:(NSSliderTouchBarItem*)item
-        withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2));
+        withSettings:(const gin_helper::PersistentDictionary&)settings;
 - (void)updatePopover:(NSPopoverTouchBarItem*)item
-         withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2));
+         withSettings:(const gin_helper::PersistentDictionary&)settings;
 
 @end
 

+ 36 - 47
shell/browser/ui/cocoa/electron_touch_bar.mm

@@ -67,38 +67,36 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 
   bool has_other_items_proxy = false;
 
-  if (@available(macOS 10.12.2, *)) {
-    for (const auto& item : dicts) {
-      std::string type;
-      std::string item_id;
-      if (item.Get("type", &type) && item.Get("id", &item_id)) {
-        NSTouchBarItemIdentifier identifier = nil;
-        if (type == "spacer") {
-          std::string size;
-          item.Get("size", &size);
-          if (size == "large") {
-            identifier = NSTouchBarItemIdentifierFixedSpaceLarge;
-          } else if (size == "flexible") {
-            identifier = NSTouchBarItemIdentifierFlexibleSpace;
-          } else {
-            identifier = NSTouchBarItemIdentifierFixedSpaceSmall;
-          }
-        } else if (type == "other_items_proxy") {
-          identifier = NSTouchBarItemIdentifierOtherItemsProxy;
-          has_other_items_proxy = true;
+  for (const auto& item : dicts) {
+    std::string type;
+    std::string item_id;
+    if (item.Get("type", &type) && item.Get("id", &item_id)) {
+      NSTouchBarItemIdentifier identifier = nil;
+      if (type == "spacer") {
+        std::string size;
+        item.Get("size", &size);
+        if (size == "large") {
+          identifier = NSTouchBarItemIdentifierFixedSpaceLarge;
+        } else if (size == "flexible") {
+          identifier = NSTouchBarItemIdentifierFlexibleSpace;
         } else {
-          identifier = [self identifierFromID:item_id type:type];
+          identifier = NSTouchBarItemIdentifierFixedSpaceSmall;
         }
+      } else if (type == "other_items_proxy") {
+        identifier = NSTouchBarItemIdentifierOtherItemsProxy;
+        has_other_items_proxy = true;
+      } else {
+        identifier = [self identifierFromID:item_id type:type];
+      }
 
-        if (identifier) {
-          settings_[item_id] = item;
-          [identifiers addObject:identifier];
-        }
+      if (identifier) {
+        settings_[item_id] = item;
+        [identifiers addObject:identifier];
       }
     }
-    if (!has_other_items_proxy)
-      [identifiers addObject:NSTouchBarItemIdentifierOtherItemsProxy];
   }
+  if (!has_other_items_proxy)
+    [identifiers addObject:NSTouchBarItemIdentifierOtherItemsProxy];
 
   return identifiers;
 }
@@ -140,8 +138,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 - (void)refreshTouchBarItem:(NSTouchBar*)touchBar
                          id:(NSTouchBarItemIdentifier)identifier
                    withType:(const std::string&)item_type
-               withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2)) {
+               withSettings:(const gin_helper::PersistentDictionary&)settings {
   NSTouchBarItem* item = [touchBar itemForIdentifier:identifier];
   if (!item)
     return;
@@ -289,8 +286,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 }
 
 - (void)scrubber:(NSScrubber*)scrubber
-    didSelectItemAtIndex:(NSInteger)selectedIndex
-    API_AVAILABLE(macosx(10.12.2)) {
+    didSelectItemAtIndex:(NSInteger)selectedIndex {
   base::DictionaryValue details;
   details.SetInteger("selectedIndex", selectedIndex);
   details.SetString("type", "select");
@@ -299,8 +295,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 }
 
 - (void)scrubber:(NSScrubber*)scrubber
-    didHighlightItemAtIndex:(NSInteger)highlightedIndex
-    API_AVAILABLE(macosx(10.12.2)) {
+    didHighlightItemAtIndex:(NSInteger)highlightedIndex {
   base::DictionaryValue details;
   details.SetInteger("highlightedIndex", highlightedIndex);
   details.SetString("type", "highlight");
@@ -592,8 +587,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 }
 
 - (void)updateGroup:(NSGroupTouchBarItem*)item
-       withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2)) {
+       withSettings:(const gin_helper::PersistentDictionary&)settings {
   v8::Isolate* isolate = electron::JavascriptEnvironment::GetIsolate();
   v8::HandleScope handle_scope(isolate);
 
@@ -609,8 +603,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 }
 
 - (NSTouchBarItem*)makeSegmentedControlForID:(NSString*)id
-                              withIdentifier:(NSString*)identifier
-    API_AVAILABLE(macosx(10.12.2)) {
+                              withIdentifier:(NSString*)identifier {
   std::string s_id([id UTF8String]);
   if (![self hasItemWithID:s_id])
     return nil;
@@ -635,8 +628,8 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 }
 
 - (void)updateSegmentedControl:(NSCustomTouchBarItem*)item
-                  withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2)) {
+                  withSettings:
+                      (const gin_helper::PersistentDictionary&)settings {
   NSSegmentedControl* control = item.view;
 
   std::string segmentStyle;
@@ -697,8 +690,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 }
 
 - (NSTouchBarItem*)makeScrubberForID:(NSString*)id
-                      withIdentifier:(NSString*)identifier
-    API_AVAILABLE(macosx(10.12.2)) {
+                      withIdentifier:(NSString*)identifier {
   std::string s_id([id UTF8String]);
   if (![self hasItemWithID:s_id])
     return nil;
@@ -729,8 +721,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 }
 
 - (void)updateScrubber:(NSCustomTouchBarItem*)item
-          withSettings:(const gin_helper::PersistentDictionary&)settings
-    API_AVAILABLE(macosx(10.12.2)) {
+          withSettings:(const gin_helper::PersistentDictionary&)settings {
   NSScrubber* scrubber = item.view;
 
   bool showsArrowButtons = false;
@@ -780,8 +771,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
   [scrubber reloadData];
 }
 
-- (NSInteger)numberOfItemsForScrubber:(NSScrubber*)scrubber
-    API_AVAILABLE(macosx(10.12.2)) {
+- (NSInteger)numberOfItemsForScrubber:(NSScrubber*)scrubber {
   std::string s_id([[scrubber identifier] UTF8String]);
   if (![self hasItemWithID:s_id])
     return 0;
@@ -796,8 +786,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 }
 
 - (NSScrubberItemView*)scrubber:(NSScrubber*)scrubber
-             viewForItemAtIndex:(NSInteger)index
-    API_AVAILABLE(macosx(10.12.2)) {
+             viewForItemAtIndex:(NSInteger)index {
   std::string s_id([[scrubber identifier] UTF8String]);
   if (![self hasItemWithID:s_id])
     return nil;
@@ -839,7 +828,7 @@ static NSString* const ImageScrubberItemIdentifier = @"scrubber.image.item";
 
 - (NSSize)scrubber:(NSScrubber*)scrubber
                 layout:(NSScrubberFlowLayout*)layout
-    sizeForItemAtIndex:(NSInteger)itemIndex API_AVAILABLE(macosx(10.12.2)) {
+    sizeForItemAtIndex:(NSInteger)itemIndex {
   NSInteger width = 50;
   NSInteger height = 30;
   NSInteger margin = 15;