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

Side by Side Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 8142032: Add error description to the DidFailProvisionalLoad callback. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: update commit message with BUG and TEST fields Created 9 years, 2 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/renderer/chrome_content_renderer_client.h" 5 #include "chrome/renderer/chrome_content_renderer_client.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 // Use an internal error page, if we have one for the status code. 525 // Use an internal error page, if we have one for the status code.
526 if (!LocalizedError::HasStrings(LocalizedError::kHttpErrorDomain, 526 if (!LocalizedError::HasStrings(LocalizedError::kHttpErrorDomain,
527 http_status_code)) { 527 http_status_code)) {
528 return false; 528 return false;
529 } 529 }
530 530
531 *error_domain = LocalizedError::kHttpErrorDomain; 531 *error_domain = LocalizedError::kHttpErrorDomain;
532 return true; 532 return true;
533 } 533 }
534 534
535 std::string ChromeContentRendererClient::GetNavigationErrorHtml( 535 void ChromeContentRendererClient::GetNavigationErrorStrings(
536 const WebURLRequest& failed_request, 536 const WebKit::WebURLRequest& failed_request,
537 const WebURLError& error) { 537 const WebKit::WebURLError& error,
538 GURL failed_url = error.unreachableURL; 538 std::string* error_html,
539 std::string html; 539 string16* error_description) {
540 const GURL failed_url = error.unreachableURL;
540 const Extension* extension = NULL; 541 const Extension* extension = NULL;
542 const bool is_repost =
543 error.reason == net::ERR_CACHE_MISS &&
544 error.domain == WebString::fromUTF8(net::kErrorDomain) &&
545 EqualsASCII(failed_request.httpMethod(), "POST");
541 546
542 // Use a local error page.
543 int resource_id;
544 DictionaryValue error_strings;
545 if (failed_url.is_valid() && !failed_url.SchemeIs(chrome::kExtensionScheme)) 547 if (failed_url.is_valid() && !failed_url.SchemeIs(chrome::kExtensionScheme))
546 extension = extension_dispatcher_->extensions()->GetByURL(failed_url); 548 extension = extension_dispatcher_->extensions()->GetByURL(failed_url);
547 if (extension) {
548 LocalizedError::GetAppErrorStrings(error, failed_url, extension,
549 &error_strings);
550 549
551 // TODO(erikkay): Should we use a different template for different 550 if (error_html) {
552 // error messages? 551 // Use a local error page.
553 resource_id = IDR_ERROR_APP_HTML; 552 int resource_id;
554 } else { 553 DictionaryValue error_strings;
555 if (error.domain == WebString::fromUTF8(net::kErrorDomain) && 554 if (extension) {
556 error.reason == net::ERR_CACHE_MISS && 555 LocalizedError::GetAppErrorStrings(error, failed_url, extension,
557 EqualsASCII(failed_request.httpMethod(), "POST")) { 556 &error_strings);
558 LocalizedError::GetFormRepostStrings(failed_url, &error_strings); 557
558 // TODO(erikkay): Should we use a different template for different
559 // error messages?
560 resource_id = IDR_ERROR_APP_HTML;
559 } else { 561 } else {
560 LocalizedError::GetStrings(error, &error_strings); 562 if (is_repost) {
563 LocalizedError::GetFormRepostStrings(failed_url, &error_strings);
564 } else {
565 LocalizedError::GetStrings(error, &error_strings);
566 }
567 resource_id = IDR_NET_ERROR_HTML;
561 } 568 }
562 resource_id = IDR_NET_ERROR_HTML; 569
570 const base::StringPiece template_html(
571 ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id));
572 if (template_html.empty()) {
573 NOTREACHED() << "unable to load template. ID: " << resource_id;
574 } else {
575 // "t" is the id of the templates root node.
576 *error_html = jstemplate_builder::GetTemplatesHtml(
577 template_html, &error_strings, "t");
578 }
563 } 579 }
564 580
565 const base::StringPiece template_html( 581 if (error_description) {
566 ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id)); 582 if (!extension && !is_repost)
567 if (template_html.empty()) { 583 *error_description = LocalizedError::GetErrorDetails(error);
568 NOTREACHED() << "unable to load template. ID: " << resource_id;
569 } else {
570 // "t" is the id of the templates root node.
571 html = jstemplate_builder::GetTemplatesHtml(
572 template_html, &error_strings, "t");
573 } 584 }
574
575 return html;
576 } 585 }
577 586
578 bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() { 587 bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() {
579 return !extension_dispatcher_->is_extension_process(); 588 return !extension_dispatcher_->is_extension_process();
580 } 589 }
581 590
582 bool ChromeContentRendererClient::AllowPopup(const GURL& creator) { 591 bool ChromeContentRendererClient::AllowPopup(const GURL& creator) {
583 // Extensions and apps always allowed to create unrequested popups. The second 592 // Extensions and apps always allowed to create unrequested popups. The second
584 // check is necessary to include content scripts. 593 // check is necessary to include content scripts.
585 return extension_dispatcher_->extensions()->GetByURL(creator) || 594 return extension_dispatcher_->extensions()->GetByURL(creator) ||
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 if (spellcheck_.get()) 781 if (spellcheck_.get())
773 thread->RemoveObserver(spellcheck_.get()); 782 thread->RemoveObserver(spellcheck_.get());
774 SpellCheck* new_spellcheck = new SpellCheck(); 783 SpellCheck* new_spellcheck = new SpellCheck();
775 if (spellcheck_provider_) 784 if (spellcheck_provider_)
776 spellcheck_provider_->SetSpellCheck(new_spellcheck); 785 spellcheck_provider_->SetSpellCheck(new_spellcheck);
777 spellcheck_.reset(new_spellcheck); 786 spellcheck_.reset(new_spellcheck);
778 thread->AddObserver(new_spellcheck); 787 thread->AddObserver(new_spellcheck);
779 } 788 }
780 789
781 } // namespace chrome 790 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698