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

Unified Diff: chrome/browser/cocoa/content_exceptions_window_controller.mm

Issue 2858032: Display content settings applying to the current otr session only. (Closed)
Patch Set: updates 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/cocoa/content_exceptions_window_controller.mm
diff --git a/chrome/browser/cocoa/content_exceptions_window_controller.mm b/chrome/browser/cocoa/content_exceptions_window_controller.mm
index 0ebcb8ec9b735b7df90454d1e023bcead1dad2c4..692fe869d95cddd8d86ae457543b1e5db663c943 100644
--- a/chrome/browser/cocoa/content_exceptions_window_controller.mm
+++ b/chrome/browser/cocoa/content_exceptions_window_controller.mm
@@ -17,9 +17,11 @@
@interface ContentExceptionsWindowController (Private)
- (id)initWithType:(ContentSettingsType)settingsType
- settingsMap:(HostContentSettingsMap*)settingsMap;
+ settingsMap:(HostContentSettingsMap*)settingsMap
+ otrSettingsMap:(HostContentSettingsMap*)otrSettingsMap;
- (void)updateRow:(NSInteger)row
- withEntry:(const HostContentSettingsMap::PatternSettingPair&)entry;
+ withEntry:(const HostContentSettingsMap::PatternSettingPair&)entry
+ forOtr:(BOOL)isOtr;
- (void)adjustEditingButtons;
- (void)modelDidChange;
- (size_t)menuItemCount;
@@ -141,25 +143,32 @@ static ContentExceptionsWindowController*
@implementation ContentExceptionsWindowController
+ (id)controllerForType:(ContentSettingsType)settingsType
- settingsMap:(HostContentSettingsMap*)settingsMap {
+ settingsMap:(HostContentSettingsMap*)settingsMap
+ otrSettingsMap:(HostContentSettingsMap*)otrSettingsMap {
if (!g_exceptionWindows[settingsType]) {
g_exceptionWindows[settingsType] =
- [[ContentExceptionsWindowController alloc] initWithType:settingsType
- settingsMap:settingsMap];
+ [[ContentExceptionsWindowController alloc]
+ initWithType:settingsType
+ settingsMap:settingsMap
+ otrSettingsMap:otrSettingsMap];
}
return g_exceptionWindows[settingsType];
}
- (id)initWithType:(ContentSettingsType)settingsType
- settingsMap:(HostContentSettingsMap*)settingsMap {
+ settingsMap:(HostContentSettingsMap*)settingsMap
+ otrSettingsMap:(HostContentSettingsMap*)otrSettingsMap {
NSString* nibpath =
[mac_util::MainAppBundle() pathForResource:@"ContentExceptionsWindow"
ofType:@"nib"];
if ((self = [super initWithWindowNibPath:nibpath owner:self])) {
settingsType_ = settingsType;
settingsMap_ = settingsMap;
- model_.reset(new ContentExceptionsTableModel(settingsMap_, settingsType_));
+ otrSettingsMap_ = otrSettingsMap;
+ model_.reset(new ContentExceptionsTableModel(
+ settingsMap_, otrSettingsMap_, settingsType_));
showAsk_ = settingsType_ == CONTENT_SETTINGS_TYPE_COOKIES;
+ otrAllowed_ = otrSettingsMap != NULL;
tableObserver_.reset(new UpdatingContentSettingsObserver(self));
updatesEnabled_ = YES;
@@ -199,6 +208,11 @@ static ContentExceptionsWindowController*
NSCell* patternCell =
[[tableView_ tableColumnWithIdentifier:@"pattern"] dataCell];
[patternCell setFormatter:[[[PatternFormatter alloc] init] autorelease]];
+
+ if (!otrAllowed_) {
+ [tableView_
+ removeTableColumn:[tableView_ tableColumnWithIdentifier:@"otr"]];
+ }
}
- (void)setMinWidth:(CGFloat)minWidth {
@@ -339,10 +353,14 @@ static ContentExceptionsWindowController*
objectValueForTableColumn:(NSTableColumn*)tableColumn
row:(NSInteger)row {
const HostContentSettingsMap::PatternSettingPair* entry;
- if (newException_.get() && row >= model_->RowCount())
+ int isOtr;
+ if (newException_.get() && row >= model_->RowCount()) {
entry = newException_.get();
- else
+ isOtr = 0;
+ } else {
entry = &model_->entry_at(row);
+ isOtr = model_->entry_is_off_the_record(row) ? 1 : 0;
+ }
NSObject* result = nil;
NSString* identifier = [tableColumn identifier];
@@ -350,6 +368,8 @@ static ContentExceptionsWindowController*
result = base::SysUTF8ToNSString(entry->first.AsString());
} else if ([identifier isEqualToString:@"action"]) {
result = [NSNumber numberWithInt:[self indexForSetting:entry->second]];
+ } else if ([identifier isEqualToString:@"otr"]) {
+ result = [NSNumber numberWithInt:isOtr];
} else {
NOTREACHED();
}
@@ -358,19 +378,20 @@ static ContentExceptionsWindowController*
// Updates exception at |row| to contain the data in |entry|.
- (void)updateRow:(NSInteger)row
- withEntry:(const HostContentSettingsMap::PatternSettingPair&)entry {
+ withEntry:(const HostContentSettingsMap::PatternSettingPair&)entry
+ forOtr:(BOOL)isOtr {
// TODO(thakis): This apparently moves an edited row to the back of the list.
// It's what windows and linux do, but it's kinda sucky. Fix.
// http://crbug.com/36904
updatesEnabled_ = NO;
if (row < model_->RowCount())
model_->RemoveException(row);
- model_->AddException(entry.first, entry.second);
+ model_->AddException(entry.first, entry.second, isOtr);
updatesEnabled_ = YES;
[self modelDidChange];
// For now, at least re-select the edited element.
- int newIndex = model_->IndexOfExceptionByPattern(entry.first);
+ int newIndex = model_->IndexOfExceptionByPattern(entry.first, isOtr);
DCHECK(newIndex != -1);
[tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:newIndex]
byExtendingSelection:NO];
@@ -395,6 +416,9 @@ static ContentExceptionsWindowController*
HostContentSettingsMap::PatternSettingPair originalEntry =
isNewRow ? *newException_ : model_->entry_at(row);
HostContentSettingsMap::PatternSettingPair entry = originalEntry;
+ bool isOtr =
+ isNewRow ? 0 : model_->entry_is_off_the_record(row);
+ bool wasOtr = isOtr;
// Modify it.
NSString* identifier = [tableColumn identifier];
@@ -406,6 +430,9 @@ static ContentExceptionsWindowController*
int index = [object intValue];
entry.second = [self settingForIndex:index];
}
+ if ([identifier isEqualToString:@"otr"]) {
+ isOtr = [object intValue] != 0;
+ }
// Commit modification, if any.
if (isNewRow) {
@@ -415,7 +442,7 @@ static ContentExceptionsWindowController*
[self adjustEditingButtons];
return; // Commit new rows only when the pattern has been set.
}
- int newIndex = model_->IndexOfExceptionByPattern(entry.first);
+ int newIndex = model_->IndexOfExceptionByPattern(entry.first, false);
if (newIndex != -1) {
// The new pattern was already in the table. Focus existing row instead of
// overwriting it with a new one.
@@ -426,8 +453,8 @@ static ContentExceptionsWindowController*
return;
}
}
- if (entry != originalEntry || isNewRow)
- [self updateRow:row withEntry:entry];
+ if (entry != originalEntry || wasOtr != isOtr || isNewRow)
+ [self updateRow:row withEntry:entry forOtr:isOtr];
}
@@ -458,7 +485,8 @@ static ContentExceptionsWindowController*
return;
// The model caches its data, meaning we need to recreate it on every change.
- model_.reset(new ContentExceptionsTableModel(settingsMap_, settingsType_));
+ model_.reset(new ContentExceptionsTableModel(
+ settingsMap_, otrSettingsMap_, settingsType_));
[tableView_ reloadData];
[self adjustEditingButtons];

Powered by Google App Engine
This is Rietveld 408576698