| 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. Flags override |
| 158 bool Version3Enabled() { | 150 // field trial settings. |
| 151 const char* GetTrialCondition() { |
| 159 if (CommandLine::ForCurrentProcess()->HasSwitch( | 152 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 160 switches::kMalwareInterstitialVersionV2)) { | 153 switches::kMalwareInterstitialV2)) { |
| 161 return false; | 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 return kCondV3; |
| 159 } |
| 160 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 161 switches::kMalwareInterstitialV3Advice)) { |
| 162 return kCondV3Advice; |
| 163 } |
| 164 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 165 switches::kMalwareInterstitialV3Social)) { |
| 166 return kCondV3Social; |
| 167 } |
| 168 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 169 switches::kMalwareInterstitialV3NotRecommend)) { |
| 170 return kCondV3NotRecommend; |
| 171 } |
| 172 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 173 switches::kMalwareInterstitialV3History)) { |
| 174 return kCondV3History; |
| 175 } |
| 176 |
| 177 // Make sure that the return value is one of the expected types instead of |
| 178 // directly returning base::FieldTrialList::FindFullName. |
| 179 if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV2) |
| 180 return kCondV2; |
| 181 if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3) |
| 182 return kCondV3; |
| 183 if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3Advice) |
| 184 return kCondV3Advice; |
| 185 if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3Social) |
| 186 return kCondV3Social; |
| 187 if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3NotRecommend) |
| 188 return kCondV3NotRecommend; |
| 189 if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3History) |
| 190 return kCondV3History; |
| 191 return kCondV3; |
| 166 } | 192 } |
| 167 | 193 |
| 168 } // namespace | 194 } // namespace |
| 169 | 195 |
| 170 // static | 196 // static |
| 171 SafeBrowsingBlockingPageFactory* SafeBrowsingBlockingPage::factory_ = NULL; | 197 SafeBrowsingBlockingPageFactory* SafeBrowsingBlockingPage::factory_ = NULL; |
| 172 | 198 |
| 173 // The default SafeBrowsingBlockingPageFactory. Global, made a singleton so we | 199 // The default SafeBrowsingBlockingPageFactory. Global, made a singleton so we |
| 174 // don't leak it. | 200 // don't leak it. |
| 175 class SafeBrowsingBlockingPageFactoryImpl | 201 class SafeBrowsingBlockingPageFactoryImpl |
| 176 : public SafeBrowsingBlockingPageFactory { | 202 : public SafeBrowsingBlockingPageFactory { |
| 177 public: | 203 public: |
| 178 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( | 204 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( |
| 179 SafeBrowsingUIManager* ui_manager, | 205 SafeBrowsingUIManager* ui_manager, |
| 180 WebContents* web_contents, | 206 WebContents* web_contents, |
| 181 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) | 207 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) |
| 182 OVERRIDE { | 208 OVERRIDE { |
| 183 // Only use the V2 page if the interstitial is for a single malware or | 209 // 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 | 210 // phishing resource, the multi-threat interstitial has not been updated to |
| 185 // V2 yet. | 211 // V2 yet. |
| 186 if (unsafe_resources.size() == 1 && | 212 if (unsafe_resources.size() == 1 && |
| 187 (unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_MALWARE || | 213 (unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_MALWARE || |
| 188 unsafe_resources[0].threat_type == | 214 unsafe_resources[0].threat_type == |
| 189 SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL || | 215 SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL || |
| 190 unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_PHISHING || | 216 unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_PHISHING || |
| 191 unsafe_resources[0].threat_type == | 217 unsafe_resources[0].threat_type == |
| 192 SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL)) { | 218 SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL)) { |
| 193 if (Version3Enabled()) { | 219 if (GetTrialCondition() == kCondV2) { |
| 194 return new SafeBrowsingBlockingPageV3(ui_manager, web_contents, | 220 return new SafeBrowsingBlockingPageV2(ui_manager, web_contents, |
| 195 unsafe_resources); | 221 unsafe_resources); |
| 196 } else { | 222 } else { |
| 197 return new SafeBrowsingBlockingPageV2(ui_manager, web_contents, | 223 return new SafeBrowsingBlockingPageV3(ui_manager, web_contents, |
| 198 unsafe_resources); | 224 unsafe_resources); |
| 199 } | 225 } |
| 200 } | 226 } |
| 201 return new SafeBrowsingBlockingPageV1(ui_manager, web_contents, | 227 return new SafeBrowsingBlockingPageV1(ui_manager, web_contents, |
| 202 unsafe_resources); | 228 unsafe_resources); |
| 203 } | 229 } |
| 204 | 230 |
| 205 private: | 231 private: |
| 206 friend struct base::DefaultLazyInstanceTraits< | 232 friend struct base::DefaultLazyInstanceTraits< |
| 207 SafeBrowsingBlockingPageFactoryImpl>; | 233 SafeBrowsingBlockingPageFactoryImpl>; |
| (...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1034 void SafeBrowsingBlockingPageV1::PopulatePhishingStringDictionary( | 1060 void SafeBrowsingBlockingPageV1::PopulatePhishingStringDictionary( |
| 1035 base::DictionaryValue* strings) { | 1061 base::DictionaryValue* strings) { |
| 1036 NOTREACHED(); | 1062 NOTREACHED(); |
| 1037 } | 1063 } |
| 1038 | 1064 |
| 1039 SafeBrowsingBlockingPageV2::SafeBrowsingBlockingPageV2( | 1065 SafeBrowsingBlockingPageV2::SafeBrowsingBlockingPageV2( |
| 1040 SafeBrowsingUIManager* ui_manager, | 1066 SafeBrowsingUIManager* ui_manager, |
| 1041 WebContents* web_contents, | 1067 WebContents* web_contents, |
| 1042 const UnsafeResourceList& unsafe_resources) | 1068 const UnsafeResourceList& unsafe_resources) |
| 1043 : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources) { | 1069 : 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 } | 1070 } |
| 1057 | 1071 |
| 1058 std::string SafeBrowsingBlockingPageV2::GetHTMLContents() { | 1072 std::string SafeBrowsingBlockingPageV2::GetHTMLContents() { |
| 1059 // Load the HTML page and create the template components. | 1073 // Load the HTML page and create the template components. |
| 1060 base::DictionaryValue strings; | 1074 base::DictionaryValue strings; |
| 1061 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 1075 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 1062 std::string html; | 1076 std::string html; |
| 1063 | 1077 |
| 1064 if (unsafe_resources_.empty()) { | 1078 if (unsafe_resources_.empty()) { |
| 1065 NOTREACHED(); | 1079 NOTREACHED(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1103 IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)); | 1117 IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)); |
| 1104 strings->SetBoolean("isMainFrame", is_main_frame_load_blocked_); | 1118 strings->SetBoolean("isMainFrame", is_main_frame_load_blocked_); |
| 1105 strings->SetBoolean("isPhishing", interstitial_type_ == TYPE_PHISHING); | 1119 strings->SetBoolean("isPhishing", interstitial_type_ == TYPE_PHISHING); |
| 1106 | 1120 |
| 1107 strings->SetString("back_button", | 1121 strings->SetString("back_button", |
| 1108 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON)); | 1122 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON)); |
| 1109 strings->SetString("seeMore", l10n_util::GetStringUTF16( | 1123 strings->SetString("seeMore", l10n_util::GetStringUTF16( |
| 1110 IDS_SAFE_BROWSING_MALWARE_V2_SEE_MORE)); | 1124 IDS_SAFE_BROWSING_MALWARE_V2_SEE_MORE)); |
| 1111 strings->SetString("proceed", | 1125 strings->SetString("proceed", |
| 1112 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_V2_PROCEED_LINK)); | 1126 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); | 1127 webui::SetFontAndTextDirection(strings); |
| 1144 } | 1128 } |
| 1145 | 1129 |
| 1146 void SafeBrowsingBlockingPageV2::PopulateMultipleThreatStringDictionary( | 1130 void SafeBrowsingBlockingPageV2::PopulateMultipleThreatStringDictionary( |
| 1147 base::DictionaryValue* strings) { | 1131 base::DictionaryValue* strings) { |
| 1148 NOTREACHED(); | 1132 NOTREACHED(); |
| 1149 } | 1133 } |
| 1150 | 1134 |
| 1151 void SafeBrowsingBlockingPageV2::PopulateMalwareStringDictionary( | 1135 void SafeBrowsingBlockingPageV2::PopulateMalwareStringDictionary( |
| 1152 base::DictionaryValue* strings) { | 1136 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)); | 1230 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_V2_REPORT_ERROR)); |
| 1247 strings->SetBoolean(kDisplayCheckBox, false); | 1231 strings->SetBoolean(kDisplayCheckBox, false); |
| 1248 strings->SetString("learnMore", | 1232 strings->SetString("learnMore", |
| 1249 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_V2_LEARN_MORE)); | 1233 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_V2_LEARN_MORE)); |
| 1250 } | 1234 } |
| 1251 | 1235 |
| 1252 SafeBrowsingBlockingPageV3::SafeBrowsingBlockingPageV3( | 1236 SafeBrowsingBlockingPageV3::SafeBrowsingBlockingPageV3( |
| 1253 SafeBrowsingUIManager* ui_manager, | 1237 SafeBrowsingUIManager* ui_manager, |
| 1254 WebContents* web_contents, | 1238 WebContents* web_contents, |
| 1255 const UnsafeResourceList& unsafe_resources) | 1239 const UnsafeResourceList& unsafe_resources) |
| 1256 : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources) { | 1240 : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources), |
| 1241 trial_condition_(GetTrialCondition()) { |
| 1257 } | 1242 } |
| 1258 | 1243 |
| 1259 std::string SafeBrowsingBlockingPageV3::GetHTMLContents() { | 1244 std::string SafeBrowsingBlockingPageV3::GetHTMLContents() { |
| 1260 if (unsafe_resources_.empty() || unsafe_resources_.size() > 1) { | 1245 if (unsafe_resources_.empty() || unsafe_resources_.size() > 1) { |
| 1261 // TODO(felt): Implement new multi-threat interstitial. crbug.com/160336 | 1246 // TODO(felt): Implement new multi-threat interstitial. crbug.com/160336 |
| 1262 NOTIMPLEMENTED(); | 1247 NOTIMPLEMENTED(); |
| 1263 return std::string(); | 1248 return std::string(); |
| 1264 } | 1249 } |
| 1265 | 1250 |
| 1266 // Fill in the shared values. | 1251 // Fill in the shared values. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1303 | 1288 |
| 1304 base::StringPiece html( | 1289 base::StringPiece html( |
| 1305 ResourceBundle::GetSharedInstance().GetRawDataResource( | 1290 ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 1306 IRD_SSL_INTERSTITIAL_V2_HTML)); | 1291 IRD_SSL_INTERSTITIAL_V2_HTML)); |
| 1307 webui::UseVersion2 version; | 1292 webui::UseVersion2 version; |
| 1308 return webui::GetI18nTemplateHtml(html, &load_time_data); | 1293 return webui::GetI18nTemplateHtml(html, &load_time_data); |
| 1309 } | 1294 } |
| 1310 | 1295 |
| 1311 void SafeBrowsingBlockingPageV3::PopulateMalwareLoadTimeData( | 1296 void SafeBrowsingBlockingPageV3::PopulateMalwareLoadTimeData( |
| 1312 base::DictionaryValue* load_time_data) { | 1297 base::DictionaryValue* load_time_data) { |
| 1298 load_time_data->SetString("trialCondition", trial_condition_); |
| 1313 load_time_data->SetBoolean("phishing", false); | 1299 load_time_data->SetBoolean("phishing", false); |
| 1314 load_time_data->SetString( | 1300 load_time_data->SetString( |
| 1315 "heading", l10n_util::GetStringUTF16(IDS_MALWARE_V3_HEADING)); | 1301 "heading", l10n_util::GetStringUTF16(IDS_MALWARE_V3_HEADING)); |
| 1316 load_time_data->SetString( | 1302 load_time_data->SetString( |
| 1317 "primaryParagraph", | 1303 "primaryParagraph", |
| 1318 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PRIMARY_PARAGRAPH)); | 1304 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PRIMARY_PARAGRAPH)); |
| 1319 load_time_data->SetString( | 1305 if (trial_condition_ == kCondV3History) { |
| 1320 "explanationParagraph", | 1306 load_time_data->SetString( |
| 1321 is_main_frame_load_blocked_ ? | 1307 "explanationParagraph", |
| 1322 l10n_util::GetStringFUTF16( | 1308 is_main_frame_load_blocked_ ? |
| 1323 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH, | 1309 l10n_util::GetStringFUTF16( |
| 1324 base::UTF8ToUTF16(url_.host())) : | 1310 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_HISTORY, |
| 1325 l10n_util::GetStringFUTF16( | 1311 base::UTF8ToUTF16(url_.host())) : |
| 1326 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE, | 1312 l10n_util::GetStringFUTF16( |
| 1327 base::UTF8ToUTF16(web_contents_->GetURL().host()), | 1313 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE_HISTORY, |
| 1328 base::UTF8ToUTF16(url_.host()))); | 1314 base::UTF8ToUTF16(web_contents_->GetURL().host()), |
| 1329 load_time_data->SetString( | 1315 base::UTF8ToUTF16(url_.host()))); |
| 1330 "finalParagraph", | 1316 } else if (trial_condition_ == kCondV3Advice) { |
| 1331 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH)); | 1317 load_time_data->SetString( |
| 1318 "explanationParagraph", |
| 1319 is_main_frame_load_blocked_ ? |
| 1320 l10n_util::GetStringFUTF16( |
| 1321 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_ADVICE, |
| 1322 base::UTF8ToUTF16(url_.host())) : |
| 1323 l10n_util::GetStringFUTF16( |
| 1324 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE_ADVICE, |
| 1325 base::UTF8ToUTF16(web_contents_->GetURL().host()), |
| 1326 base::UTF8ToUTF16(url_.host()))); |
| 1327 load_time_data->SetString( |
| 1328 "adviceHeading", |
| 1329 l10n_util::GetStringUTF16(IDS_MALWARE_V3_ADVICE_HEADING)); |
| 1330 } else { |
| 1331 load_time_data->SetString( |
| 1332 "explanationParagraph", |
| 1333 is_main_frame_load_blocked_ ? |
| 1334 l10n_util::GetStringFUTF16( |
| 1335 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH, |
| 1336 base::UTF8ToUTF16(url_.host())) : |
| 1337 l10n_util::GetStringFUTF16( |
| 1338 IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE, |
| 1339 base::UTF8ToUTF16(web_contents_->GetURL().host()), |
| 1340 base::UTF8ToUTF16(url_.host()))); |
| 1341 } |
| 1342 if (trial_condition_ == kCondV3Social) { |
| 1343 load_time_data->SetString( |
| 1344 "finalParagraph", |
| 1345 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH_SOCIAL)); |
| 1346 } else if (trial_condition_ == kCondV3NotRecommend) { |
| 1347 load_time_data->SetString( |
| 1348 "finalParagraph", |
| 1349 l10n_util::GetStringUTF16( |
| 1350 IDS_MALWARE_V3_PROCEED_PARAGRAPH_NOT_RECOMMEND)); |
| 1351 } else { |
| 1352 load_time_data->SetString( |
| 1353 "finalParagraph", |
| 1354 l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH)); |
| 1355 } |
| 1332 | 1356 |
| 1333 load_time_data->SetBoolean(kDisplayCheckBox, CanShowMalwareDetailsOption()); | 1357 load_time_data->SetBoolean(kDisplayCheckBox, CanShowMalwareDetailsOption()); |
| 1334 if (CanShowMalwareDetailsOption()) { | 1358 if (CanShowMalwareDetailsOption()) { |
| 1335 std::string privacy_link = base::StringPrintf( | 1359 std::string privacy_link = base::StringPrintf( |
| 1336 kPrivacyLinkHtml, | 1360 kPrivacyLinkHtml, |
| 1337 l10n_util::GetStringUTF8( | 1361 l10n_util::GetStringUTF8( |
| 1338 IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE_V2).c_str()); | 1362 IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE_V2).c_str()); |
| 1339 load_time_data->SetString( | 1363 load_time_data->SetString( |
| 1340 "optInLink", | 1364 "optInLink", |
| 1341 l10n_util::GetStringFUTF16(IDS_SAFE_BROWSING_MALWARE_V2_REPORTING_AGREE, | 1365 l10n_util::GetStringFUTF16(IDS_SAFE_BROWSING_MALWARE_V2_REPORTING_AGREE, |
| 1342 base::UTF8ToUTF16(privacy_link))); | 1366 base::UTF8ToUTF16(privacy_link))); |
| 1343 Profile* profile = Profile::FromBrowserContext( | 1367 Profile* profile = Profile::FromBrowserContext( |
| 1344 web_contents_->GetBrowserContext()); | 1368 web_contents_->GetBrowserContext()); |
| 1345 if (profile->GetPrefs()->HasPrefPath( | 1369 if (profile->GetPrefs()->HasPrefPath( |
| 1346 prefs::kSafeBrowsingExtendedReportingEnabled)) { | 1370 prefs::kSafeBrowsingExtendedReportingEnabled)) { |
| 1347 reporting_checkbox_checked_ = | 1371 reporting_checkbox_checked_ = |
| 1348 IsPrefEnabled(prefs::kSafeBrowsingExtendedReportingEnabled); | 1372 IsPrefEnabled(prefs::kSafeBrowsingExtendedReportingEnabled); |
| 1349 } else if (IsPrefEnabled(prefs::kSafeBrowsingReportingEnabled) || | 1373 } else if (IsPrefEnabled(prefs::kSafeBrowsingReportingEnabled) || |
| 1350 IsPrefEnabled(prefs::kSafeBrowsingDownloadFeedbackEnabled)) { | 1374 IsPrefEnabled(prefs::kSafeBrowsingDownloadFeedbackEnabled)) { |
| 1351 reporting_checkbox_checked_ = true; | 1375 reporting_checkbox_checked_ = true; |
| 1352 } | 1376 } |
| 1353 load_time_data->SetBoolean( | 1377 load_time_data->SetBoolean( |
| 1354 kBoxChecked, reporting_checkbox_checked_); | 1378 kBoxChecked, reporting_checkbox_checked_); |
| 1355 } | 1379 } |
| 1356 } | 1380 } |
| 1357 | 1381 |
| 1358 void SafeBrowsingBlockingPageV3::PopulatePhishingLoadTimeData( | 1382 void SafeBrowsingBlockingPageV3::PopulatePhishingLoadTimeData( |
| 1359 base::DictionaryValue* load_time_data) { | 1383 base::DictionaryValue* load_time_data) { |
| 1384 load_time_data->SetString("trialCondition", std::string()); |
| 1360 load_time_data->SetBoolean("phishing", true); | 1385 load_time_data->SetBoolean("phishing", true); |
| 1361 load_time_data->SetString( | 1386 load_time_data->SetString( |
| 1362 "heading", | 1387 "heading", |
| 1363 l10n_util::GetStringUTF16(IDS_PHISHING_V3_HEADING)); | 1388 l10n_util::GetStringUTF16(IDS_PHISHING_V3_HEADING)); |
| 1364 load_time_data->SetString( | 1389 load_time_data->SetString( |
| 1365 "primaryParagraph", | 1390 "primaryParagraph", |
| 1366 l10n_util::GetStringFUTF16( | 1391 l10n_util::GetStringFUTF16( |
| 1367 IDS_PHISHING_V3_PRIMARY_PARAGRAPH, | 1392 IDS_PHISHING_V3_PRIMARY_PARAGRAPH, |
| 1368 base::UTF8ToUTF16(url_.host()))); | 1393 base::UTF8ToUTF16(url_.host()))); |
| 1369 load_time_data->SetString( | 1394 load_time_data->SetString( |
| 1370 "explanationParagraph", | 1395 "explanationParagraph", |
| 1371 l10n_util::GetStringFUTF16(IDS_PHISHING_V3_EXPLANATION_PARAGRAPH, | 1396 l10n_util::GetStringFUTF16(IDS_PHISHING_V3_EXPLANATION_PARAGRAPH, |
| 1372 base::UTF8ToUTF16(url_.host()))); | 1397 base::UTF8ToUTF16(url_.host()))); |
| 1373 load_time_data->SetString( | 1398 load_time_data->SetString( |
| 1374 "finalParagraph", | 1399 "finalParagraph", |
| 1375 l10n_util::GetStringUTF16(IDS_PHISHING_V3_PROCEED_PARAGRAPH)); | 1400 l10n_util::GetStringUTF16(IDS_PHISHING_V3_PROCEED_PARAGRAPH)); |
| 1376 } | 1401 } |
| OLD | NEW |