• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/content_setting_combo_model.h"
6 
7 #include "base/command_line.h"
8 #include "base/string16.h"
9 #include "chrome/common/chrome_switches.h"
10 #include "grit/generated_resources.h"
11 #include "ui/base/l10n/l10n_util.h"
12 
13 namespace {
14 
15 // The settings shown in the combobox if show_session_ is false;
16 const ContentSetting kNoSessionSettings[] = { CONTENT_SETTING_ALLOW,
17                                               CONTENT_SETTING_BLOCK };
18 
19 // The settings shown in the combobox if show_session_ is true;
20 const ContentSetting kSessionSettings[] = { CONTENT_SETTING_ALLOW,
21                                             CONTENT_SETTING_SESSION_ONLY,
22                                             CONTENT_SETTING_BLOCK };
23 
24 // The settings shown in the combobox for plug-ins;
25 const ContentSetting kAskSettings[] = { CONTENT_SETTING_ALLOW,
26                                         CONTENT_SETTING_ASK,
27                                         CONTENT_SETTING_BLOCK };
28 
29 }  // namespace
30 
ContentSettingComboModel(ContentSettingsType type)31 ContentSettingComboModel::ContentSettingComboModel(ContentSettingsType type)
32     : content_type_(type) {
33 }
34 
~ContentSettingComboModel()35 ContentSettingComboModel::~ContentSettingComboModel() {
36 }
37 
GetItemCount()38 int ContentSettingComboModel::GetItemCount() {
39   if (content_type_ == CONTENT_SETTINGS_TYPE_PLUGINS &&
40       CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableClickToPlay))
41     return arraysize(kAskSettings);
42   if (content_type_ == CONTENT_SETTINGS_TYPE_COOKIES)
43     return arraysize(kSessionSettings);
44   return arraysize(kNoSessionSettings);
45 }
46 
GetItemAt(int index)47 string16 ContentSettingComboModel::GetItemAt(int index) {
48   switch (SettingForIndex(index)) {
49     case CONTENT_SETTING_ALLOW:
50       return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ALLOW_BUTTON);
51     case CONTENT_SETTING_BLOCK:
52       return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON);
53     case CONTENT_SETTING_ASK:
54       return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ASK_BUTTON);
55     case CONTENT_SETTING_SESSION_ONLY:
56       return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_SESSION_ONLY_BUTTON);
57     default:
58       NOTREACHED();
59   }
60   return string16();
61 }
62 
SettingForIndex(int index)63 ContentSetting ContentSettingComboModel::SettingForIndex(int index) {
64   if (content_type_ == CONTENT_SETTINGS_TYPE_PLUGINS &&
65       CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableClickToPlay))
66     return kAskSettings[index];
67   if (content_type_ == CONTENT_SETTINGS_TYPE_COOKIES)
68     return kSessionSettings[index];
69   return kNoSessionSettings[index];
70 }
71 
IndexForSetting(ContentSetting setting)72 int ContentSettingComboModel::IndexForSetting(ContentSetting setting) {
73   for (int i = 0; i < GetItemCount(); ++i)
74     if (SettingForIndex(i) == setting)
75       return i;
76   NOTREACHED();
77   return 0;
78 }
79 
80