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

Side by Side Diff: chrome/browser/cocoa/content_settings_dialog_controller.mm

Issue 2063020: Add observers to ContentSettingsDialogController so that the dialog will show... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698