| Index: chrome/browser/cocoa/content_exceptions_window_controller.mm | 
| =================================================================== | 
| --- chrome/browser/cocoa/content_exceptions_window_controller.mm	(revision 66837) | 
| +++ chrome/browser/cocoa/content_exceptions_window_controller.mm	(working copy) | 
| @@ -12,6 +12,7 @@ | 
| #import "base/scoped_nsobject.h" | 
| #include "base/sys_string_conversions.h" | 
| #include "chrome/browser/content_exceptions_table_model.h" | 
| +#include "chrome/browser/content_setting_combo_model.h" | 
| #include "chrome/common/chrome_switches.h" | 
| #include "chrome/common/notification_registrar.h" | 
| #include "chrome/common/notification_service.h" | 
| @@ -27,10 +28,7 @@ | 
| forOtr:(BOOL)isOtr; | 
| - (void)adjustEditingButtons; | 
| - (void)modelDidChange; | 
| -- (size_t)menuItemCount; | 
| - (NSString*)titleForIndex:(size_t)index; | 
| -- (ContentSetting)settingForIndex:(size_t)index; | 
| -- (size_t)indexForSetting:(ContentSetting)setting; | 
| @end | 
|  | 
| //////////////////////////////////////////////////////////////////////////////// | 
| @@ -126,20 +124,6 @@ | 
|  | 
| const CGFloat kButtonBarHeight = 35.0; | 
|  | 
| -// The settings shown in the combobox for plug-ins; | 
| -const ContentSetting kPluginSettings[] = { CONTENT_SETTING_ALLOW, | 
| -                                           CONTENT_SETTING_ASK, | 
| -                                           CONTENT_SETTING_BLOCK }; | 
| - | 
| -// The settings shown in the combobox if showSession_ is false; | 
| -const ContentSetting kNoSessionSettings[] = { CONTENT_SETTING_ALLOW, | 
| -                                              CONTENT_SETTING_BLOCK }; | 
| - | 
| -// The settings shown in the combobox if showSession_ is true; | 
| -const ContentSetting kSessionSettings[] = { CONTENT_SETTING_ALLOW, | 
| -                                            CONTENT_SETTING_SESSION_ONLY, | 
| -                                            CONTENT_SETTING_BLOCK }; | 
| - | 
| }  // namespace | 
|  | 
| //////////////////////////////////////////////////////////////////////////////// | 
| @@ -175,7 +159,7 @@ | 
| otrSettingsMap_ = otrSettingsMap; | 
| model_.reset(new ContentExceptionsTableModel( | 
| settingsMap_, otrSettingsMap_, settingsType_)); | 
| -    showSession_ = settingsType_ == CONTENT_SETTINGS_TYPE_COOKIES; | 
| +    popup_model_.reset(new ContentSettingComboModel(settingsType_)); | 
| otrAllowed_ = otrSettingsMap != NULL; | 
| tableObserver_.reset(new UpdatingContentSettingsObserver(self)); | 
| updatesEnabled_ = YES; | 
| @@ -203,10 +187,12 @@ | 
|  | 
| // Initialize menu for the data cell in the "action" column. | 
| scoped_nsobject<NSMenu> menu([[NSMenu alloc] initWithTitle:@"exceptionMenu"]); | 
| -  for (size_t i = 0; i < [self menuItemCount]; ++i) { | 
| -    scoped_nsobject<NSMenuItem> allowItem([[NSMenuItem alloc] | 
| -        initWithTitle:[self titleForIndex:i] action:NULL keyEquivalent:@""]); | 
| -    [allowItem.get() setTag:[self settingForIndex:i]]; | 
| +  for (int i = 0; i < popup_model_->GetItemCount(); ++i) { | 
| +    NSString* title = | 
| +        l10n_util::FixUpWindowsStyleLabel(popup_model_->GetItemAt(i)); | 
| +    scoped_nsobject<NSMenuItem> allowItem( | 
| +        [[NSMenuItem alloc] initWithTitle:title action:NULL keyEquivalent:@""]); | 
| +    [allowItem.get() setTag:popup_model_->SettingForIndex(i)]; | 
| [menu.get() addItem:allowItem.get()]; | 
| } | 
| NSCell* menuCell = | 
| @@ -375,7 +361,8 @@ | 
| if ([identifier isEqualToString:@"pattern"]) { | 
| result = base::SysUTF8ToNSString(entry->first.AsString()); | 
| } else if ([identifier isEqualToString:@"action"]) { | 
| -    result = [NSNumber numberWithInt:[self indexForSetting:entry->second]]; | 
| +    result = | 
| +        [NSNumber numberWithInt:popup_model_->IndexForSetting(entry->second)]; | 
| } else if ([identifier isEqualToString:@"otr"]) { | 
| result = [NSNumber numberWithInt:isOtr]; | 
| } else { | 
| @@ -436,7 +423,7 @@ | 
| } | 
| if ([identifier isEqualToString:@"action"]) { | 
| int index = [object intValue]; | 
| -    entry.second = [self settingForIndex:index]; | 
| +    entry.second = popup_model_->SettingForIndex(index); | 
| } | 
| if ([identifier isEqualToString:@"otr"]) { | 
| isOtr = [object intValue] != 0; | 
| @@ -500,43 +487,4 @@ | 
| [self adjustEditingButtons]; | 
| } | 
|  | 
| -- (size_t)menuItemCount { | 
| -  if (settingsType_ == CONTENT_SETTINGS_TYPE_PLUGINS) | 
| -    return arraysize(kPluginSettings); | 
| -  return showSession_ ? arraysize(kSessionSettings) | 
| -                      : arraysize(kNoSessionSettings); | 
| -} | 
| - | 
| -- (NSString*)titleForIndex:(size_t)index { | 
| -  switch ([self settingForIndex:index]) { | 
| -    case CONTENT_SETTING_ALLOW: | 
| -      return l10n_util::GetNSStringWithFixup(IDS_EXCEPTIONS_ALLOW_BUTTON); | 
| -    case CONTENT_SETTING_ASK: | 
| -      return l10n_util::GetNSStringWithFixup(IDS_EXCEPTIONS_ASK_BUTTON); | 
| -    case CONTENT_SETTING_BLOCK: | 
| -      return l10n_util::GetNSStringWithFixup(IDS_EXCEPTIONS_BLOCK_BUTTON); | 
| -    case CONTENT_SETTING_SESSION_ONLY: | 
| -      return l10n_util::GetNSStringWithFixup( | 
| -          IDS_EXCEPTIONS_SESSION_ONLY_BUTTON); | 
| -    default: | 
| -      NOTREACHED(); | 
| -  } | 
| -  return @""; | 
| -} | 
| - | 
| -- (ContentSetting)settingForIndex:(size_t)index { | 
| -  if (settingsType_ == CONTENT_SETTINGS_TYPE_PLUGINS) | 
| -    return kPluginSettings[index]; | 
| -  return showSession_ ? kSessionSettings[index] : kNoSessionSettings[index]; | 
| -} | 
| - | 
| -- (size_t)indexForSetting:(ContentSetting)setting { | 
| -  for (size_t i = 0; i < [self menuItemCount]; ++i) { | 
| -    if ([self settingForIndex:i] == setting) | 
| -      return i; | 
| -  } | 
| -  NOTREACHED(); | 
| -  return 0; | 
| -} | 
| - | 
| @end | 
|  |