| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/content_setting_combo_model.h" |
| |
| #include "base/command_line.h" |
| #include "base/string16.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "grit/generated_resources.h" |
| #include "ui/base/l10n/l10n_util.h" |
| |
| namespace { |
| |
| // The settings shown in the combobox if show_session_ is false; |
| const ContentSetting kNoSessionSettings[] = { CONTENT_SETTING_ALLOW, |
| CONTENT_SETTING_BLOCK }; |
| |
| // The settings shown in the combobox if show_session_ is true; |
| const ContentSetting kSessionSettings[] = { CONTENT_SETTING_ALLOW, |
| CONTENT_SETTING_SESSION_ONLY, |
| CONTENT_SETTING_BLOCK }; |
| |
| // The settings shown in the combobox for plug-ins; |
| const ContentSetting kAskSettings[] = { CONTENT_SETTING_ALLOW, |
| CONTENT_SETTING_ASK, |
| CONTENT_SETTING_BLOCK }; |
| |
| } // namespace |
| |
| ContentSettingComboModel::ContentSettingComboModel(ContentSettingsType type) |
| : content_type_(type) { |
| } |
| |
| ContentSettingComboModel::~ContentSettingComboModel() { |
| } |
| |
| int ContentSettingComboModel::GetItemCount() { |
| if (content_type_ == CONTENT_SETTINGS_TYPE_PLUGINS && |
| CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableClickToPlay)) |
| return arraysize(kAskSettings); |
| if (content_type_ == CONTENT_SETTINGS_TYPE_COOKIES) |
| return arraysize(kSessionSettings); |
| return arraysize(kNoSessionSettings); |
| } |
| |
| string16 ContentSettingComboModel::GetItemAt(int index) { |
| switch (SettingForIndex(index)) { |
| case CONTENT_SETTING_ALLOW: |
| return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ALLOW_BUTTON); |
| case CONTENT_SETTING_BLOCK: |
| return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON); |
| case CONTENT_SETTING_ASK: |
| return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ASK_BUTTON); |
| case CONTENT_SETTING_SESSION_ONLY: |
| return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_SESSION_ONLY_BUTTON); |
| default: |
| NOTREACHED(); |
| } |
| return string16(); |
| } |
| |
| ContentSetting ContentSettingComboModel::SettingForIndex(int index) { |
| if (content_type_ == CONTENT_SETTINGS_TYPE_PLUGINS && |
| CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableClickToPlay)) |
| return kAskSettings[index]; |
| if (content_type_ == CONTENT_SETTINGS_TYPE_COOKIES) |
| return kSessionSettings[index]; |
| return kNoSessionSettings[index]; |
| } |
| |
| int ContentSettingComboModel::IndexForSetting(ContentSetting setting) { |
| for (int i = 0; i < GetItemCount(); ++i) |
| if (SettingForIndex(i) == setting) |
| return i; |
| NOTREACHED(); |
| return 0; |
| } |
| |