Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(641)

Unified Diff: content/browser/theme_helper_mac.mm

Issue 136443008: Move preferred scrollbar style preference change listening from renderer to browser, 2 of 3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix iOS compile Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/theme_helper_mac.h ('k') | content/common/DEPS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/theme_helper_mac.mm
diff --git a/content/browser/theme_helper_mac.mm b/content/browser/theme_helper_mac.mm
index 3b952cc79b8e48d39e86bb6e6ce6b72d474d8001..21c476f0573777bbe78636c52a8d33cf94e5aa56 100644
--- a/content/browser/theme_helper_mac.mm
+++ b/content/browser/theme_helper_mac.mm
@@ -4,7 +4,7 @@
#include "content/browser/theme_helper_mac.h"
-#include <Foundation/Foundation.h>
+#import <Cocoa/Cocoa.h>
#include "content/common/view_messages.h"
#include "content/public/browser/browser_thread.h"
@@ -12,6 +12,17 @@
#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_process_host.h"
+// Declare notification names from the 10.7 SDK.
+#if !defined(MAC_OS_X_VERSION_10_7) || \
+ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
+NSString* NSPreferredScrollerStyleDidChangeNotification =
+ @"NSPreferredScrollerStyleDidChangeNotification";
+
+@interface NSScroller (LionSDK)
++ (NSInteger)preferredScrollerStyle;
+@end
+#endif
+
@interface ScrollbarPrefsObserver : NSObject
+ (void)registerAsObserver;
@@ -37,6 +48,14 @@ suspensionBehavior:NSNotificationSuspensionBehaviorDeliverImmediately];
name:@"AppleNoRedisplayAppearancePreferenceChanged"
object:nil
suspensionBehavior:NSNotificationSuspensionBehaviorCoalesce];
+
+ if ([NSScroller respondsToSelector:@selector(preferredScrollerStyle)]) {
+ [[NSNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(behaviorPrefsChanged:)
+ name:NSPreferredScrollerStyleDidChangeNotification
+ object:nil];
+ }
}
+ (void)appearancePrefsChanged:(NSNotification*)notification {
@@ -56,6 +75,7 @@ suspensionBehavior:NSNotificationSuspensionBehaviorCoalesce];
[defaults floatForKey:@"NSScrollerButtonDelay"],
[defaults floatForKey:@"NSScrollerButtonPeriod"],
[defaults boolForKey:@"AppleScrollerPagingBehavior"],
+ content::ThemeHelperMac::GetPreferredScrollerStyle(),
redraw);
}
@@ -63,6 +83,38 @@ suspensionBehavior:NSNotificationSuspensionBehaviorCoalesce];
namespace content {
+// static
+ThemeHelperMac* ThemeHelperMac::GetInstance() {
+ return Singleton<ThemeHelperMac,
+ LeakySingletonTraits<ThemeHelperMac> >::get();
+}
+
+// static
+blink::ScrollerStyle ThemeHelperMac::GetPreferredScrollerStyle() {
+ if (![NSScroller respondsToSelector:@selector(preferredScrollerStyle)])
+ return blink::ScrollerStyleLegacy;
+ return static_cast<blink::ScrollerStyle>([NSScroller preferredScrollerStyle]);
+}
+
+// static
+void ThemeHelperMac::SendThemeChangeToAllRenderers(
+ float initial_button_delay,
+ float autoscroll_button_delay,
+ bool jump_on_track_click,
+ blink::ScrollerStyle preferred_scroller_style,
+ bool redraw) {
+ for (RenderProcessHost::iterator it(RenderProcessHost::AllHostsIterator());
+ !it.IsAtEnd();
+ it.Advance()) {
+ it.GetCurrentValue()->Send(new ViewMsg_UpdateScrollbarTheme(
+ initial_button_delay,
+ autoscroll_button_delay,
+ jump_on_track_click,
+ preferred_scroller_style,
+ redraw));
+ }
+}
+
ThemeHelperMac::ThemeHelperMac() {
[ScrollbarPrefsObserver registerAsObserver];
registrar_.Add(this,
@@ -73,13 +125,6 @@ ThemeHelperMac::ThemeHelperMac() {
ThemeHelperMac::~ThemeHelperMac() {
}
-// static
-ThemeHelperMac* ThemeHelperMac::GetInstance() {
- return Singleton<ThemeHelperMac,
- LeakySingletonTraits<ThemeHelperMac> >::get();
-}
-
-
void ThemeHelperMac::Observe(int type,
const NotificationSource& source,
const NotificationDetails& details) {
@@ -94,24 +139,8 @@ void ThemeHelperMac::Observe(int type,
[defaults floatForKey:@"NSScrollerButtonDelay"],
[defaults floatForKey:@"NSScrollerButtonPeriod"],
[defaults boolForKey:@"AppleScrollerPagingBehavior"],
+ GetPreferredScrollerStyle(),
false));
}
-// static
-void ThemeHelperMac::SendThemeChangeToAllRenderers(
- float initial_button_delay,
- float autoscroll_button_delay,
- bool jump_on_track_click,
- bool redraw) {
- for (RenderProcessHost::iterator it(RenderProcessHost::AllHostsIterator());
- !it.IsAtEnd();
- it.Advance()) {
- it.GetCurrentValue()->Send(new ViewMsg_UpdateScrollbarTheme(
- initial_button_delay,
- autoscroll_button_delay,
- jump_on_track_click,
- redraw));
- }
-}
-
} // namespace content
« no previous file with comments | « content/browser/theme_helper_mac.h ('k') | content/common/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698