| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 return jstemplate_builder::GetTemplateHtml(html, &strings, "template_root"); | 96 return jstemplate_builder::GetTemplateHtml(html, &strings, "template_root"); |
| 97 } | 97 } |
| 98 | 98 |
| 99 void SafeBrowsingBlockingPage::PopulateStringDictionary( | 99 void SafeBrowsingBlockingPage::PopulateStringDictionary( |
| 100 DictionaryValue* strings, | 100 DictionaryValue* strings, |
| 101 const std::wstring& title, | 101 const std::wstring& title, |
| 102 const std::wstring& headline, | 102 const std::wstring& headline, |
| 103 const std::wstring& description1, | 103 const std::wstring& description1, |
| 104 const std::wstring& description2, | 104 const std::wstring& description2, |
| 105 const std::wstring& description3) { | 105 const std::wstring& description3) { |
| 106 strings->SetString(L"title", title); | 106 strings->SetString(ASCIIToUTF16("title"), WideToUTF16Hack(title)); |
| 107 strings->SetString(L"headLine", headline); | 107 strings->SetString(ASCIIToUTF16("headLine"), WideToUTF16Hack(headline)); |
| 108 strings->SetString(L"description1", description1); | 108 strings->SetString(ASCIIToUTF16("description1"), |
| 109 strings->SetString(L"description2", description2); | 109 WideToUTF16Hack(description1)); |
| 110 strings->SetString(L"description3", description3); | 110 strings->SetString(ASCIIToUTF16("description2"), |
| 111 WideToUTF16Hack(description2)); |
| 112 strings->SetString(ASCIIToUTF16("description3"), |
| 113 WideToUTF16Hack(description3)); |
| 111 } | 114 } |
| 112 | 115 |
| 113 void SafeBrowsingBlockingPage::PopulateMultipleThreatStringDictionary( | 116 void SafeBrowsingBlockingPage::PopulateMultipleThreatStringDictionary( |
| 114 DictionaryValue* strings) { | 117 DictionaryValue* strings) { |
| 115 bool malware = false; | 118 bool malware = false; |
| 116 bool phishing = false; | 119 bool phishing = false; |
| 117 | 120 |
| 118 std::wstring phishing_label = | 121 string16 phishing_label = |
| 119 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_LABEL); | 122 WideToUTF16Hack(l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_LABEL)); |
| 120 std::wstring phishing_link = | 123 string16 phishing_link = |
| 121 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_REPORT_ERROR); | 124 WideToUTF16Hack( |
| 122 std::wstring malware_label = | 125 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_REPORT_ERROR)); |
| 123 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_LABEL); | 126 string16 malware_label = |
| 124 std::wstring malware_link = | 127 WideToUTF16Hack( |
| 125 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_DIAGNOSTIC_PAGE); | 128 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_LABEL)); |
| 129 string16 malware_link = |
| 130 WideToUTF16Hack( |
| 131 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_DIAGNOSTIC_PAGE)); |
| 126 | 132 |
| 127 ListValue* error_strings = new ListValue; | 133 ListValue* error_strings = new ListValue; |
| 128 for (UnsafeResourceList::const_iterator iter = unsafe_resources_.begin(); | 134 for (UnsafeResourceList::const_iterator iter = unsafe_resources_.begin(); |
| 129 iter != unsafe_resources_.end(); ++iter) { | 135 iter != unsafe_resources_.end(); ++iter) { |
| 130 const SafeBrowsingService::UnsafeResource& resource = *iter; | 136 const SafeBrowsingService::UnsafeResource& resource = *iter; |
| 131 DictionaryValue* current_error_strings = new DictionaryValue; | 137 DictionaryValue* current_error_strings = new DictionaryValue; |
| 132 if (resource.threat_type == SafeBrowsingService::URL_MALWARE) { | 138 if (resource.threat_type == SafeBrowsingService::URL_MALWARE) { |
| 133 malware = true; | 139 malware = true; |
| 134 current_error_strings->SetString(L"type", L"malware"); | 140 current_error_strings->SetString(ASCIIToUTF16("type"), |
| 135 current_error_strings->SetString(L"typeLabel", malware_label); | 141 ASCIIToUTF16("malware")); |
| 136 current_error_strings->SetString(L"errorLink", malware_link); | 142 current_error_strings->SetString(ASCIIToUTF16("typeLabel"), |
| 143 malware_label); |
| 144 current_error_strings->SetString(ASCIIToUTF16("errorLink"), malware_link); |
| 137 } else { | 145 } else { |
| 138 DCHECK(resource.threat_type == SafeBrowsingService::URL_PHISHING); | 146 DCHECK(resource.threat_type == SafeBrowsingService::URL_PHISHING); |
| 139 phishing = true; | 147 phishing = true; |
| 140 current_error_strings->SetString(L"type", L"phishing"); | 148 current_error_strings->SetString(ASCIIToUTF16("type"), |
| 141 current_error_strings->SetString(L"typeLabel", phishing_label); | 149 ASCIIToUTF16("phishing")); |
| 142 current_error_strings->SetString(L"errorLink", phishing_link); | 150 current_error_strings->SetString(ASCIIToUTF16("typeLabel"), |
| 151 phishing_label); |
| 152 current_error_strings->SetString(ASCIIToUTF16("errorLink"), |
| 153 phishing_link); |
| 143 } | 154 } |
| 144 current_error_strings->SetString(L"url", UTF8ToWide(resource.url.spec())); | 155 current_error_strings->SetString(ASCIIToUTF16("url"), |
| 156 UTF8ToUTF16(resource.url.spec())); |
| 145 error_strings->Append(current_error_strings); | 157 error_strings->Append(current_error_strings); |
| 146 } | 158 } |
| 147 strings->Set(L"errors", error_strings); | 159 strings->Set(ASCIIToUTF16("errors"), error_strings); |
| 148 DCHECK(phishing || malware); | 160 DCHECK(phishing || malware); |
| 149 | 161 |
| 150 if (malware && phishing) { | 162 if (malware && phishing) { |
| 151 PopulateStringDictionary( | 163 PopulateStringDictionary( |
| 152 strings, | 164 strings, |
| 153 // Use the malware headline, it is the scariest one. | 165 // Use the malware headline, it is the scariest one. |
| 154 l10n_util::GetString(IDS_SAFE_BROWSING_MULTI_THREAT_TITLE), | 166 l10n_util::GetString(IDS_SAFE_BROWSING_MULTI_THREAT_TITLE), |
| 155 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_HEADLINE), | 167 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_HEADLINE), |
| 156 l10n_util::GetStringF(IDS_SAFE_BROWSING_MULTI_THREAT_DESCRIPTION1, | 168 l10n_util::GetStringF(IDS_SAFE_BROWSING_MULTI_THREAT_DESCRIPTION1, |
| 157 UTF8ToWide(tab()->GetURL().host())), | 169 UTF8ToWide(tab()->GetURL().host())), |
| (...skipping 13 matching lines...) Expand all Loading... |
| 171 // Just phishing. | 183 // Just phishing. |
| 172 PopulateStringDictionary( | 184 PopulateStringDictionary( |
| 173 strings, | 185 strings, |
| 174 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_TITLE), | 186 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_TITLE), |
| 175 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_HEADLINE), | 187 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_HEADLINE), |
| 176 l10n_util::GetStringF(IDS_SAFE_BROWSING_MULTI_PHISHING_DESCRIPTION1, | 188 l10n_util::GetStringF(IDS_SAFE_BROWSING_MULTI_PHISHING_DESCRIPTION1, |
| 177 UTF8ToWide(tab()->GetURL().host())), | 189 UTF8ToWide(tab()->GetURL().host())), |
| 178 L"", L""); | 190 L"", L""); |
| 179 } | 191 } |
| 180 | 192 |
| 181 strings->SetString(L"confirm_text", | 193 strings->SetString(ASCIIToUTF16("confirm_text"), |
| 182 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION_AGREE)); | 194 WideToUTF16Hack(l10n_util::GetString( |
| 183 strings->SetString(L"continue_button", | 195 IDS_SAFE_BROWSING_MALWARE_DESCRIPTION_AGREE))); |
| 184 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_PROCEED_BUTTON)); | 196 strings->SetString(ASCIIToUTF16("continue_button"), |
| 185 strings->SetString(L"back_button", | 197 WideToUTF16Hack(l10n_util::GetString( |
| 186 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON)); | 198 IDS_SAFE_BROWSING_MALWARE_PROCEED_BUTTON))); |
| 187 strings->SetString(L"textdirection", | 199 strings->SetString(ASCIIToUTF16("back_button"), |
| 200 WideToUTF16Hack(l10n_util::GetString( |
| 201 IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON))); |
| 202 strings->SetString(ASCIIToUTF16("textdirection"), |
| 188 (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) ? | 203 (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) ? |
| 189 L"rtl" : L"ltr"); | 204 ASCIIToUTF16("rtl") : ASCIIToUTF16("ltr")); |
| 190 } | 205 } |
| 191 | 206 |
| 192 void SafeBrowsingBlockingPage::PopulateMalwareStringDictionary( | 207 void SafeBrowsingBlockingPage::PopulateMalwareStringDictionary( |
| 193 DictionaryValue* strings) { | 208 DictionaryValue* strings) { |
| 194 std::wstring link = StringPrintf(kSbDiagnosticHtml, | 209 std::wstring link = StringPrintf(kSbDiagnosticHtml, |
| 195 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_DIAGNOSTIC_PAGE).c_str()); | 210 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_DIAGNOSTIC_PAGE).c_str()); |
| 196 | 211 |
| 197 strings->SetString(L"badURL", UTF8ToWide(url().host())); | 212 strings->SetString(ASCIIToUTF16("badURL"), UTF8ToUTF16(url().host())); |
| 198 // Check to see if we're blocking the main page, or a sub-resource on the | 213 // Check to see if we're blocking the main page, or a sub-resource on the |
| 199 // main page. | 214 // main page. |
| 200 std::wstring description1, description2; | 215 std::wstring description1, description2; |
| 201 if (is_main_frame_) { | 216 if (is_main_frame_) { |
| 202 description1 = l10n_util::GetStringF(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION1, | 217 description1 = l10n_util::GetStringF(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION1, |
| 203 UTF8ToWide(url().host())); | 218 UTF8ToWide(url().host())); |
| 204 description2 = l10n_util::GetStringF(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION2, | 219 description2 = l10n_util::GetStringF(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION2, |
| 205 link, | 220 link, |
| 206 UTF8ToWide(url().host())); | 221 UTF8ToWide(url().host())); |
| 207 } else { | 222 } else { |
| 208 description1 = l10n_util::GetStringF(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION4, | 223 description1 = l10n_util::GetStringF(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION4, |
| 209 UTF8ToWide(tab()->GetURL().host()), | 224 UTF8ToWide(tab()->GetURL().host()), |
| 210 UTF8ToWide(url().host())); | 225 UTF8ToWide(url().host())); |
| 211 description2 = l10n_util::GetStringF(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION5, | 226 description2 = l10n_util::GetStringF(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION5, |
| 212 link, | 227 link, |
| 213 UTF8ToWide(url().host())); | 228 UTF8ToWide(url().host())); |
| 214 } | 229 } |
| 215 | 230 |
| 216 PopulateStringDictionary( | 231 PopulateStringDictionary( |
| 217 strings, | 232 strings, |
| 218 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_TITLE), | 233 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_TITLE), |
| 219 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_HEADLINE), | 234 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_HEADLINE), |
| 220 description1, description2, | 235 description1, description2, |
| 221 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION3)); | 236 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION3)); |
| 222 | 237 |
| 223 strings->SetString(L"confirm_text", | 238 strings->SetString(ASCIIToUTF16("confirm_text"), |
| 224 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_DESCRIPTION_AGREE)); | 239 WideToUTF16Hack(l10n_util::GetString( |
| 225 strings->SetString(L"continue_button", | 240 IDS_SAFE_BROWSING_MALWARE_DESCRIPTION_AGREE))); |
| 226 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_PROCEED_BUTTON)); | 241 strings->SetString(ASCIIToUTF16("continue_button"), |
| 227 strings->SetString(L"back_button", | 242 WideToUTF16Hack(l10n_util::GetString( |
| 228 l10n_util::GetString(IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON)); | 243 IDS_SAFE_BROWSING_MALWARE_PROCEED_BUTTON))); |
| 229 strings->SetString(L"textdirection", | 244 strings->SetString(ASCIIToUTF16("back_button"), |
| 245 WideToUTF16Hack(l10n_util::GetString( |
| 246 IDS_SAFE_BROWSING_MALWARE_BACK_BUTTON))); |
| 247 strings->SetString(ASCIIToUTF16("textdirection"), |
| 230 (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) ? | 248 (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) ? |
| 231 L"rtl" : L"ltr"); | 249 ASCIIToUTF16("rtl") : ASCIIToUTF16("ltr")); |
| 232 } | 250 } |
| 233 | 251 |
| 234 void SafeBrowsingBlockingPage::PopulatePhishingStringDictionary( | 252 void SafeBrowsingBlockingPage::PopulatePhishingStringDictionary( |
| 235 DictionaryValue* strings) { | 253 DictionaryValue* strings) { |
| 236 PopulateStringDictionary( | 254 PopulateStringDictionary( |
| 237 strings, | 255 strings, |
| 238 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_TITLE), | 256 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_TITLE), |
| 239 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_HEADLINE), | 257 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_HEADLINE), |
| 240 l10n_util::GetStringF(IDS_SAFE_BROWSING_PHISHING_DESCRIPTION1, | 258 l10n_util::GetStringF(IDS_SAFE_BROWSING_PHISHING_DESCRIPTION1, |
| 241 UTF8ToWide(url().host())), | 259 UTF8ToWide(url().host())), |
| 242 l10n_util::GetStringF(IDS_SAFE_BROWSING_PHISHING_DESCRIPTION2, | 260 l10n_util::GetStringF(IDS_SAFE_BROWSING_PHISHING_DESCRIPTION2, |
| 243 UTF8ToWide(url().host())), | 261 UTF8ToWide(url().host())), |
| 244 L""); | 262 L""); |
| 245 | 263 |
| 246 strings->SetString(L"continue_button", | 264 strings->SetString(ASCIIToUTF16("continue_button"), |
| 247 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_PROCEED_BUTTON)); | 265 WideToUTF16Hack(l10n_util::GetString( |
| 248 strings->SetString(L"back_button", | 266 IDS_SAFE_BROWSING_PHISHING_PROCEED_BUTTON))); |
| 249 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_BACK_BUTTON)); | 267 strings->SetString(ASCIIToUTF16("back_button"), |
| 250 strings->SetString(L"report_error", | 268 WideToUTF16Hack(l10n_util::GetString( |
| 251 l10n_util::GetString(IDS_SAFE_BROWSING_PHISHING_REPORT_ERROR)); | 269 IDS_SAFE_BROWSING_PHISHING_BACK_BUTTON))); |
| 252 strings->SetString(L"textdirection", | 270 strings->SetString(ASCIIToUTF16("report_error"), |
| 271 WideToUTF16Hack(l10n_util::GetString( |
| 272 IDS_SAFE_BROWSING_PHISHING_REPORT_ERROR))); |
| 273 strings->SetString(ASCIIToUTF16("textdirection"), |
| 253 (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) ? | 274 (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) ? |
| 254 L"rtl" : L"ltr"); | 275 ASCIIToUTF16("rtl") : ASCIIToUTF16("ltr")); |
| 255 } | 276 } |
| 256 | 277 |
| 257 void SafeBrowsingBlockingPage::CommandReceived(const std::string& cmd) { | 278 void SafeBrowsingBlockingPage::CommandReceived(const std::string& cmd) { |
| 258 std::string command(cmd); // Make a local copy so we can modify it. | 279 std::string command(cmd); // Make a local copy so we can modify it. |
| 259 // The Jasonified response has quotes, remove them. | 280 // The Jasonified response has quotes, remove them. |
| 260 if (command.length() > 1 && command[0] == '"') { | 281 if (command.length() > 1 && command[0] == '"') { |
| 261 command = command.substr(1, command.length() - 2); | 282 command = command.substr(1, command.length() - 2); |
| 262 } | 283 } |
| 263 | 284 |
| 264 if (command == kLearnMoreCommand) { | 285 if (command == kLearnMoreCommand) { |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 UnsafeResourceMap* unsafe_resource_map = GetUnsafeResourcesMap(); | 449 UnsafeResourceMap* unsafe_resource_map = GetUnsafeResourcesMap(); |
| 429 (*unsafe_resource_map)[web_contents].push_back(unsafe_resource); | 450 (*unsafe_resource_map)[web_contents].push_back(unsafe_resource); |
| 430 } | 451 } |
| 431 | 452 |
| 432 // static | 453 // static |
| 433 bool SafeBrowsingBlockingPage::IsMainPage( | 454 bool SafeBrowsingBlockingPage::IsMainPage( |
| 434 const UnsafeResourceList& unsafe_resources) { | 455 const UnsafeResourceList& unsafe_resources) { |
| 435 return unsafe_resources.size() == 1 && | 456 return unsafe_resources.size() == 1 && |
| 436 unsafe_resources[0].resource_type == ResourceType::MAIN_FRAME; | 457 unsafe_resources[0].resource_type == ResourceType::MAIN_FRAME; |
| 437 } | 458 } |
| 438 | |
| OLD | NEW |