Index: chrome/renderer/safe_browsing/features.cc |
diff --git a/chrome/renderer/safe_browsing/features.cc b/chrome/renderer/safe_browsing/features.cc |
index 47a093cfbfae3e15e64185ff0506dba891f2e637..4d67cf34517f927ca8bec513545e6f1d371a1873 100644 |
--- a/chrome/renderer/safe_browsing/features.cc |
+++ b/chrome/renderer/safe_browsing/features.cc |
@@ -15,6 +15,10 @@ FeatureMap::FeatureMap() {} |
FeatureMap::~FeatureMap() {} |
bool FeatureMap::AddBooleanFeature(const std::string& name) { |
+ return AddRealFeature(name, 1.0); |
+} |
+ |
+bool FeatureMap::AddRealFeature(const std::string& name, double value) { |
if (features_.size() >= kMaxFeatureMapSize) { |
// If we hit this case, it indicates that either kMaxFeatureMapSize is |
// too small, or there is a bug causing too many features to be added. |
@@ -25,7 +29,16 @@ bool FeatureMap::AddBooleanFeature(const std::string& name) { |
UMA_HISTOGRAM_COUNTS("SBClientPhishing.TooManyFeatures", 1); |
return false; |
} |
- features_[name] = 1.0; |
+ // We only expect features in the range [0.0, 1.0], so fail if the feature is |
+ // outside this range. |
+ if (value < 0.0 || value > 1.0) { |
+ LOG(ERROR) << "Not adding feature: " << name << " because the value " |
+ << value << " is not in the range [0.0, 1.0]."; |
+ UMA_HISTOGRAM_COUNTS("SBClientPhishing.IllegalFeatureValue", 1); |
+ return false; |
+ } |
+ |
+ features_[name] = value; |
return true; |
} |
@@ -47,5 +60,25 @@ const char kUrlNumOtherHostTokensGTThree[] = "UrlNumOtherHostTokens>3"; |
// URL path features |
const char kUrlPathToken[] = "UrlPathToken="; |
+// DOM HTML form features |
+const char kPageHasForms[] = "PageHasForms"; |
+const char kPageActionOtherDomainFreq[] = "PageActionOtherDomainFreq"; |
+const char kPageHasTextInputs[] = "PageHasTextInputs"; |
+const char kPageHasPswdInputs[] = "PageHasPswdInputs"; |
+const char kPageHasRadioInputs[] = "PageHasRadioInputs"; |
+const char kPageHasCheckInputs[] = "PageHasCheckInputs"; |
+ |
+// DOM HTML link features |
+const char kPageExternalLinksFreq[] = "PageExternalLinksFreq"; |
+const char kPageLinkDomain[] = "PageLinkDomain="; |
+const char kPageSecureLinksFreq[] = "PageSecureLinksFreq"; |
+ |
+// DOM HTML script features |
+const char kPageNumScriptTagsGTOne[] = "PageNumScriptTags>1"; |
+const char kPageNumScriptTagsGTSix[] = "PageNumScriptTags>6"; |
+ |
+// Other DOM HTML features |
+const char kPageImgOtherDomainFreq[] = "PageImgOtherDomainFreq"; |
+ |
} // namespace features |
} // namespace safe_browsing |