| OLD | NEW | 
|---|
|  | (Empty) | 
| 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 |  | 
| 3 // found in the LICENSE file. |  | 
| 4 |  | 
| 5 #import "ui/base/test/scoped_preferred_scroller_style_legacy_mac.h" |  | 
| 6 |  | 
| 7 #import "base/mac/sdk_forward_declarations.h" |  | 
| 8 #import "base/mac/scoped_objc_class_swizzler.h" |  | 
| 9 |  | 
| 10 using base::mac::ScopedObjCClassSwizzler; |  | 
| 11 |  | 
| 12 namespace { |  | 
| 13 |  | 
| 14 void NotifyStyleChanged() { |  | 
| 15   [[NSNotificationCenter defaultCenter] |  | 
| 16       postNotificationName:NSPreferredScrollerStyleDidChangeNotification |  | 
| 17                     object:nil]; |  | 
| 18 } |  | 
| 19 |  | 
| 20 }  // namespace |  | 
| 21 |  | 
| 22 // Donates a testing implementation of +[NSScroller preferredScrollerStyle]. |  | 
| 23 @interface FakeNSScrollerPreferredStyleDonor : NSObject |  | 
| 24 @end |  | 
| 25 |  | 
| 26 @implementation FakeNSScrollerPreferredStyleDonor |  | 
| 27 |  | 
| 28 + (NSInteger)preferredScrollerStyle { |  | 
| 29   return NSScrollerStyleLegacy; |  | 
| 30 } |  | 
| 31 |  | 
| 32 @end |  | 
| 33 |  | 
| 34 namespace ui { |  | 
| 35 namespace test { |  | 
| 36 |  | 
| 37 ScopedPreferredScrollerStyleLegacy::ScopedPreferredScrollerStyleLegacy() { |  | 
| 38   if (![NSScroller respondsToSelector:@selector(preferredScrollerStyle)]) |  | 
| 39     return; |  | 
| 40 |  | 
| 41   NSInteger previous_style = [NSScroller preferredScrollerStyle]; |  | 
| 42 |  | 
| 43   swizzler_.reset( |  | 
| 44       new ScopedObjCClassSwizzler([NSScroller class], |  | 
| 45                                   [FakeNSScrollerPreferredStyleDonor class], |  | 
| 46                                   @selector(preferredScrollerStyle))); |  | 
| 47 |  | 
| 48   if (previous_style != NSScrollerStyleLegacy) |  | 
| 49     NotifyStyleChanged(); |  | 
| 50 } |  | 
| 51 |  | 
| 52 ScopedPreferredScrollerStyleLegacy::~ScopedPreferredScrollerStyleLegacy() { |  | 
| 53   if (!swizzler_) |  | 
| 54     return;  // Handle 10.6, which wouldn't have swizzled anything. |  | 
| 55 |  | 
| 56   swizzler_.reset(); |  | 
| 57 |  | 
| 58   if ([NSScroller preferredScrollerStyle] != NSScrollerStyleLegacy) |  | 
| 59     NotifyStyleChanged(); |  | 
| 60 } |  | 
| 61 |  | 
| 62 }  // namespace test |  | 
| 63 }  // namespace ui |  | 
| OLD | NEW | 
|---|