Index: chrome/browser/extensions/extension_proxy_api.cc |
diff --git a/chrome/browser/extensions/extension_proxy_api.cc b/chrome/browser/extensions/extension_proxy_api.cc |
index 8f40ac4642619219ed5bf52b3a8a8a5317cf9418..5416af3ded1410a9978b275352305ac5570cbf29 100644 |
--- a/chrome/browser/extensions/extension_proxy_api.cc |
+++ b/chrome/browser/extensions/extension_proxy_api.cc |
@@ -5,15 +5,18 @@ |
#include "chrome/browser/extensions/extension_proxy_api.h" |
#include "base/base64.h" |
+#include "base/json/json_writer.h" |
#include "base/string_util.h" |
#include "base/string_tokenizer.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
#include "chrome/browser/prefs/proxy_config_dictionary.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/extensions/extension_io_event_router.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/common/extensions/extension_error_utils.h" |
#include "chrome/common/pref_names.h" |
+#include "net/base/net_errors.h" |
#include "net/proxy/proxy_config.h" |
namespace { |
@@ -57,6 +60,12 @@ const char kProxyCfgRulePort[] = "port"; |
const char kProxyCfgBypassList[] = "bypassList"; |
const char kProxyCfgScheme[] = "scheme"; |
+const char kProxyEventFatal[] = "fatal"; |
+const char kProxyEventError[] = "error"; |
+const char kProxyEventDetails[] = "details"; |
+const char kProxyEventOnProxyError[] = "experimental.proxy.onProxyError"; |
+ |
+ |
const char kPACDataUrlPrefix[] = |
"data:application/x-ns-proxy-autoconfig;base64,"; |
@@ -101,6 +110,33 @@ bool CreatePACScriptFromDataURL( |
} // namespace |
+// static |
+ExtensionProxyEventRouter* ExtensionProxyEventRouter::GetInstance() { |
+ return Singleton<ExtensionProxyEventRouter>::get(); |
+} |
+ |
+ExtensionProxyEventRouter::ExtensionProxyEventRouter() { |
+} |
+ |
+ExtensionProxyEventRouter::~ExtensionProxyEventRouter() { |
+} |
+ |
+void ExtensionProxyEventRouter::OnProxyError( |
+ const ExtensionIOEventRouter* event_router, |
+ int error_code) { |
+ ListValue args; |
+ DictionaryValue* dict = new DictionaryValue(); |
+ dict->SetBoolean(kProxyEventFatal, true); |
+ dict->SetString(kProxyEventError, net::ErrorToString(error_code)); |
+ dict->SetString(kProxyEventDetails, ""); |
+ args.Append(dict); |
+ |
+ std::string json_args; |
+ base::JSONWriter::Write(&args, false, &json_args); |
+ event_router->DispatchEventToRenderers( |
+ kProxyEventOnProxyError, json_args, GURL()); |
+} |
+ |
bool UseCustomProxySettingsFunction::GetProxyServer( |
const DictionaryValue* dict, |
net::ProxyServer::Scheme default_scheme, |