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

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

Issue 3327016: [Mac] Add per-plugin exceptions to content settings. (Closed) Base URL: git://codf21.jail/chromium.git
Patch Set: use AutoReset for PluginExceptionsTableModelTest Created 10 years, 3 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/simple_content_exceptions_window_controller.mm
diff --git a/chrome/browser/cocoa/simple_content_exceptions_window_controller.mm b/chrome/browser/cocoa/simple_content_exceptions_window_controller.mm
index 7be52a93fbe36a3ac8704d169ecb46f1e3a303af..a054b54827801978f1f6c79e89f7d2ac1cc034c0 100644
--- a/chrome/browser/cocoa/simple_content_exceptions_window_controller.mm
+++ b/chrome/browser/cocoa/simple_content_exceptions_window_controller.mm
@@ -4,8 +4,6 @@
#import "chrome/browser/cocoa/simple_content_exceptions_window_controller.h"
-#include <set>
-
#include "app/l10n_util_mac.h"
#include "app/table_model_observer.h"
#import "base/mac_util.h"
@@ -16,35 +14,8 @@
@interface SimpleContentExceptionsWindowController (Private)
- (id)initWithTableModel:(RemoveRowsTableModel*)model;
-- (void)selectedRows:(RemoveRowsTableModel::Rows*)rows;
-- (void)adjustEditingButtons;
-- (void)modelDidChange;
@end
-// Observer for a RemoveRowsTableModel.
-class RemoveRowsObserverBridge : public TableModelObserver {
- public:
- RemoveRowsObserverBridge(SimpleContentExceptionsWindowController* controller)
- : controller_(controller) {}
- virtual ~RemoveRowsObserverBridge() {}
-
- virtual void OnModelChanged() {
- [controller_ modelDidChange];
- }
- virtual void OnItemsChanged(int start, int length) {
- [controller_ modelDidChange];
- }
- virtual void OnItemsAdded(int start, int length) {
- [controller_ modelDidChange];
- }
- virtual void OnItemsRemoved(int start, int length) {
- [controller_ modelDidChange];
- }
-
- private:
- SimpleContentExceptionsWindowController* controller_; // weak
-};
-
namespace {
const CGFloat kButtonBarHeight = 35.0;
@@ -69,8 +40,6 @@ SimpleContentExceptionsWindowController* g_exceptionWindow = nil;
ofType:@"nib"];
if ((self = [super initWithWindowNibPath:nibpath owner:self])) {
model_.reset(model);
- tableObserver_.reset(new RemoveRowsObserverBridge(self));
- model_->SetObserver(tableObserver_.get());
// TODO(thakis): autoremember window rect.
// TODO(thakis): sorting support.
@@ -82,15 +51,19 @@ SimpleContentExceptionsWindowController* g_exceptionWindow = nil;
DCHECK([self window]);
DCHECK_EQ(self, [[self window] delegate]);
DCHECK(tableView_);
- DCHECK_EQ(self, [tableView_ dataSource]);
- DCHECK_EQ(self, [tableView_ delegate]);
+ DCHECK(arrayController_);
CGFloat minWidth = [[removeButton_ superview] bounds].size.width +
[[doneButton_ superview] bounds].size.width;
[[self window] setMinSize:NSMakeSize(minWidth,
[[self window] minSize].height)];
-
- [self adjustEditingButtons];
+ NSDictionary* columns = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:IDS_EXCEPTIONS_HOSTNAME_HEADER], @"hostname",
+ [NSNumber numberWithInt:IDS_EXCEPTIONS_ACTION_HEADER], @"action",
+ nil];
+ [arrayController_ bindToTableModel:model_.get()
+ withColumns:columns
+ groupTitleColumn:@"hostname"];
}
- (void)setMinWidth:(CGFloat)minWidth {
@@ -104,9 +77,6 @@ SimpleContentExceptionsWindowController* g_exceptionWindow = nil;
}
- (void)windowWillClose:(NSNotification*)notification {
- // Without this, some of the unit tests fail on 10.6:
- [tableView_ setDataSource:nil];
-
g_exceptionWindow = nil;
[self autorelease];
}
@@ -124,7 +94,7 @@ SimpleContentExceptionsWindowController* g_exceptionWindow = nil;
case NSDeleteFunctionKey:
// Delete deletes.
if ([[tableView_ selectedRowIndexes] count] > 0)
- [self removeRow:self];
+ [arrayController_ remove:event];
return;
}
}
@@ -150,68 +120,5 @@ SimpleContentExceptionsWindowController* g_exceptionWindow = nil;
[NSApp endSheet:[self window]];
}
-- (IBAction)removeRow:(id)sender {
- RemoveRowsTableModel::Rows rows;
- [self selectedRows:&rows];
- model_->RemoveRows(rows);
-}
-
-- (IBAction)removeAll:(id)sender {
- model_->RemoveAll();
-}
-
-// Table View Data Source -----------------------------------------------------
-
-- (NSInteger)numberOfRowsInTableView:(NSTableView*)table {
- return model_->RowCount();
-}
-
-- (id)tableView:(NSTableView*)tv
- objectValueForTableColumn:(NSTableColumn*)tableColumn
- row:(NSInteger)row {
- NSObject* result = nil;
- NSString* identifier = [tableColumn identifier];
- if ([identifier isEqualToString:@"hostname"]) {
- std::wstring host = model_->GetText(row, IDS_EXCEPTIONS_HOSTNAME_HEADER);
- result = base::SysWideToNSString(host);
- } else if ([identifier isEqualToString:@"action"]) {
- std::wstring action = model_->GetText(row, IDS_EXCEPTIONS_ACTION_HEADER);
- result = base::SysWideToNSString(action);
- } else {
- NOTREACHED();
- }
- return result;
-}
-
-// Table View Delegate --------------------------------------------------------
-
-// When the selection in the table view changes, we need to adjust buttons.
-- (void)tableViewSelectionDidChange:(NSNotification*)notification {
- [self adjustEditingButtons];
-}
-
-// Private --------------------------------------------------------------------
-
-// Returns the selected rows.
-- (void)selectedRows:(RemoveRowsTableModel::Rows*)rows {
- NSIndexSet* selection = [tableView_ selectedRowIndexes];
- for (NSUInteger index = [selection lastIndex]; index != NSNotFound;
- index = [selection indexLessThanIndex:index])
- rows->insert(index);
-}
-
-// This method appropriately sets the enabled states on the table's editing
-// buttons.
-- (void)adjustEditingButtons {
- RemoveRowsTableModel::Rows rows;
- [self selectedRows:&rows];
- [removeButton_ setEnabled:model_->CanRemoveRows(rows)];
- [removeAllButton_ setEnabled:([tableView_ numberOfRows] > 0)];
-}
-
-- (void)modelDidChange {
- [tableView_ reloadData];
- [self adjustEditingButtons];
-}
@end

Powered by Google App Engine
This is Rietveld 408576698