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..0073c528cc433f05e71dde414140546533212ad9 100644 |
--- a/components/content_settings/core/browser/content_settings_utils.cc |
+++ b/components/content_settings/core/browser/content_settings_utils.cc |
@@ -25,42 +25,42 @@ namespace { |
const char kPatternSeparator[] = ","; |
+struct ContentSettingsToFromString { |
Bernhard Bauer
2015/10/01 14:36:09
Nit: ContentSettingsStringMapping might be better.
Deepak
2015/10/03 09:02:11
Done.
|
+ ContentSetting content_setting; |
+ const char* content_setting_str; |
+}; |
+const ContentSettingsToFromString kContentSettingsToFromString[] = { |
+ {CONTENT_SETTING_DEFAULT, "default"}, |
+ {CONTENT_SETTING_ALLOW, "allow"}, |
+ {CONTENT_SETTING_BLOCK, "block"}, |
+ {CONTENT_SETTING_ASK, "ask"}, |
+ {CONTENT_SETTING_SESSION_ONLY, "session"}, |
+ {CONTENT_SETTING_DETECT_IMPORTANT_CONTENT, "detect"}, |
+}; |
+static_assert(arraysize(kContentSettingsToFromString) == |
+ 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(setting >= CONTENT_SETTING_DEFAULT && |
Bernhard Bauer
2015/10/01 14:36:09
Split this up into two checks, and use DCHECK_GE /
Deepak
2015/10/03 09:02:11
Done.
|
+ setting < CONTENT_SETTING_NUM_SETTINGS); |
+ return kContentSettingsToFromString[setting].content_setting_str; |
Bernhard Bauer
2015/10/01 14:36:09
There is an implicit assumption here that `kConten
Deepak
2015/10/03 09:02:12
Done.
|
} |
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; |
+ size_t i = 0; |
Bernhard Bauer
2015/10/01 14:36:09
Inline this into the loop?
Deepak
2015/10/03 09:02:11
Done.
|
+ for (i = 0; i < arraysize(kContentSettingsToFromString); ++i) { |
+ if (name == kContentSettingsToFromString[i].content_setting_str) |
+ break; |
Bernhard Bauer
2015/10/01 14:36:09
You could directly return here, then you only need
Deepak
2015/10/03 09:02:11
Done.
|
+ } |
+ ContentSetting content_setting = static_cast<ContentSetting>(i); |
+ if (content_setting != CONTENT_SETTING_NUM_SETTINGS && |
+ content_setting != CONTENT_SETTING_DEFAULT) |
+ return kContentSettingsToFromString[i].content_setting; |
NOTREACHED() << name << " is not a recognized content setting."; |
return CONTENT_SETTING_DEFAULT; |