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 |