| 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..c867524caede17e60e9a8f799c8be4c9d6de9b78 100644
|
| --- a/components/content_settings/core/browser/content_settings_utils.cc
|
| +++ b/components/content_settings/core/browser/content_settings_utils.cc
|
| @@ -25,43 +25,40 @@ 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();
|
| - }
|
| -
|
| - return ResourceIdentifier();
|
| + DCHECK_GE(setting, CONTENT_SETTING_DEFAULT);
|
| + DCHECK_LT(setting, CONTENT_SETTING_NUM_SETTINGS);
|
| + DCHECK_EQ(kContentSettingsStringMapping[setting].content_setting, setting);
|
| + return kContentSettingsStringMapping[setting].content_setting_str;
|
| }
|
|
|
| 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;
|
| -
|
| + // 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)
|
| + return kContentSettingsStringMapping[i].content_setting;
|
| + }
|
| NOTREACHED() << name << " is not a recognized content setting.";
|
| return CONTENT_SETTING_DEFAULT;
|
| }
|
|
|