| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/cocoa/content_settings_dialog_controller.h" | 5 #import "chrome/browser/cocoa/content_settings_dialog_controller.h" | 
| 6 | 6 | 
| 7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> | 
| 8 | 8 | 
| 9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" | 
| 10 #include "base/mac_util.h" | 10 #include "base/mac_util.h" | 
| 11 #include "chrome/browser/browser.h" | 11 #include "chrome/browser/browser.h" | 
| 12 #include "chrome/browser/browser_window.h" | 12 #include "chrome/browser/browser_window.h" | 
| 13 #import "chrome/browser/cocoa/content_exceptions_window_controller.h" | 13 #import "chrome/browser/cocoa/content_exceptions_window_controller.h" | 
| 14 #import "chrome/browser/cocoa/cookies_window_controller.h" | 14 #import "chrome/browser/cocoa/cookies_window_controller.h" | 
| 15 #import "chrome/browser/cocoa/geolocation_exceptions_window_controller.h" | 15 #import "chrome/browser/cocoa/geolocation_exceptions_window_controller.h" | 
| 16 #import "chrome/browser/cocoa/l10n_util.h" | 16 #import "chrome/browser/cocoa/l10n_util.h" | 
| 17 #import "chrome/browser/geolocation/geolocation_content_settings_map.h" | 17 #import "chrome/browser/geolocation/geolocation_content_settings_map.h" | 
| 18 #import "chrome/browser/host_content_settings_map.h" | 18 #import "chrome/browser/host_content_settings_map.h" | 
| 19 #include "chrome/browser/pref_service.h" | 19 #include "chrome/browser/pref_service.h" | 
| 20 #include "chrome/browser/profile.h" | 20 #include "chrome/browser/profile.h" | 
| 21 #include "chrome/common/notification_service.h" | 21 #include "chrome/common/notification_service.h" | 
| 22 #include "chrome/common/pref_names.h" | 22 #include "chrome/common/pref_names.h" | 
| 23 #include "chrome/common/url_constants.h" | 23 #include "chrome/common/url_constants.h" | 
| 24 #include "grit/locale_settings.h" | 24 #include "grit/locale_settings.h" | 
| 25 | 25 | 
| 26 namespace { | 26 namespace { | 
| 27 | 27 | 
| 28 // Index of the "enabled" and "disabled" radio group settings in all tabs except |  | 
| 29 // for the cookies tab. |  | 
| 30 const NSInteger kEnabledIndex = 0; |  | 
| 31 const NSInteger kDisabledIndex = 1; |  | 
| 32 |  | 
| 33 // Indices of the various cookie settings in the cookie radio group. |  | 
| 34 const NSInteger kCookieEnabledIndex = 0; |  | 
| 35 const NSInteger kCookieAskIndex = 1; |  | 
| 36 const NSInteger kCookieDisabledIndex = 2; |  | 
| 37 |  | 
| 38 // Stores the currently visible content settings dialog, if any. | 28 // Stores the currently visible content settings dialog, if any. | 
| 39 ContentSettingsDialogController* g_instance = nil; | 29 ContentSettingsDialogController* g_instance = nil; | 
| 40 | 30 | 
| 41 // Indices of the various geolocation settings in the geolocation radio group. |  | 
| 42 const NSInteger kGeolocationEnabledIndex = 0; |  | 
| 43 const NSInteger kGeolocationAskIndex = 1; |  | 
| 44 const NSInteger kGeolocationDisabledIndex = 2; |  | 
| 45 |  | 
| 46 // Walks views in top-down order, wraps each to their current width, and moves | 31 // Walks views in top-down order, wraps each to their current width, and moves | 
| 47 // the latter ones down to prevent overlaps. | 32 // the latter ones down to prevent overlaps. | 
| 48 CGFloat VerticallyReflowGroup(NSArray* views) { | 33 CGFloat VerticallyReflowGroup(NSArray* views) { | 
| 49   views = [views sortedArrayUsingFunction:cocoa_l10n_util::CompareFrameY | 34   views = [views sortedArrayUsingFunction:cocoa_l10n_util::CompareFrameY | 
| 50                                   context:NULL]; | 35                                   context:NULL]; | 
| 51   CGFloat localVerticalShift = 0; | 36   CGFloat localVerticalShift = 0; | 
| 52   for (NSInteger index = [views count] - 1; index >= 0; --index) { | 37   for (NSInteger index = [views count] - 1; index >= 0; --index) { | 
| 53     NSView* view = [views objectAtIndex:index]; | 38     NSView* view = [views objectAtIndex:index]; | 
| 54 | 39 | 
| 55     // Since the tab pane is in a horizontal resizer in IB, it's convenient | 40     // Since the tab pane is in a horizontal resizer in IB, it's convenient | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 70 } | 55 } | 
| 71 | 56 | 
| 72 }  // namespace | 57 }  // namespace | 
| 73 | 58 | 
| 74 | 59 | 
| 75 @interface ContentSettingsDialogController(Private) | 60 @interface ContentSettingsDialogController(Private) | 
| 76 - (id)initWithProfile:(Profile*)profile; | 61 - (id)initWithProfile:(Profile*)profile; | 
| 77 - (void)selectTab:(ContentSettingsType)settingsType; | 62 - (void)selectTab:(ContentSettingsType)settingsType; | 
| 78 - (void)showExceptionsForType:(ContentSettingsType)settingsType; | 63 - (void)showExceptionsForType:(ContentSettingsType)settingsType; | 
| 79 | 64 | 
| 80 // Properties that the radio groups and checkboxes are bound to. | 65 // Callback when preferences are changed. |prefName| is the name of the | 
| 81 @property(assign, nonatomic) NSInteger cookieSettingIndex; | 66 // pref that has changed. | 
| 82 @property(assign, nonatomic) BOOL blockThirdPartyCookies; | 67 - (void)prefChanged:(std::wstring*)prefName; | 
| 83 @property(assign, nonatomic) BOOL clearSiteDataOnExit; |  | 
| 84 @property(assign, nonatomic) NSInteger imagesEnabledIndex; |  | 
| 85 @property(assign, nonatomic) NSInteger javaScriptEnabledIndex; |  | 
| 86 @property(assign, nonatomic) NSInteger popupsEnabledIndex; |  | 
| 87 @property(assign, nonatomic) NSInteger pluginsEnabledIndex; |  | 
| 88 @property(assign, nonatomic) NSInteger geolocationSettingIndex; |  | 
| 89 | 68 | 
| 90 @end | 69 @end | 
| 91 | 70 | 
| 92 namespace ContentSettingsDialogControllerInternal { | 71 namespace ContentSettingsDialogControllerInternal { | 
| 93 | 72 | 
| 94 // A C++ class registered for changes in preferences. | 73 // A C++ class registered for changes in preferences. | 
| 95 class PrefObserverBridge : public NotificationObserver { | 74 class PrefObserverBridge : public NotificationObserver { | 
| 96  public: | 75  public: | 
| 97   PrefObserverBridge(ContentSettingsDialogController* controller) | 76   PrefObserverBridge(ContentSettingsDialogController* controller) | 
| 98       : controller_(controller) {} | 77       : controller_(controller) {} | 
| 99 | 78 | 
| 100   virtual ~PrefObserverBridge() {} | 79   virtual ~PrefObserverBridge() {} | 
| 101 | 80 | 
| 102   virtual void Observe(NotificationType type, | 81   virtual void Observe(NotificationType type, | 
| 103                        const NotificationSource& source, | 82                        const NotificationSource& source, | 
| 104                        const NotificationDetails& details) { | 83                        const NotificationDetails& details) { | 
| 105     if (type == NotificationType::PREF_CHANGED) { | 84     if (!disabled_ && type == NotificationType::PREF_CHANGED) { | 
| 106       std::wstring* pref_name = Details<std::wstring>(details).ptr(); | 85       [controller_ prefChanged:Details<std::wstring>(details).ptr()]; | 
| 107       if (*pref_name == prefs::kClearSiteDataOnExit) { |  | 
| 108         // Update UI. |  | 
| 109         [controller_ setClearSiteDataOnExit:[controller_ clearSiteDataOnExit]]; |  | 
| 110       } |  | 
| 111     } | 86     } | 
| 112   } | 87   } | 
| 113 | 88 | 
|  | 89   void SetDisabled(bool disabled) { | 
|  | 90     disabled_ = disabled; | 
|  | 91   } | 
|  | 92 | 
| 114  private: | 93  private: | 
| 115   ContentSettingsDialogController* controller_;  // weak, owns us | 94   ContentSettingsDialogController* controller_;  // weak, owns us | 
|  | 95   bool disabled_;  // true if notifications should be ignored. | 
|  | 96 }; | 
|  | 97 | 
|  | 98 // A C++ utility class to disable notifications for PrefsObserverBridge. | 
|  | 99 // The intended usage is to create on the stack. | 
|  | 100 class PrefObserverDisabler { | 
|  | 101  public: | 
|  | 102   PrefObserverDisabler(PrefObserverBridge *bridge) : bridge_(bridge) { | 
|  | 103     bridge_->SetDisabled(true); | 
|  | 104   } | 
|  | 105 | 
|  | 106   ~PrefObserverDisabler() { | 
|  | 107     bridge_->SetDisabled(false); | 
|  | 108   } | 
|  | 109 | 
|  | 110  private: | 
|  | 111   PrefObserverBridge *bridge_; | 
| 116 }; | 112 }; | 
| 117 | 113 | 
| 118 }  // ContentSettingsDialogControllerInternal | 114 }  // ContentSettingsDialogControllerInternal | 
| 119 | 115 | 
| 120 @implementation ContentSettingsDialogController | 116 @implementation ContentSettingsDialogController | 
| 121 | 117 | 
| 122 +(id)showContentSettingsForType:(ContentSettingsType)settingsType | 118 + (id)showContentSettingsForType:(ContentSettingsType)settingsType | 
| 123                         profile:(Profile*)profile { | 119                          profile:(Profile*)profile { | 
| 124   profile = profile->GetOriginalProfile(); | 120   profile = profile->GetOriginalProfile(); | 
| 125   if (!g_instance) | 121   if (!g_instance) | 
| 126     g_instance = [[self alloc] initWithProfile:profile]; | 122     g_instance = [[self alloc] initWithProfile:profile]; | 
| 127 | 123 | 
| 128   // The code doesn't expect multiple profiles. Check that support for that | 124   // The code doesn't expect multiple profiles. Check that support for that | 
| 129   // hasn't been added. | 125   // hasn't been added. | 
| 130   DCHECK(g_instance->profile_ == profile); | 126   DCHECK(g_instance->profile_ == profile); | 
| 131 | 127 | 
| 132   // Select desired tab. | 128   // Select desired tab. | 
| 133   if (settingsType == CONTENT_SETTINGS_TYPE_DEFAULT) { | 129   if (settingsType == CONTENT_SETTINGS_TYPE_DEFAULT) { | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 150   DCHECK(profile); | 146   DCHECK(profile); | 
| 151   NSString* nibpath = | 147   NSString* nibpath = | 
| 152       [mac_util::MainAppBundle() pathForResource:@"ContentSettings" | 148       [mac_util::MainAppBundle() pathForResource:@"ContentSettings" | 
| 153                                           ofType:@"nib"]; | 149                                           ofType:@"nib"]; | 
| 154   if ((self = [super initWithWindowNibPath:nibpath owner:self])) { | 150   if ((self = [super initWithWindowNibPath:nibpath owner:self])) { | 
| 155     profile_ = profile; | 151     profile_ = profile; | 
| 156 | 152 | 
| 157     observer_.reset( | 153     observer_.reset( | 
| 158         new ContentSettingsDialogControllerInternal::PrefObserverBridge(self)); | 154         new ContentSettingsDialogControllerInternal::PrefObserverBridge(self)); | 
| 159     clearSiteDataOnExit_.Init(prefs::kClearSiteDataOnExit, | 155     clearSiteDataOnExit_.Init(prefs::kClearSiteDataOnExit, | 
| 160                               profile->GetPrefs(), observer_.get()); | 156                               profile_->GetPrefs(), observer_.get()); | 
|  | 157 | 
|  | 158     // Manually observe notifications for preferences that are grouped in | 
|  | 159     // the HostContentSettingsMap or GeolocationContentSettingsMap. | 
|  | 160     PrefService* prefs = profile_->GetPrefs(); | 
|  | 161     prefs->AddPrefObserver(prefs::kBlockThirdPartyCookies, observer_.get()); | 
|  | 162     prefs->AddPrefObserver(prefs::kDefaultContentSettings, observer_.get()); | 
|  | 163     prefs->AddPrefObserver(prefs::kGeolocationDefaultContentSetting, | 
|  | 164                            observer_.get()); | 
| 161 | 165 | 
| 162     // We don't need to observe changes in this value. | 166     // We don't need to observe changes in this value. | 
| 163     lastSelectedTab_.Init(prefs::kContentSettingsWindowLastTabIndex, | 167     lastSelectedTab_.Init(prefs::kContentSettingsWindowLastTabIndex, | 
| 164                           profile->GetPrefs(), NULL); | 168                           profile_->GetPrefs(), NULL); | 
| 165   } | 169   } | 
| 166   return self; | 170   return self; | 
| 167 } | 171 } | 
| 168 | 172 | 
|  | 173 - (void)dealloc { | 
|  | 174   if (profile_) { | 
|  | 175     PrefService* prefs = profile_->GetPrefs(); | 
|  | 176     prefs->RemovePrefObserver(prefs::kBlockThirdPartyCookies, observer_.get()); | 
|  | 177     prefs->RemovePrefObserver(prefs::kDefaultContentSettings, observer_.get()); | 
|  | 178     prefs->RemovePrefObserver(prefs::kGeolocationDefaultContentSetting, | 
|  | 179                               observer_.get()); | 
|  | 180   } | 
|  | 181 | 
|  | 182   [super dealloc]; | 
|  | 183 } | 
|  | 184 | 
| 169 - (void)closeExceptionsSheet { | 185 - (void)closeExceptionsSheet { | 
| 170   NSWindow* attachedSheet = [[self window] attachedSheet]; | 186   NSWindow* attachedSheet = [[self window] attachedSheet]; | 
| 171   if (attachedSheet) { | 187   if (attachedSheet) { | 
| 172     [NSApp endSheet:attachedSheet]; | 188     [NSApp endSheet:attachedSheet]; | 
| 173   } | 189   } | 
| 174 } | 190 } | 
| 175 | 191 | 
| 176 - (void)awakeFromNib { | 192 - (void)awakeFromNib { | 
| 177   DCHECK([self window]); | 193   DCHECK([self window]); | 
| 178   DCHECK_EQ(self, [[self window] delegate]); | 194   DCHECK_EQ(self, [[self window] delegate]); | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 221 | 237 | 
| 222 - (void)setCookieSettingIndex:(NSInteger)value { | 238 - (void)setCookieSettingIndex:(NSInteger)value { | 
| 223   ContentSetting setting = CONTENT_SETTING_DEFAULT; | 239   ContentSetting setting = CONTENT_SETTING_DEFAULT; | 
| 224   switch (value) { | 240   switch (value) { | 
| 225     case kCookieEnabledIndex:  setting = CONTENT_SETTING_ALLOW; break; | 241     case kCookieEnabledIndex:  setting = CONTENT_SETTING_ALLOW; break; | 
| 226     case kCookieAskIndex:      setting = CONTENT_SETTING_ASK;   break; | 242     case kCookieAskIndex:      setting = CONTENT_SETTING_ASK;   break; | 
| 227     case kCookieDisabledIndex: setting = CONTENT_SETTING_BLOCK; break; | 243     case kCookieDisabledIndex: setting = CONTENT_SETTING_BLOCK; break; | 
| 228     default: | 244     default: | 
| 229       NOTREACHED(); | 245       NOTREACHED(); | 
| 230   } | 246   } | 
|  | 247   ContentSettingsDialogControllerInternal::PrefObserverDisabler | 
|  | 248       disabler(observer_.get()); | 
| 231   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 249   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 
| 232       CONTENT_SETTINGS_TYPE_COOKIES, | 250       CONTENT_SETTINGS_TYPE_COOKIES, | 
| 233       setting); | 251       setting); | 
| 234 } | 252 } | 
| 235 | 253 | 
| 236 - (NSInteger)cookieSettingIndex { | 254 - (NSInteger)cookieSettingIndex { | 
| 237   switch (profile_->GetHostContentSettingsMap()->GetDefaultContentSetting( | 255   switch (profile_->GetHostContentSettingsMap()->GetDefaultContentSetting( | 
| 238       CONTENT_SETTINGS_TYPE_COOKIES)) { | 256       CONTENT_SETTINGS_TYPE_COOKIES)) { | 
| 239     case CONTENT_SETTING_ALLOW: return kCookieEnabledIndex; | 257     case CONTENT_SETTING_ALLOW: return kCookieEnabledIndex; | 
| 240     case CONTENT_SETTING_ASK:   return kCookieAskIndex; | 258     case CONTENT_SETTING_ASK:   return kCookieAskIndex; | 
| 241     case CONTENT_SETTING_BLOCK: return kCookieDisabledIndex; | 259     case CONTENT_SETTING_BLOCK: return kCookieDisabledIndex; | 
| 242     default: | 260     default: | 
| 243       NOTREACHED(); | 261       NOTREACHED(); | 
| 244       return kCookieEnabledIndex; | 262       return kCookieEnabledIndex; | 
| 245   } | 263   } | 
| 246 } | 264 } | 
| 247 | 265 | 
| 248 - (BOOL)blockThirdPartyCookies { | 266 - (BOOL)blockThirdPartyCookies { | 
| 249   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 267   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 
| 250   return settingsMap->BlockThirdPartyCookies(); | 268   return settingsMap->BlockThirdPartyCookies(); | 
| 251 } | 269 } | 
| 252 | 270 | 
| 253 - (void)setBlockThirdPartyCookies:(BOOL)value { | 271 - (void)setBlockThirdPartyCookies:(BOOL)value { | 
| 254   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 272   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 
|  | 273   ContentSettingsDialogControllerInternal::PrefObserverDisabler | 
|  | 274       disabler(observer_.get()); | 
| 255   settingsMap->SetBlockThirdPartyCookies(value); | 275   settingsMap->SetBlockThirdPartyCookies(value); | 
| 256 } | 276 } | 
| 257 | 277 | 
| 258 - (BOOL)clearSiteDataOnExit { | 278 - (BOOL)clearSiteDataOnExit { | 
| 259   return clearSiteDataOnExit_.GetValue(); | 279   return clearSiteDataOnExit_.GetValue(); | 
| 260 } | 280 } | 
| 261 | 281 | 
| 262 - (void)setClearSiteDataOnExit:(BOOL)value { | 282 - (void)setClearSiteDataOnExit:(BOOL)value { | 
| 263   return clearSiteDataOnExit_.SetValue(value); | 283   ContentSettingsDialogControllerInternal::PrefObserverDisabler | 
|  | 284       disabler(observer_.get()); | 
|  | 285   clearSiteDataOnExit_.SetValue(value); | 
| 264 } | 286 } | 
| 265 | 287 | 
| 266 // Shows the cookies controller. | 288 // Shows the cookies controller. | 
| 267 - (IBAction)showCookies:(id)sender { | 289 - (IBAction)showCookies:(id)sender { | 
| 268   // The cookie controller will autorelease itself when it's closed. | 290   // The cookie controller will autorelease itself when it's closed. | 
| 269   BrowsingDataDatabaseHelper* databaseHelper = | 291   BrowsingDataDatabaseHelper* databaseHelper = | 
| 270       new BrowsingDataDatabaseHelper(profile_); | 292       new BrowsingDataDatabaseHelper(profile_); | 
| 271   BrowsingDataLocalStorageHelper* storageHelper = | 293   BrowsingDataLocalStorageHelper* storageHelper = | 
| 272       new BrowsingDataLocalStorageHelper(profile_); | 294       new BrowsingDataLocalStorageHelper(profile_); | 
| 273   BrowsingDataAppCacheHelper* appcacheHelper = | 295   BrowsingDataAppCacheHelper* appcacheHelper = | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 324 } | 346 } | 
| 325 | 347 | 
| 326 - (void)showExceptionsForType:(ContentSettingsType)settingsType { | 348 - (void)showExceptionsForType:(ContentSettingsType)settingsType { | 
| 327   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 349   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 
| 328   [[ContentExceptionsWindowController controllerForType:settingsType | 350   [[ContentExceptionsWindowController controllerForType:settingsType | 
| 329                                             settingsMap:settingsMap] | 351                                             settingsMap:settingsMap] | 
| 330       attachSheetTo:[self window]]; | 352       attachSheetTo:[self window]]; | 
| 331 } | 353 } | 
| 332 | 354 | 
| 333 - (void)setImagesEnabledIndex:(NSInteger)value { | 355 - (void)setImagesEnabledIndex:(NSInteger)value { | 
| 334   ContentSetting setting = value == kEnabledIndex ? | 356   ContentSetting setting = value == kContentSettingsEnabledIndex ? | 
| 335       CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; | 357       CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; | 
|  | 358   ContentSettingsDialogControllerInternal::PrefObserverDisabler | 
|  | 359       disabler(observer_.get()); | 
| 336   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 360   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 
| 337       CONTENT_SETTINGS_TYPE_IMAGES, setting); | 361       CONTENT_SETTINGS_TYPE_IMAGES, setting); | 
| 338 } | 362 } | 
| 339 | 363 | 
| 340 - (NSInteger)imagesEnabledIndex { | 364 - (NSInteger)imagesEnabledIndex { | 
| 341   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 365   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 
| 342   bool enabled = | 366   bool enabled = | 
| 343       settingsMap->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_IMAGES) == | 367       settingsMap->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_IMAGES) == | 
| 344       CONTENT_SETTING_ALLOW; | 368       CONTENT_SETTING_ALLOW; | 
| 345   return enabled ? kEnabledIndex : kDisabledIndex; | 369   return enabled ? kContentSettingsEnabledIndex : kContentSettingsDisabledIndex; | 
| 346 } | 370 } | 
| 347 | 371 | 
| 348 - (void)setJavaScriptEnabledIndex:(NSInteger)value { | 372 - (void)setJavaScriptEnabledIndex:(NSInteger)value { | 
| 349   ContentSetting setting = value == kEnabledIndex ? | 373   ContentSetting setting = value == kContentSettingsEnabledIndex ? | 
| 350       CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; | 374       CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; | 
|  | 375   ContentSettingsDialogControllerInternal::PrefObserverDisabler | 
|  | 376       disabler(observer_.get()); | 
| 351   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 377   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 
| 352       CONTENT_SETTINGS_TYPE_JAVASCRIPT, setting); | 378       CONTENT_SETTINGS_TYPE_JAVASCRIPT, setting); | 
| 353 } | 379 } | 
| 354 | 380 | 
| 355 - (NSInteger)javaScriptEnabledIndex { | 381 - (NSInteger)javaScriptEnabledIndex { | 
| 356   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 382   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 
| 357   bool enabled = | 383   bool enabled = | 
| 358       settingsMap->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT) == | 384       settingsMap->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT) == | 
| 359       CONTENT_SETTING_ALLOW; | 385       CONTENT_SETTING_ALLOW; | 
| 360   return enabled ? kEnabledIndex : kDisabledIndex; | 386   return enabled ? kContentSettingsEnabledIndex : kContentSettingsDisabledIndex; | 
| 361 } | 387 } | 
| 362 | 388 | 
| 363 - (void)setPluginsEnabledIndex:(NSInteger)value { | 389 - (void)setPluginsEnabledIndex:(NSInteger)value { | 
| 364   ContentSetting setting = value == kEnabledIndex ? | 390   ContentSetting setting = value == kContentSettingsEnabledIndex ? | 
| 365       CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; | 391       CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; | 
|  | 392   ContentSettingsDialogControllerInternal::PrefObserverDisabler | 
|  | 393       disabler(observer_.get()); | 
| 366   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 394   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 
| 367       CONTENT_SETTINGS_TYPE_PLUGINS, setting); | 395       CONTENT_SETTINGS_TYPE_PLUGINS, setting); | 
| 368 } | 396 } | 
| 369 | 397 | 
| 370 - (NSInteger)pluginsEnabledIndex { | 398 - (NSInteger)pluginsEnabledIndex { | 
| 371   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 399   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 
| 372   bool enabled = | 400   bool enabled = | 
| 373       settingsMap->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS) == | 401       settingsMap->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS) == | 
| 374       CONTENT_SETTING_ALLOW; | 402       CONTENT_SETTING_ALLOW; | 
| 375   return enabled ? kEnabledIndex : kDisabledIndex; | 403   return enabled ? kContentSettingsEnabledIndex : kContentSettingsDisabledIndex; | 
| 376 } | 404 } | 
| 377 | 405 | 
| 378 - (void)setPopupsEnabledIndex:(NSInteger)value { | 406 - (void)setPopupsEnabledIndex:(NSInteger)value { | 
| 379   ContentSetting setting = value == kEnabledIndex ? | 407   ContentSetting setting = value == kContentSettingsEnabledIndex ? | 
| 380       CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; | 408       CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK; | 
|  | 409   ContentSettingsDialogControllerInternal::PrefObserverDisabler | 
|  | 410       disabler(observer_.get()); | 
| 381   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 411   profile_->GetHostContentSettingsMap()->SetDefaultContentSetting( | 
| 382       CONTENT_SETTINGS_TYPE_POPUPS, setting); | 412       CONTENT_SETTINGS_TYPE_POPUPS, setting); | 
| 383 } | 413 } | 
| 384 | 414 | 
| 385 - (NSInteger)popupsEnabledIndex { | 415 - (NSInteger)popupsEnabledIndex { | 
| 386   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 416   HostContentSettingsMap* settingsMap = profile_->GetHostContentSettingsMap(); | 
| 387   bool enabled = | 417   bool enabled = | 
| 388       settingsMap->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_POPUPS) == | 418       settingsMap->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_POPUPS) == | 
| 389       CONTENT_SETTING_ALLOW; | 419       CONTENT_SETTING_ALLOW; | 
| 390   return enabled ? kEnabledIndex : kDisabledIndex; | 420   return enabled ? kContentSettingsEnabledIndex : kContentSettingsDisabledIndex; | 
| 391 } | 421 } | 
| 392 | 422 | 
| 393 - (void)setGeolocationSettingIndex:(NSInteger)value { | 423 - (void)setGeolocationSettingIndex:(NSInteger)value { | 
| 394   ContentSetting setting = CONTENT_SETTING_DEFAULT; | 424   ContentSetting setting = CONTENT_SETTING_DEFAULT; | 
| 395   switch (value) { | 425   switch (value) { | 
| 396     case kGeolocationEnabledIndex:  setting = CONTENT_SETTING_ALLOW; break; | 426     case kGeolocationEnabledIndex:  setting = CONTENT_SETTING_ALLOW; break; | 
| 397     case kGeolocationAskIndex:      setting = CONTENT_SETTING_ASK;   break; | 427     case kGeolocationAskIndex:      setting = CONTENT_SETTING_ASK;   break; | 
| 398     case kGeolocationDisabledIndex: setting = CONTENT_SETTING_BLOCK; break; | 428     case kGeolocationDisabledIndex: setting = CONTENT_SETTING_BLOCK; break; | 
| 399     default: | 429     default: | 
| 400       NOTREACHED(); | 430       NOTREACHED(); | 
| 401   } | 431   } | 
|  | 432   ContentSettingsDialogControllerInternal::PrefObserverDisabler | 
|  | 433       disabler(observer_.get()); | 
| 402   profile_->GetGeolocationContentSettingsMap()->SetDefaultContentSetting( | 434   profile_->GetGeolocationContentSettingsMap()->SetDefaultContentSetting( | 
| 403       setting); | 435       setting); | 
| 404 } | 436 } | 
| 405 | 437 | 
| 406 - (NSInteger)geolocationSettingIndex { | 438 - (NSInteger)geolocationSettingIndex { | 
| 407   ContentSetting setting = | 439   ContentSetting setting = | 
| 408       profile_->GetGeolocationContentSettingsMap()->GetDefaultContentSetting(); | 440       profile_->GetGeolocationContentSettingsMap()->GetDefaultContentSetting(); | 
| 409   switch (setting) { | 441   switch (setting) { | 
| 410     case CONTENT_SETTING_ALLOW: return kGeolocationEnabledIndex; | 442     case CONTENT_SETTING_ALLOW: return kGeolocationEnabledIndex; | 
| 411     case CONTENT_SETTING_ASK:   return kGeolocationAskIndex; | 443     case CONTENT_SETTING_ASK:   return kGeolocationAskIndex; | 
| 412     case CONTENT_SETTING_BLOCK: return kGeolocationDisabledIndex; | 444     case CONTENT_SETTING_BLOCK: return kGeolocationDisabledIndex; | 
| 413     default: | 445     default: | 
| 414       NOTREACHED(); | 446       NOTREACHED(); | 
| 415       return kGeolocationAskIndex; | 447       return kGeolocationAskIndex; | 
| 416   } | 448   } | 
| 417 } | 449 } | 
| 418 | 450 | 
|  | 451 // Callback when preferences are changed. |prefName| is the name of the | 
|  | 452 // pref that has changed and should not be NULL. | 
|  | 453 - (void)prefChanged:(std::wstring*)prefName { | 
|  | 454   DCHECK(prefName); | 
|  | 455   if (!prefName) return; | 
|  | 456   if (*prefName == prefs::kClearSiteDataOnExit) { | 
|  | 457     [self willChangeValueForKey:@"clearSiteDataOnExit"]; | 
|  | 458     [self didChangeValueForKey:@"clearSiteDataOnExit"]; | 
|  | 459   } | 
|  | 460   if (*prefName == prefs::kBlockThirdPartyCookies) { | 
|  | 461     [self willChangeValueForKey:@"blockThirdPartyCookies"]; | 
|  | 462     [self didChangeValueForKey:@"blockThirdPartyCookies"]; | 
|  | 463   } | 
|  | 464   if (*prefName == prefs::kDefaultContentSettings) { | 
|  | 465     // We don't know exactly which setting has changed, so we'll tickle all | 
|  | 466     // of the properties that apply to kDefaultContentSettings.  This will | 
|  | 467     // keep the UI up-to-date. | 
|  | 468     [self willChangeValueForKey:@"cookieSettingIndex"]; | 
|  | 469     [self didChangeValueForKey:@"cookieSettingIndex"]; | 
|  | 470     [self willChangeValueForKey:@"imagesEnabledIndex"]; | 
|  | 471     [self didChangeValueForKey:@"imagesEnabledIndex"]; | 
|  | 472     [self willChangeValueForKey:@"javaScriptEnabledIndex"]; | 
|  | 473     [self didChangeValueForKey:@"javaScriptEnabledIndex"]; | 
|  | 474     [self willChangeValueForKey:@"pluginsEnabledIndex"]; | 
|  | 475     [self didChangeValueForKey:@"pluginsEnabledIndex"]; | 
|  | 476     [self willChangeValueForKey:@"popupsEnabledIndex"]; | 
|  | 477     [self didChangeValueForKey:@"popupsEnabledIndex"]; | 
|  | 478   } | 
|  | 479   if (*prefName == prefs::kGeolocationDefaultContentSetting) { | 
|  | 480     [self willChangeValueForKey:@"geolocationSettingIndex"]; | 
|  | 481     [self didChangeValueForKey:@"geolocationSettingIndex"]; | 
|  | 482   } | 
|  | 483 } | 
|  | 484 | 
| 419 @end | 485 @end | 
| OLD | NEW | 
|---|