Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Side by Side Diff: trunk/src/chrome/common/localized_error.cc

Issue 14369002: Revert 194514 - New network error page: Fix resubmit warning page (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #include "chrome/common/localized_error.h" 5 #include "chrome/common/localized_error.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/string16.h" 9 #include "base/string16.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 }, 287 },
288 {net::ERR_BLOCKED_BY_ADMINISTRATOR, 288 {net::ERR_BLOCKED_BY_ADMINISTRATOR,
289 IDS_ERRORPAGES_TITLE_BLOCKED, 289 IDS_ERRORPAGES_TITLE_BLOCKED,
290 IDS_ERRORPAGES_HEADING_BLOCKED_BY_ADMINISTRATOR, 290 IDS_ERRORPAGES_HEADING_BLOCKED_BY_ADMINISTRATOR,
291 IDS_ERRORPAGES_SUMMARY_BLOCKED_BY_ADMINISTRATOR, 291 IDS_ERRORPAGES_SUMMARY_BLOCKED_BY_ADMINISTRATOR,
292 IDS_ERRORPAGES_DETAILS_BLOCKED_BY_ADMINISTRATOR, 292 IDS_ERRORPAGES_DETAILS_BLOCKED_BY_ADMINISTRATOR,
293 SUGGEST_VIEW_POLICIES | SUGGEST_CONTACT_ADMINISTRATOR, 293 SUGGEST_VIEW_POLICIES | SUGGEST_CONTACT_ADMINISTRATOR,
294 }, 294 },
295 }; 295 };
296 296
297 // Special error page to be used in the case of navigating back to a page
298 // generated by a POST. LocalizedError::HasStrings expects this net error code
299 // to also appear in the array above.
300 const LocalizedErrorMap repost_error = {
301 net::ERR_CACHE_MISS,
302 IDS_ERRORPAGES_TITLE_NOT_AVAILABLE,
303 IDS_HTTP_POST_WARNING_TITLE,
304 IDS_ERRORPAGES_HTTP_POST_WARNING,
305 IDS_ERRORPAGES_DETAILS_CACHE_MISS,
306 SUGGEST_RELOAD,
307 };
308
309 const LocalizedErrorMap http_error_options[] = { 297 const LocalizedErrorMap http_error_options[] = {
310 {403, 298 {403,
311 IDS_ERRORPAGES_TITLE_ACCESS_DENIED, 299 IDS_ERRORPAGES_TITLE_ACCESS_DENIED,
312 IDS_ERRORPAGES_HEADING_ACCESS_DENIED, 300 IDS_ERRORPAGES_HEADING_ACCESS_DENIED,
313 IDS_ERRORPAGES_SUMMARY_FORBIDDEN, 301 IDS_ERRORPAGES_SUMMARY_FORBIDDEN,
314 IDS_ERRORPAGES_DETAILS_FORBIDDEN, 302 IDS_ERRORPAGES_DETAILS_FORBIDDEN,
315 SUGGEST_NONE, 303 SUGGEST_NONE,
316 }, 304 },
317 {410, 305 {410,
318 IDS_ERRORPAGES_TITLE_NOT_FOUND, 306 IDS_ERRORPAGES_TITLE_NOT_FOUND,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 size_t num_maps, 358 size_t num_maps,
371 int error_code) { 359 int error_code) {
372 for (size_t i = 0; i < num_maps; ++i) { 360 for (size_t i = 0; i < num_maps; ++i) {
373 if (maps[i].error_code == error_code) 361 if (maps[i].error_code == error_code)
374 return &maps[i]; 362 return &maps[i];
375 } 363 }
376 return NULL; 364 return NULL;
377 } 365 }
378 366
379 const LocalizedErrorMap* LookupErrorMap(const std::string& error_domain, 367 const LocalizedErrorMap* LookupErrorMap(const std::string& error_domain,
380 int error_code, bool is_post) { 368 int error_code) {
381 if (error_domain == net::kErrorDomain) { 369 if (error_domain == net::kErrorDomain) {
382 // Display a different page in the special case of navigating through the
383 // history to an uncached page created by a POST.
384 if (is_post && error_code == net::ERR_CACHE_MISS)
385 return &repost_error;
386 return FindErrorMapInArray(net_error_options, 370 return FindErrorMapInArray(net_error_options,
387 arraysize(net_error_options), 371 arraysize(net_error_options),
388 error_code); 372 error_code);
389 } else if (error_domain == LocalizedError::kHttpErrorDomain) { 373 } else if (error_domain == LocalizedError::kHttpErrorDomain) {
390 return FindErrorMapInArray(http_error_options, 374 return FindErrorMapInArray(http_error_options,
391 arraysize(http_error_options), 375 arraysize(http_error_options),
392 error_code); 376 error_code);
393 } else { 377 } else {
394 NOTREACHED(); 378 NOTREACHED();
395 return NULL; 379 return NULL;
(...skipping 19 matching lines...) Expand all
415 standard_menu_items_text->SetString("advancedTitle", 399 standard_menu_items_text->SetString("advancedTitle",
416 l10n_util::GetStringUTF16(IDS_SETTINGS_SHOW_ADVANCED_SETTINGS)); 400 l10n_util::GetStringUTF16(IDS_SETTINGS_SHOW_ADVANCED_SETTINGS));
417 return standard_menu_items_text; 401 return standard_menu_items_text;
418 } 402 }
419 403
420 } // namespace 404 } // namespace
421 405
422 const char LocalizedError::kHttpErrorDomain[] = "http"; 406 const char LocalizedError::kHttpErrorDomain[] = "http";
423 407
424 void LocalizedError::GetStrings(const WebKit::WebURLError& error, 408 void LocalizedError::GetStrings(const WebKit::WebURLError& error,
425 bool is_post, 409 DictionaryValue* error_strings,
426 const std::string& locale, 410 const std::string& locale) {
427 DictionaryValue* error_strings) {
428 bool rtl = LocaleIsRTL(); 411 bool rtl = LocaleIsRTL();
429 error_strings->SetString("textdirection", rtl ? "rtl" : "ltr"); 412 error_strings->SetString("textdirection", rtl ? "rtl" : "ltr");
430 413
431 // Grab the strings and settings that depend on the error type. Init 414 // Grab the strings and settings that depend on the error type. Init
432 // options with default values. 415 // options with default values.
433 LocalizedErrorMap options = { 416 LocalizedErrorMap options = {
434 0, 417 0,
435 IDS_ERRORPAGES_TITLE_NOT_AVAILABLE, 418 IDS_ERRORPAGES_TITLE_NOT_AVAILABLE,
436 IDS_ERRORPAGES_HEADING_NOT_AVAILABLE, 419 IDS_ERRORPAGES_HEADING_NOT_AVAILABLE,
437 IDS_ERRORPAGES_SUMMARY_NOT_AVAILABLE, 420 IDS_ERRORPAGES_SUMMARY_NOT_AVAILABLE,
438 kErrorPagesNoDetails, 421 kErrorPagesNoDetails,
439 SUGGEST_NONE, 422 SUGGEST_NONE,
440 }; 423 };
441 424
442 const std::string error_domain = error.domain.utf8(); 425 const std::string error_domain = error.domain.utf8();
443 int error_code = error.reason; 426 int error_code = error.reason;
444 const LocalizedErrorMap* error_map = LookupErrorMap(error_domain, error_code, 427 const LocalizedErrorMap* error_map =
445 is_post); 428 LookupErrorMap(error_domain, error_code);
446 if (error_map) 429 if (error_map)
447 options = *error_map; 430 options = *error_map;
448 431
449 const GURL failed_url = error.unreachableURL; 432 const GURL failed_url = error.unreachableURL;
450 433
451 // If we got "access denied" but the url was a file URL, then we say it was a 434 // If we got "access denied" but the url was a file URL, then we say it was a
452 // file instead of just using the "not available" default message. Just adding 435 // file instead of just using the "not available" default message. Just adding
453 // ERR_ACCESS_DENIED to the map isn't sufficient, since that message may be 436 // ERR_ACCESS_DENIED to the map isn't sufficient, since that message may be
454 // generated by some OSs when the operation doesn't involve a file URL. 437 // generated by some OSs when the operation doesn't involve a file URL.
455 if (error_domain == net::kErrorDomain && 438 if (error_domain == net::kErrorDomain &&
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 // dependent portion of the summary section. 515 // dependent portion of the summary section.
533 summary->SetString("msg", 516 summary->SetString("msg",
534 l10n_util::GetStringFUTF16( 517 l10n_util::GetStringFUTF16(
535 IDS_ERRORPAGES_SUMMARY_INTERNET_DISCONNECTED_INSTRUCTIONS_TEMPLATE, 518 IDS_ERRORPAGES_SUMMARY_INTERNET_DISCONNECTED_INSTRUCTIONS_TEMPLATE,
536 l10n_util::GetStringUTF16(options.summary_resource_id), 519 l10n_util::GetStringUTF16(options.summary_resource_id),
537 l10n_util::GetStringUTF16(platform_string_id))); 520 l10n_util::GetStringUTF16(platform_string_id)));
538 } 521 }
539 #endif // defined(OS_MACOSX) || defined(OS_WIN) 522 #endif // defined(OS_MACOSX) || defined(OS_WIN)
540 523
541 if (options.suggestions & SUGGEST_RELOAD) { 524 if (options.suggestions & SUGGEST_RELOAD) {
542 if (!is_post) { 525 DictionaryValue* reload_button = new DictionaryValue;
543 DictionaryValue* reload_button = new DictionaryValue; 526 reload_button->SetString("msg",
544 reload_button->SetString("msg", 527 l10n_util::GetStringUTF16(IDS_ERRORPAGES_BUTTON_RELOAD));
545 l10n_util::GetStringUTF16(IDS_ERRORPAGES_BUTTON_RELOAD)); 528 reload_button->SetString("reloadUrl", failed_url_string);
546 reload_button->SetString("reloadUrl", failed_url_string); 529 error_strings->Set("reload", reload_button);
547 error_strings->Set("reload", reload_button);
548 } else {
549 // If the page was created by a post, it can't be reloaded in the same
550 // way, so just add a suggestion instead.
551 // TODO(mmenke): Make the reload button bring up the repost confirmation
552 // dialog for pages resulting from posts.
553 DictionaryValue* suggest_reload_repost = new DictionaryValue;
554 suggest_reload_repost->SetString("header",
555 l10n_util::GetStringUTF16(
556 IDS_ERRORPAGES_SUGGESTION_RELOAD_REPOST_HEADER));
557 suggest_reload_repost->SetString("body",
558 l10n_util::GetStringUTF16(
559 IDS_ERRORPAGES_SUGGESTION_RELOAD_REPOST_BODY));
560 suggestions->Append(suggest_reload_repost);
561 }
562 } 530 }
563 531
564 if (options.suggestions & SUGGEST_CHECK_CONNECTION) { 532 if (options.suggestions & SUGGEST_CHECK_CONNECTION) {
565 DictionaryValue* suggest_check_connection = new DictionaryValue; 533 DictionaryValue* suggest_check_connection = new DictionaryValue;
566 suggest_check_connection->SetString("header", 534 suggest_check_connection->SetString("header",
567 l10n_util::GetStringUTF16( 535 l10n_util::GetStringUTF16(
568 IDS_ERRORPAGES_SUGGESTION_CHECK_CONNECTION_HEADER)); 536 IDS_ERRORPAGES_SUGGESTION_CHECK_CONNECTION_HEADER));
569 suggest_check_connection->SetString("body", 537 suggest_check_connection->SetString("body",
570 l10n_util::GetStringUTF16( 538 l10n_util::GetStringUTF16(
571 IDS_ERRORPAGES_SUGGESTION_CHECK_CONNECTION_BODY)); 539 IDS_ERRORPAGES_SUGGESTION_CHECK_CONNECTION_BODY));
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 suggest_learn_more->SetString("body", 646 suggest_learn_more->SetString("body",
679 l10n_util::GetStringUTF16(IDS_ERRORPAGES_SUGGESTION_LEARNMORE_BODY)); 647 l10n_util::GetStringUTF16(IDS_ERRORPAGES_SUGGESTION_LEARNMORE_BODY));
680 suggest_learn_more->SetString("learnMoreUrl", learn_more_url.spec()); 648 suggest_learn_more->SetString("learnMoreUrl", learn_more_url.spec());
681 suggestions->Append(suggest_learn_more); 649 suggestions->Append(suggest_learn_more);
682 } 650 }
683 } 651 }
684 652
685 error_strings->Set("suggestions", suggestions); 653 error_strings->Set("suggestions", suggestions);
686 } 654 }
687 655
688 string16 LocalizedError::GetErrorDetails(const WebKit::WebURLError& error, 656 string16 LocalizedError::GetErrorDetails(const WebKit::WebURLError& error) {
689 bool is_post) {
690 const LocalizedErrorMap* error_map = 657 const LocalizedErrorMap* error_map =
691 LookupErrorMap(error.domain.utf8(), error.reason, is_post); 658 LookupErrorMap(error.domain.utf8(), error.reason);
692 if (error_map) 659 if (error_map)
693 return l10n_util::GetStringUTF16(error_map->details_resource_id); 660 return l10n_util::GetStringUTF16(error_map->details_resource_id);
694 else 661 else
695 return l10n_util::GetStringUTF16(IDS_ERRORPAGES_DETAILS_UNKNOWN); 662 return l10n_util::GetStringUTF16(IDS_ERRORPAGES_DETAILS_UNKNOWN);
696 } 663 }
697 664
698 bool LocalizedError::HasStrings(const std::string& error_domain, 665 bool LocalizedError::HasStrings(const std::string& error_domain,
699 int error_code) { 666 int error_code) {
700 // Whether or not the there are strings for an error does not depend on 667 return LookupErrorMap(error_domain, error_code) != NULL;
701 // whether or not the page was be generated by a POST, so just claim it was 668 }
702 // not. 669
703 return LookupErrorMap(error_domain, error_code, /*is_post=*/false) != NULL; 670 void LocalizedError::GetFormRepostStrings(const GURL& display_url,
671 DictionaryValue* error_strings) {
672 bool rtl = LocaleIsRTL();
673 error_strings->SetString("textdirection", rtl ? "rtl" : "ltr");
674
675 string16 failed_url(ASCIIToUTF16(display_url.spec()));
676 // URLs are always LTR.
677 if (rtl)
678 base::i18n::WrapStringWithLTRFormatting(&failed_url);
679 error_strings->SetString(
680 "title", l10n_util::GetStringFUTF16(IDS_ERRORPAGES_TITLE_NOT_AVAILABLE,
681 failed_url));
682 error_strings->SetString(
683 "heading", l10n_util::GetStringUTF16(IDS_HTTP_POST_WARNING_TITLE));
684 DictionaryValue* summary = new DictionaryValue;
685 summary->SetString(
686 "msg", l10n_util::GetStringUTF16(IDS_ERRORPAGES_HTTP_POST_WARNING));
687 error_strings->Set("summary", summary);
704 } 688 }
705 689
706 void LocalizedError::GetAppErrorStrings( 690 void LocalizedError::GetAppErrorStrings(
707 const WebURLError& error, 691 const WebURLError& error,
708 const GURL& display_url, 692 const GURL& display_url,
709 const extensions::Extension* app, 693 const extensions::Extension* app,
710 DictionaryValue* error_strings) { 694 DictionaryValue* error_strings) {
711 DCHECK(app); 695 DCHECK(app);
712 696
713 bool rtl = LocaleIsRTL(); 697 bool rtl = LocaleIsRTL();
(...skipping 22 matching lines...) Expand all
736 #if defined(OS_CHROMEOS) 720 #if defined(OS_CHROMEOS)
737 GURL learn_more_url(kAppWarningLearnMoreUrl); 721 GURL learn_more_url(kAppWarningLearnMoreUrl);
738 DictionaryValue* suggest_learn_more = new DictionaryValue(); 722 DictionaryValue* suggest_learn_more = new DictionaryValue();
739 suggest_learn_more->SetString("msg", 723 suggest_learn_more->SetString("msg",
740 l10n_util::GetStringUTF16( 724 l10n_util::GetStringUTF16(
741 IDS_ERRORPAGES_SUGGESTION_LEARNMORE_BODY)); 725 IDS_ERRORPAGES_SUGGESTION_LEARNMORE_BODY));
742 suggest_learn_more->SetString("learnMoreUrl", learn_more_url.spec()); 726 suggest_learn_more->SetString("learnMoreUrl", learn_more_url.spec());
743 error_strings->Set("suggestionsLearnMore", suggest_learn_more); 727 error_strings->Set("suggestionsLearnMore", suggest_learn_more);
744 #endif // defined(OS_CHROMEOS) 728 #endif // defined(OS_CHROMEOS)
745 } 729 }
OLDNEW
« no previous file with comments | « trunk/src/chrome/common/localized_error.h ('k') | trunk/src/chrome/renderer/chrome_content_renderer_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698