Index: components/content_settings/core/browser/content_settings_utils.cc |
diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc |
index 8a629b0fa5c20a53a40d759a46c1ad5a3faae9aa..b989875867893cfee66aa59e6d5033c6af88989d 100644 |
--- a/components/content_settings/core/browser/content_settings_utils.cc |
+++ b/components/content_settings/core/browser/content_settings_utils.cc |
@@ -25,45 +25,47 @@ namespace { |
const char kPatternSeparator[] = ","; |
+struct ContentSettingsStringMapping { |
+ ContentSetting content_setting; |
+ const char* content_setting_str; |
+}; |
+const ContentSettingsStringMapping kContentSettingsStringMapping[] = { |
+ {CONTENT_SETTING_DEFAULT, "default"}, |
+ {CONTENT_SETTING_ALLOW, "allow"}, |
+ {CONTENT_SETTING_BLOCK, "block"}, |
+ {CONTENT_SETTING_ASK, "ask"}, |
+ {CONTENT_SETTING_SESSION_ONLY, "session_only"}, |
+ {CONTENT_SETTING_DETECT_IMPORTANT_CONTENT, "detect_important_content"}, |
+}; |
+static_assert(arraysize(kContentSettingsStringMapping) == |
+ CONTENT_SETTING_NUM_SETTINGS, |
+ "kContentSettingsToFromString should have " |
+ "CONTENT_SETTING_NUM_SETTINGS elements"); |
+ |
} // namespace |
namespace content_settings { |
std::string ContentSettingToString(ContentSetting setting) { |
- switch (setting) { |
- case CONTENT_SETTING_ALLOW: |
- return "allow"; |
- case CONTENT_SETTING_ASK: |
- return "ask"; |
- case CONTENT_SETTING_BLOCK: |
- return "block"; |
- case CONTENT_SETTING_SESSION_ONLY: |
- return "session"; |
- case CONTENT_SETTING_DETECT_IMPORTANT_CONTENT: |
- return "detect"; |
- case CONTENT_SETTING_DEFAULT: |
- return "default"; |
- case CONTENT_SETTING_NUM_SETTINGS: |
- NOTREACHED(); |
+ if (setting >= CONTENT_SETTING_DEFAULT && |
+ setting < CONTENT_SETTING_NUM_SETTINGS) { |
+ return kContentSettingsStringMapping[setting].content_setting_str; |
} |
- |
- return ResourceIdentifier(); |
+ return std::string(); |
} |
-ContentSetting ContentSettingFromString(const std::string& name) { |
- if (name == "allow") |
- return CONTENT_SETTING_ALLOW; |
- if (name == "ask") |
- return CONTENT_SETTING_ASK; |
- if (name == "block") |
- return CONTENT_SETTING_BLOCK; |
- if (name == "session") |
- return CONTENT_SETTING_SESSION_ONLY; |
- if (name == "detect") |
- return CONTENT_SETTING_DETECT_IMPORTANT_CONTENT; |
- |
- NOTREACHED() << name << " is not a recognized content setting."; |
- return CONTENT_SETTING_DEFAULT; |
+bool ContentSettingFromString(const std::string& name, |
+ ContentSetting* setting) { |
+ // We are starting the index from 1, as |CONTENT_SETTING_DEFAULT| is not |
+ // a recognized content setting. |
+ for (size_t i = 1; i < arraysize(kContentSettingsStringMapping); ++i) { |
+ if (name == kContentSettingsStringMapping[i].content_setting_str) { |
+ *setting = kContentSettingsStringMapping[i].content_setting; |
+ return true; |
+ } |
+ } |
+ *setting = CONTENT_SETTING_DEFAULT; |
+ return false; |
} |
std::string CreatePatternString( |