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 |