// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_COMMON_LOCALIZED_ERROR_H_ #define CHROME_COMMON_LOCALIZED_ERROR_H_ #include <string> #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" #include "base/strings/string16.h" #include "url/gurl.h" namespace base { class DictionaryValue; class ListValue; } namespace extensions { class Extension; } namespace blink { struct WebURLError; } class LocalizedError { public: // Optional parameters that affect the display of an error page. struct ErrorPageParams { ErrorPageParams(); ~ErrorPageParams(); // Overrides whether reloading is suggested. bool suggest_reload; int reload_tracking_id; // Overrides default suggestions. Each entry must contain a header and may // optionally contain a body as well. Must not be NULL. scoped_ptr<base::ListValue> override_suggestions; // Prefix to prepend to search terms. Search box is only shown if this is // a valid url. The search terms will be appended to the end of this URL to // conduct a search. GURL search_url; // Default search terms. Ignored if |search_url| is invalid. std::string search_terms; int search_tracking_id; }; // Fills |error_strings| with values to be used to build an error page used // on HTTP errors, like 404 or connection reset. static void GetStrings(int error_code, const std::string& error_domain, const GURL& failed_url, bool is_post, bool show_stale_load_button, const std::string& locale, const std::string& accept_languages, scoped_ptr<ErrorPageParams> params, base::DictionaryValue* strings); // Returns a description of the encountered error. static base::string16 GetErrorDetails(const blink::WebURLError& error, bool is_post); // Returns true if an error page exists for the specified parameters. static bool HasStrings(const std::string& error_domain, int error_code); // Fills |error_strings| with values to be used to build an error page used // on HTTP errors, like 404 or connection reset, but using information from // the associated |app| in order to make the error page look like it's more // part of the app. static void GetAppErrorStrings(const GURL& display_url, const extensions::Extension* app, base::DictionaryValue* error_strings); static const char kHttpErrorDomain[]; private: DISALLOW_IMPLICIT_CONSTRUCTORS(LocalizedError); }; #endif // CHROME_COMMON_LOCALIZED_ERROR_H_