Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // Implementation of the SafeBrowsingBlockingPage class. | 5 // Implementation of the SafeBrowsingBlockingPage class. |
| 6 | 6 |
| 7 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" | 7 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 // RecordUserReactionTime. | 110 // RecordUserReactionTime. |
| 111 const char kNavigatedAwayMetaCommand[] = "closed"; | 111 const char kNavigatedAwayMetaCommand[] = "closed"; |
| 112 | 112 |
| 113 // Other constants used to communicate with the JavaScript. | 113 // Other constants used to communicate with the JavaScript. |
| 114 const char kBoxChecked[] = "boxchecked"; | 114 const char kBoxChecked[] = "boxchecked"; |
| 115 const char kDisplayCheckBox[] = "displaycheckbox"; | 115 const char kDisplayCheckBox[] = "displaycheckbox"; |
| 116 | 116 |
| 117 base::LazyInstance<SafeBrowsingBlockingPage::UnsafeResourceMap> | 117 base::LazyInstance<SafeBrowsingBlockingPage::UnsafeResourceMap> |
| 118 g_unsafe_resource_map = LAZY_INSTANCE_INITIALIZER; | 118 g_unsafe_resource_map = LAZY_INSTANCE_INITIALIZER; |
| 119 | 119 |
| 120 // These are the conditions for the summer 2013 Finch experiment. | |
| 121 // TODO(felt): Get rid of these now that experiment has ended. | |
| 122 const char kMalwareStudyName[] = "InterstitialMalware310"; | |
| 123 const char kPhishingStudyName[] = "InterstitialPhishing564"; | |
| 124 const char kCond7MalwareFearMsg[] = "cond7MalwareFearMsg"; | |
| 125 const char kCond8PhishingFearMsg[] = "cond8PhishingFearMsg"; | |
| 126 const char kCond9MalwareCollabMsg[] = "cond9MalwareCollabMsg"; | |
| 127 const char kCond10PhishingCollabMsg[] = "cond10PhishingCollabMsg"; | |
| 128 const char kCond11MalwareQuestion[] = "cond11MalwareQuestion"; | |
| 129 const char kCond12PhishingQuestion[] = "cond12PhishingQuestion"; | |
| 130 const char kCond13MalwareGoBack[] = "cond13MalwareGoBack"; | |
| 131 const char kCond14PhishingGoBack[] = "cond14PhishingGoBack"; | |
| 132 | |
| 133 // This enum is used for a histogram. Don't reorder, delete, or insert | 120 // This enum is used for a histogram. Don't reorder, delete, or insert |
| 134 // elements. New elements should be added before MAX_ACTION only. | 121 // elements. New elements should be added before MAX_ACTION only. |
| 135 enum DetailedDecision { | 122 enum DetailedDecision { |
| 136 MALWARE_SHOW_NEW_SITE = 0, | 123 MALWARE_SHOW_NEW_SITE = 0, |
| 137 MALWARE_PROCEED_NEW_SITE, | 124 MALWARE_PROCEED_NEW_SITE, |
| 138 MALWARE_SHOW_CROSS_SITE, | 125 MALWARE_SHOW_CROSS_SITE, |
| 139 MALWARE_PROCEED_CROSS_SITE, | 126 MALWARE_PROCEED_CROSS_SITE, |
| 140 PHISHING_SHOW_NEW_SITE, | 127 PHISHING_SHOW_NEW_SITE, |
| 141 PHISHING_PROCEED_NEW_SITE, | 128 PHISHING_PROCEED_NEW_SITE, |
| 142 PHISHING_SHOW_CROSS_SITE, | 129 PHISHING_SHOW_CROSS_SITE, |
| 143 PHISHING_PROCEED_CROSS_SITE, | 130 PHISHING_PROCEED_CROSS_SITE, |
| 144 MAX_DETAILED_ACTION | 131 MAX_DETAILED_ACTION |
| 145 }; | 132 }; |
| 146 | 133 |
| 147 void RecordDetailedUserAction(DetailedDecision decision) { | 134 void RecordDetailedUserAction(DetailedDecision decision) { |
| 148 UMA_HISTOGRAM_ENUMERATION("SB2.InterstitialActionDetails", | 135 UMA_HISTOGRAM_ENUMERATION("SB2.InterstitialActionDetails", |
| 149 decision, | 136 decision, |
| 150 MAX_DETAILED_ACTION); | 137 MAX_DETAILED_ACTION); |
| 151 } | 138 } |
| 152 | 139 |
| 153 // These are the constants for the M37 Finch trial. | 140 // Constants for the M37 Finch trial. |
| 154 const char kV3StudyName[] = "MalwareInterstitialVersion"; | 141 const char kV3StudyName[] = "MalwareInterstitialVersion"; |
| 155 const char kCondUseV2[] = "V2"; | 142 const char kCondV2[] = "V2"; |
| 143 const char kCondV3[] = "V3"; | |
| 144 const char kCondV3Advice[] = "V3Advice"; | |
| 145 const char kCondV3Social[] = "V3Social"; | |
| 146 const char kCondV3NotRecommend[] = "V3NotRecommend"; | |
| 147 const char kCondV3History[] = "V3History"; | |
| 156 | 148 |
| 157 // Default to V3 unless a flag or field trial says otherwise. | 149 // Default to V3 unless a flag or field trial says otherwise. |
| 158 bool Version3Enabled() { | 150 const char* GetTrialCondition() { |
| 159 if (CommandLine::ForCurrentProcess()->HasSwitch( | 151 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 160 switches::kMalwareInterstitialVersionV2)) { | 152 switches::kMalwareInterstitialV2) || |
| 161 return false; | 153 base::FieldTrialList::FindFullName(kV3StudyName) == kCondV2) { |
|
mattm
2014/06/19 06:57:03
Seems like the switches should always override the
felt
2014/06/19 14:08:54
Done.
| |
| 154 return kCondV2; | |
| 162 } | 155 } |
| 163 if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondUseV2) | 156 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 164 return false; | 157 switches::kMalwareInterstitialV3) || |
| 165 return true; | 158 base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3) { |
| 159 return kCondV3; | |
| 160 } | |
| 161 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
| 162 switches::kMalwareInterstitialV3Advice) || | |
| 163 base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3Advice) { | |
| 164 return kCondV3Advice; | |
| 165 } | |
| 166 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
| 167 switches::kMalwareInterstitialV3Social) || | |
| 168 base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3Social) { | |
| 169 return kCondV3Social; | |
| 170 } | |
| 171 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
| 172 switches::kMalwareInterstitialV3NotRecommend) || | |
| 173 base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3NotRecommend) { | |
| 174 return kCondV3NotRecommend; | |
| 175 } | |
| 176 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
| 177 switches::kMalwareInterstitialV3History) || | |
| 178 base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3History) { | |
| 179 return kCondV3History; | |
| 180 } | |
| 181 return kCondV3; | |
| 166 } | 182 } |
| 167 | 183 |
| 168 } // namespace | 184 } // namespace |
| 169 | 185 |
| 170 // static | 186 // static |
| 171 SafeBrowsingBlockingPageFactory* SafeBrowsingBlockingPage::factory_ = NULL; | 187 SafeBrowsingBlockingPageFactory* SafeBrowsingBlockingPage::factory_ = NULL; |
| 172 | 188 |
| 173 // The default SafeBrowsingBlockingPageFactory. Global, made a singleton so we | 189 // The default SafeBrowsingBlockingPageFactory. Global, made a singleton so we |
| 174 // don't leak it. | 190 // don't leak it. |
| 175 class SafeBrowsingBlockingPageFactoryImpl | 191 class SafeBrowsingBlockingPageFactoryImpl |
| 176 : public SafeBrowsingBlockingPageFactory { | 192 : public SafeBrowsingBlockingPageFactory { |
| 177 public: | 193 public: |
| 178 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( | 194 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( |
| 179 SafeBrowsingUIManager* ui_manager, | 195 SafeBrowsingUIManager* ui_manager, |
| 180 WebContents* web_contents, | 196 WebContents* web_contents, |
| 181 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) | 197 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) |
| 182 OVERRIDE { | 198 OVERRIDE { |
| 183 // Only use the V2 page if the interstitial is for a single malware or | 199 // Only use the V2 page if the interstitial is for a single malware or |
| 184 // phishing resource, the multi-threat interstitial has not been updated to | 200 // phishing resource, the multi-threat interstitial has not been updated to |
| 185 // V2 yet. | 201 // V2 yet. |
| 186 if (unsafe_resources.size() == 1 && | 202 if (unsafe_resources.size() == 1 && |
| 187 (unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_MALWARE || | 203 (unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_MALWARE || |
| 188 unsafe_resources[0].threat_type == | 204 unsafe_resources[0].threat_type == |
| 189 SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL || | 205 SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL || |
| 190 unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_PHISHING || | 206 unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_PHISHING || |
| 191 unsafe_resources[0].threat_type == | 207 unsafe_resources[0].threat_type == |
| 192 SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL)) { | 208 SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL)) { |
| 193 if (Version3Enabled()) { | 209 if (GetTrialCondition() == kCondV2) { |
| 194 return new SafeBrowsingBlockingPageV3(ui_manager, web_contents, | 210 return new SafeBrowsingBlockingPageV2(ui_manager, web_contents, |
| 195 unsafe_resources); | 211 unsafe_resources); |
| 196 } else { | 212 } else { |
| 197 return new SafeBrowsingBlockingPageV2(ui_manager, web_contents, | 213 return new SafeBrowsingBlockingPageV3(ui_manager, web_contents, |
| 198 unsafe_resources); | 214 unsafe_resources); |
| 199 } | 215 } |
| 200 } | 216 } |
| 201 return new SafeBrowsingBlockingPageV1(ui_manager, web_contents, | 217 return new SafeBrowsingBlockingPageV1(ui_manager, web_contents, |
| 202 unsafe_resources); | 218 unsafe_resources); |
| 203 } | 219 } |
| 204 | 220 |
| 205 private: | 221 private: |
| 206 friend struct base::DefaultLazyInstanceTraits< | 222 friend struct base::DefaultLazyInstanceTraits< |
| 207 SafeBrowsingBlockingPageFactoryImpl>; | 223 SafeBrowsingBlockingPageFactoryImpl>; |
| (...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1034 void SafeBrowsingBlockingPageV1::PopulatePhishingStringDictionary( | 1050 void SafeBrowsingBlockingPageV1::PopulatePhishingStringDictionary( |
| 1035 base::DictionaryValue* strings) { | 1051 base::DictionaryValue* strings) { |
| 1036 NOTREACHED(); | 1052 NOTREACHED(); |
| 1037 } | 1053 } |
| 1038 | 1054 |
| 1039 SafeBrowsingBlockingPageV2::SafeBrowsingBlockingPageV2( | 1055 SafeBrowsingBlockingPageV2::SafeBrowsingBlockingPageV2( |
| 1040 SafeBrowsingUIManager* ui_manager, | 1056 SafeBrowsingUIManager* ui_manager, |
| 1041 WebContents* web_contents, | 1057 WebContents* web_contents, |
| 1042 const UnsafeResourceList& unsafe_resources) | 1058 const UnsafeResourceList& unsafe_resources) |
| 1043 : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources) { | 1059 : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources) { |
| 1044 if (unsafe_resources_[0].threat_type == SB_THREAT_TYPE_URL_MALWARE || | |
| 1045 unsafe_resources_[0].threat_type == | |
| 1046 SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL) { | |
| 1047 trialCondition_ = | |
| 1048 base::FieldTrialList::FindFullName(kMalwareStudyName); | |
| 1049 } else if (unsafe_resources_[0].threat_type == | |
| 1050 SB_THREAT_TYPE_URL_PHISHING || | |
| 1051 unsafe_resources_[0].threat_type == | |
| 1052 SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL) { | |
| 1053 trialCondition_ = | |
| 1054 base::FieldTrialList::FindFullName(kPhishingStudyName); | |
| 1055 } | |
| 1056 } | 1060 } |
| 1057 | 1061 |
| 1058 std::string SafeBrowsingBlockingPageV2::GetHTMLContents() { | 1062 std::string SafeBrowsingBlockingPageV2::GetHTMLContents() { |
| 1059 // Load the HTML page and create the template components. | 1063 // Load the HTML page and create the template components. |
| 1060 base::DictionaryValue strings; | 1064 base::DictionaryValue strings; |
| 1061 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 1065 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 1062 std::string html; | 1066 std::string html; |
| 1063 | 1067 |
| 1064 if (unsafe_resources_.empty()) { | 1068 if (unsafe_resources_.empty()) { |
| 1065 NOTREACHED(); | 1069 NOTREACHED(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1103 IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)); | 1107 IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)); |
| 1104 strings->SetBoolean("isMainFrame", is_main_frame_load_blocked_); | 1108 strings->SetBoolean("isMainFrame", is_main_frame_load_blocked_); |
| 1105 strings->SetBoolean("isPhishing", interstitial_type_ == TYPE_PHISHING); | 1109 strings->SetBoolean("isPhishing", interstitial_type_ == TYPE_PHISHING); |
| 1106 | 1110 |
| 1107 strings->SetString("back_button", | 1111 strings->SetString("back_button", |
| 1108 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON)); | 1112 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON)); |
| 1109 strings->SetString("seeMore", l10n_util::GetStringUTF16( | 1113 strings->SetString("seeMore", l10n_util::GetStringUTF16( |
| 1110 IDS_SAFE_BROWSING_MALWARE_V2_SEE_MORE)); | 1114 IDS_SAFE_BROWSING_MALWARE_V2_SEE_MORE)); |
| 1111 strings->SetString("proceed", | 1115 strings->SetString("proceed", |
| 1112 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_V2_PROCEED_LINK)); | 1116 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_V2_PROCEED_LINK)); |
| 1113 | |
| 1114 // Field trial | |
| 1115 strings->SetString("trialType", trialCondition_); | |
| 1116 if (trialCondition_ == kCond7MalwareFearMsg) { | |
| 1117 strings->SetString("headLine", | |
| 1118 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_FEAR_HEADLINE)); | |
| 1119 } else if (trialCondition_ == kCond8PhishingFearMsg) { | |
| 1120 strings->SetString("headLine", | |
| 1121 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_FEAR_HEADLINE)); | |
| 1122 } else if (trialCondition_ == kCond9MalwareCollabMsg) { | |
| 1123 strings->SetString("headLine", | |
| 1124 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_COLLAB_HEADLINE)); | |
| 1125 } else if (trialCondition_ == kCond10PhishingCollabMsg) { | |
| 1126 strings->SetString("headLine", | |
| 1127 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_COLLAB_HEADLINE)); | |
| 1128 } else if (trialCondition_ == kCond11MalwareQuestion) { | |
| 1129 strings->SetString("headLine", | |
| 1130 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_QUESTION_HEADLINE)); | |
| 1131 } else if (trialCondition_ == kCond12PhishingQuestion) { | |
| 1132 strings->SetString("headLine", | |
| 1133 l10n_util::GetStringUTF16( | |
| 1134 IDS_SAFE_BROWSING_PHISHING_QUESTION_HEADLINE)); | |
| 1135 } else if (trialCondition_ == kCond13MalwareGoBack) { | |
| 1136 strings->SetString("headLine", | |
| 1137 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_BACK_HEADLINE)); | |
| 1138 } else if (trialCondition_ == kCond14PhishingGoBack) { | |
| 1139 strings->SetString("headLine", | |
| 1140 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_BACK_HEADLINE)); | |
| 1141 } | |
| 1142 | |
| 1143 webui::SetFontAndTextDirection(strings); | 1117 webui::SetFontAndTextDirection(strings); |
| 1144 } | 1118 } |
| 1145 | 1119 |
| 1146 void SafeBrowsingBlockingPageV2::PopulateMultipleThreatStringDictionary( | 1120 void SafeBrowsingBlockingPageV2::PopulateMultipleThreatStringDictionary( |
| 1147 base::DictionaryValue* strings) { | 1121 base::DictionaryValue* strings) { |
| 1148 NOTREACHED(); | 1122 NOTREACHED(); |
| 1149 } | 1123 } |
| 1150 | 1124 |
| 1151 void SafeBrowsingBlockingPageV2::PopulateMalwareStringDictionary( | 1125 void SafeBrowsingBlockingPageV2::PopulateMalwareStringDictionary( |
| 1152 base::DictionaryValue* strings) { | 1126 base::DictionaryValue* strings) { |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1246 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_V2_REPORT_ERROR)); | 1220 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_V2_REPORT_ERROR)); |
| 1247 strings->SetBoolean(kDisplayCheckBox, false); | 1221 strings->SetBoolean(kDisplayCheckBox, false); |
| 1248 strings->SetString("learnMore", | 1222 strings->SetString("learnMore", |
| 1249 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_V2_LEARN_MORE)); | 1223 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_V2_LEARN_MORE)); |
| 1250 } | 1224 } |
| 1251 | 1225 |
| 1252 SafeBrowsingBlockingPageV3::SafeBrowsingBlockingPageV3( | 1226 SafeBrowsingBlockingPageV3::SafeBrowsingBlockingPageV3( |
| 1253 SafeBrowsingUIManager* ui_manager, | 1227 SafeBrowsingUIManager* ui_manager, |
| 1254 WebContents* web_contents, | 1228 WebContents* web_contents, |
| 1255 const UnsafeResourceList& unsafe_resources) | 1229 const UnsafeResourceList& unsafe_resources) |
| 1256 : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources) { | 1230 : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources), |
| 1231 trial_condition_(GetTrialCondition()) { | |
| 1257 } | 1232 } |
| 1258 | 1233 |
| 1259 std::string SafeBrowsingBlockingPageV3::GetHTMLContents() { | 1234 std::string SafeBrowsingBlockingPageV3::GetHTMLContents() { |
| 1260 if (unsafe_resources_.empty() || unsafe_resources_.size() > 1) { | 1235 if (unsafe_resources_.empty() || unsafe_resources_.size() > 1) { |
| 1261 // TODO(felt): Implement new multi-threat interstitial. crbug.com/160336 | 1236 // TODO(felt): Implement new multi-threat interstitial. crbug.com/160336 |
| 1262 NOTIMPLEMENTED(); | 1237 NOTIMPLEMENTED(); |
| 1263 return std::string(); | 1238 return std::string(); |
| 1264 } | 1239 } |
| 1265 | 1240 |
| 1266 // Fill in the shared values. | 1241 // Fill in the shared values. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1303 | 1278 |
| 1304 base::StringPiece html( | 1279 base::StringPiece html( |
| 1305 ResourceBundle::GetSharedInstance().GetRawDataResource( | 1280 ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 1306 IRD_SSL_INTERSTITIAL_V2_HTML)); | 1281 IRD_SSL_INTERSTITIAL_V2_HTML)); |
| 1307 webui::UseVersion2 version; | 1282 webui::UseVersion2 version; |
| 1308 return webui::GetI18nTemplateHtml(html, &load_time_data); | 1283 return webui::GetI18nTemplateHtml(html, &load_time_data); |
| 1309 } | 1284 } |
| 1310 | 1285 |
| 1311 void SafeBrowsingBlockingPageV3::PopulateMalwareLoadTimeData( | 1286 void SafeBrowsingBlockingPageV3::PopulateMalwareLoadTimeData( |
| 1312 base::DictionaryValue* load_time_data) { | 1287 base::DictionaryValue* load_time_data) { |
| 1288 load_time_data->SetString("trialCondition", trial_condition_); | |
| 1313 load_time_data->SetBoolean("phishing", false); | 1289 load_time_data->SetBoolean("phishing", false); |
| 1314 load_time_data->SetString( | 1290 load_time_data->SetString( |
| 1315 "heading", l10n_util::GetStringUTF16(IDS_MALWARE_V3_HEADING)); | 1291 "heading", l10n_util::GetStringUTF16(IDS_MALWARE_V3_HEADING)); |
| 1316 load_time_data->SetString( | 1292 load_time_data->SetString( |
| 1317 "primaryParagraph", | 1293 "primaryParagraph", |
| 1318 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PRIMARY_PARAGRAPH)); | 1294 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PRIMARY_PARAGRAPH)); |
| 1319 load_time_data->SetString( | 1295 if (trial_condition_ == kCondV3History) { |
| 1320 "explanationParagraph", | 1296 load_time_data->SetString( |
| 1321 is_main_frame_load_blocked_ ? | 1297 "explanationParagraph", |
| 1322 l10n_util::GetStringFUTF16( | 1298 is_main_frame_load_blocked_ ? |
| 1323 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH, | 1299 l10n_util::GetStringFUTF16( |
| 1324 base::UTF8ToUTF16(url_.host())) : | 1300 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_HISTORY, |
| 1325 l10n_util::GetStringFUTF16( | 1301 base::UTF8ToUTF16(url_.host())) : |
| 1326 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE, | 1302 l10n_util::GetStringFUTF16( |
| 1327 base::UTF8ToUTF16(web_contents_->GetURL().host()), | 1303 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE_HISTORY, |
| 1328 base::UTF8ToUTF16(url_.host()))); | 1304 base::UTF8ToUTF16(web_contents_->GetURL().host()), |
| 1329 load_time_data->SetString( | 1305 base::UTF8ToUTF16(url_.host()))); |
| 1330 "finalParagraph", | 1306 } else if (trial_condition_ == kCondV3Advice) { |
| 1331 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH)); | 1307 load_time_data->SetString( |
| 1308 "explanationParagraph", | |
| 1309 is_main_frame_load_blocked_ ? | |
| 1310 l10n_util::GetStringFUTF16( | |
| 1311 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_ADVICE, | |
| 1312 base::UTF8ToUTF16(url_.host())) : | |
| 1313 l10n_util::GetStringFUTF16( | |
| 1314 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE_ADVICE, | |
| 1315 base::UTF8ToUTF16(web_contents_->GetURL().host()), | |
| 1316 base::UTF8ToUTF16(url_.host()))); | |
| 1317 load_time_data->SetString( | |
| 1318 "adviceHeading", | |
| 1319 l10n_util::GetStringUTF16(IDS_MALWARE_V3_ADVICE_HEADING)); | |
| 1320 } else { | |
| 1321 load_time_data->SetString( | |
| 1322 "explanationParagraph", | |
| 1323 is_main_frame_load_blocked_ ? | |
| 1324 l10n_util::GetStringFUTF16( | |
| 1325 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH, | |
| 1326 base::UTF8ToUTF16(url_.host())) : | |
| 1327 l10n_util::GetStringFUTF16( | |
| 1328 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE, | |
| 1329 base::UTF8ToUTF16(web_contents_->GetURL().host()), | |
| 1330 base::UTF8ToUTF16(url_.host()))); | |
| 1331 } | |
| 1332 if (trial_condition_ == kCondV3Social) { | |
| 1333 load_time_data->SetString( | |
| 1334 "finalParagraph", | |
| 1335 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH_SOCIAL)); | |
| 1336 } else if (trial_condition_ == kCondV3NotRecommend) { | |
| 1337 load_time_data->SetString( | |
| 1338 "finalParagraph", | |
| 1339 l10n_util::GetStringUTF16( | |
| 1340 IDS_MALWARE_V3_PROCEED_PARAGRAPH_NOT_RECOMMEND)); | |
| 1341 } else { | |
| 1342 load_time_data->SetString( | |
| 1343 "finalParagraph", | |
| 1344 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH)); | |
| 1345 } | |
| 1332 | 1346 |
| 1333 load_time_data->SetBoolean(kDisplayCheckBox, CanShowMalwareDetailsOption()); | 1347 load_time_data->SetBoolean(kDisplayCheckBox, CanShowMalwareDetailsOption()); |
| 1334 if (CanShowMalwareDetailsOption()) { | 1348 if (CanShowMalwareDetailsOption()) { |
| 1335 std::string privacy_link = base::StringPrintf( | 1349 std::string privacy_link = base::StringPrintf( |
| 1336 kPrivacyLinkHtml, | 1350 kPrivacyLinkHtml, |
| 1337 l10n_util::GetStringUTF8( | 1351 l10n_util::GetStringUTF8( |
| 1338 IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE_V2).c_str()); | 1352 IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE_V2).c_str()); |
| 1339 load_time_data->SetString( | 1353 load_time_data->SetString( |
| 1340 "optInLink", | 1354 "optInLink", |
| 1341 l10n_util::GetStringFUTF16(IDS_SAFE_BROWSING_MALWARE_V2_REPORTING_AGREE, | 1355 l10n_util::GetStringFUTF16(IDS_SAFE_BROWSING_MALWARE_V2_REPORTING_AGREE, |
| 1342 base::UTF8ToUTF16(privacy_link))); | 1356 base::UTF8ToUTF16(privacy_link))); |
| 1343 Profile* profile = Profile::FromBrowserContext( | 1357 Profile* profile = Profile::FromBrowserContext( |
| 1344 web_contents_->GetBrowserContext()); | 1358 web_contents_->GetBrowserContext()); |
| 1345 if (profile->GetPrefs()->HasPrefPath( | 1359 if (profile->GetPrefs()->HasPrefPath( |
| 1346 prefs::kSafeBrowsingExtendedReportingEnabled)) { | 1360 prefs::kSafeBrowsingExtendedReportingEnabled)) { |
| 1347 reporting_checkbox_checked_ = | 1361 reporting_checkbox_checked_ = |
| 1348 IsPrefEnabled(prefs::kSafeBrowsingExtendedReportingEnabled); | 1362 IsPrefEnabled(prefs::kSafeBrowsingExtendedReportingEnabled); |
| 1349 } else if (IsPrefEnabled(prefs::kSafeBrowsingReportingEnabled) || | 1363 } else if (IsPrefEnabled(prefs::kSafeBrowsingReportingEnabled) || |
| 1350 IsPrefEnabled(prefs::kSafeBrowsingDownloadFeedbackEnabled)) { | 1364 IsPrefEnabled(prefs::kSafeBrowsingDownloadFeedbackEnabled)) { |
| 1351 reporting_checkbox_checked_ = true; | 1365 reporting_checkbox_checked_ = true; |
| 1352 } | 1366 } |
| 1353 load_time_data->SetBoolean( | 1367 load_time_data->SetBoolean( |
| 1354 kBoxChecked, reporting_checkbox_checked_); | 1368 kBoxChecked, reporting_checkbox_checked_); |
| 1355 } | 1369 } |
| 1356 } | 1370 } |
| 1357 | 1371 |
| 1358 void SafeBrowsingBlockingPageV3::PopulatePhishingLoadTimeData( | 1372 void SafeBrowsingBlockingPageV3::PopulatePhishingLoadTimeData( |
| 1359 base::DictionaryValue* load_time_data) { | 1373 base::DictionaryValue* load_time_data) { |
| 1374 load_time_data->SetString("trialCondition", std::string()); | |
| 1360 load_time_data->SetBoolean("phishing", true); | 1375 load_time_data->SetBoolean("phishing", true); |
| 1361 load_time_data->SetString( | 1376 load_time_data->SetString( |
| 1362 "heading", | 1377 "heading", |
| 1363 l10n_util::GetStringUTF16(IDS_PHISHING_V3_HEADING)); | 1378 l10n_util::GetStringUTF16(IDS_PHISHING_V3_HEADING)); |
| 1364 load_time_data->SetString( | 1379 load_time_data->SetString( |
| 1365 "primaryParagraph", | 1380 "primaryParagraph", |
| 1366 l10n_util::GetStringFUTF16( | 1381 l10n_util::GetStringFUTF16( |
| 1367 IDS_PHISHING_V3_PRIMARY_PARAGRAPH, | 1382 IDS_PHISHING_V3_PRIMARY_PARAGRAPH, |
| 1368 base::UTF8ToUTF16(url_.host()))); | 1383 base::UTF8ToUTF16(url_.host()))); |
| 1369 load_time_data->SetString( | 1384 load_time_data->SetString( |
| 1370 "explanationParagraph", | 1385 "explanationParagraph", |
| 1371 l10n_util::GetStringFUTF16(IDS_PHISHING_V3_EXPLANATION_PARAGRAPH, | 1386 l10n_util::GetStringFUTF16(IDS_PHISHING_V3_EXPLANATION_PARAGRAPH, |
| 1372 base::UTF8ToUTF16(url_.host()))); | 1387 base::UTF8ToUTF16(url_.host()))); |
| 1373 load_time_data->SetString( | 1388 load_time_data->SetString( |
| 1374 "finalParagraph", | 1389 "finalParagraph", |
| 1375 l10n_util::GetStringUTF16(IDS_PHISHING_V3_PROCEED_PARAGRAPH)); | 1390 l10n_util::GetStringUTF16(IDS_PHISHING_V3_PROCEED_PARAGRAPH)); |
| 1376 } | 1391 } |
| OLD | NEW |