| 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,
|
|
|