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

Side by Side Diff: chrome/browser/extensions/extension_proxy_api.cc

Issue 6541021: Send fatal proxy errors to the network delegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 9 years, 10 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/browser/extensions/extension_proxy_api.h" 5 #include "chrome/browser/extensions/extension_proxy_api.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/json/json_writer.h"
8 #include "base/string_util.h" 9 #include "base/string_util.h"
9 #include "base/string_tokenizer.h" 10 #include "base/string_tokenizer.h"
10 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
11 #include "base/values.h" 12 #include "base/values.h"
12 #include "chrome/browser/prefs/proxy_config_dictionary.h" 13 #include "chrome/browser/prefs/proxy_config_dictionary.h"
13 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/extensions/extension_io_event_router.h"
14 #include "chrome/browser/extensions/extension_service.h" 16 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/common/extensions/extension_error_utils.h" 17 #include "chrome/common/extensions/extension_error_utils.h"
16 #include "chrome/common/pref_names.h" 18 #include "chrome/common/pref_names.h"
17 #include "net/proxy/proxy_config.h" 19 #include "net/proxy/proxy_config.h"
18 20
19 namespace { 21 namespace {
20 22
21 // The scheme for which to use a manually specified proxy, not of the proxy URI 23 // The scheme for which to use a manually specified proxy, not of the proxy URI
22 // itself. 24 // itself.
23 enum { 25 enum {
(...skipping 26 matching lines...) Expand all
50 const char kProxyCfgMode[] = "mode"; 52 const char kProxyCfgMode[] = "mode";
51 const char kProxyCfgPacScript[] = "pacScript"; 53 const char kProxyCfgPacScript[] = "pacScript";
52 const char kProxyCfgPacScriptUrl[] = "url"; 54 const char kProxyCfgPacScriptUrl[] = "url";
53 const char kProxyCfgPacScriptData[] = "data"; 55 const char kProxyCfgPacScriptData[] = "data";
54 const char kProxyCfgRules[] = "rules"; 56 const char kProxyCfgRules[] = "rules";
55 const char kProxyCfgRuleHost[] = "host"; 57 const char kProxyCfgRuleHost[] = "host";
56 const char kProxyCfgRulePort[] = "port"; 58 const char kProxyCfgRulePort[] = "port";
57 const char kProxyCfgBypassList[] = "bypassList"; 59 const char kProxyCfgBypassList[] = "bypassList";
58 const char kProxyCfgScheme[] = "scheme"; 60 const char kProxyCfgScheme[] = "scheme";
59 61
62 const char kProxyEventFatal[] = "fatal";
63 const char kProxyEventDetails[] = "details";
64 const char kProxyEventOnProxyError[] = "experimental.proxy.onProxyError";
65
66
60 const char kPACDataUrlPrefix[] = 67 const char kPACDataUrlPrefix[] =
61 "data:application/x-ns-proxy-autoconfig;base64,"; 68 "data:application/x-ns-proxy-autoconfig;base64,";
62 69
63 COMPILE_ASSERT(SCHEME_MAX == SCHEME_FALLBACK, 70 COMPILE_ASSERT(SCHEME_MAX == SCHEME_FALLBACK,
64 SCHEME_MAX_must_equal_SCHEME_FALLBACK); 71 SCHEME_MAX_must_equal_SCHEME_FALLBACK);
65 COMPILE_ASSERT(arraysize(field_name) == SCHEME_MAX + 1, 72 COMPILE_ASSERT(arraysize(field_name) == SCHEME_MAX + 1,
66 field_name_array_is_wrong_size); 73 field_name_array_is_wrong_size);
67 COMPILE_ASSERT(arraysize(scheme_name) == SCHEME_MAX + 1, 74 COMPILE_ASSERT(arraysize(scheme_name) == SCHEME_MAX + 1,
68 scheme_name_array_is_wrong_size); 75 scheme_name_array_is_wrong_size);
69 COMPILE_ASSERT(SCHEME_ALL == 0, singleProxy_must_be_first_option); 76 COMPILE_ASSERT(SCHEME_ALL == 0, singleProxy_must_be_first_option);
(...skipping 24 matching lines...) Expand all
94 if (pac_script_url_base64_encoded.find(kPACDataUrlPrefix) != 0) { 101 if (pac_script_url_base64_encoded.find(kPACDataUrlPrefix) != 0) {
95 return false; 102 return false;
96 } 103 }
97 std::string pac_script_base64_encoded = 104 std::string pac_script_base64_encoded =
98 pac_script_url_base64_encoded.substr(strlen(kPACDataUrlPrefix)); 105 pac_script_url_base64_encoded.substr(strlen(kPACDataUrlPrefix));
99 return base::Base64Decode(pac_script_base64_encoded, pac_script); 106 return base::Base64Decode(pac_script_base64_encoded, pac_script);
100 } 107 }
101 108
102 } // namespace 109 } // namespace
103 110
111 // static
112 ExtensionProxyEventRouter* ExtensionProxyEventRouter::GetInstance() {
113 return Singleton<ExtensionProxyEventRouter>::get();
114 }
115
116 ExtensionProxyEventRouter::ExtensionProxyEventRouter() {
117 }
118
119 ExtensionProxyEventRouter::~ExtensionProxyEventRouter() {
120 }
121
122 void ExtensionProxyEventRouter::OnProxyError(
123 const ExtensionIOEventRouter* event_router) {
124 ListValue args;
125 DictionaryValue* dict = new DictionaryValue();
126 dict->SetBoolean(kProxyEventFatal, true);
127 dict->SetString(kProxyEventDetails, "");
128 args.Append(dict);
129
130 std::string json_args;
131 base::JSONWriter::Write(&args, false, &json_args);
132 event_router->DispatchEventToRenderers(
133 kProxyEventOnProxyError, json_args, GURL());
134 }
135
104 bool UseCustomProxySettingsFunction::GetProxyServer( 136 bool UseCustomProxySettingsFunction::GetProxyServer(
105 const DictionaryValue* dict, 137 const DictionaryValue* dict,
106 net::ProxyServer::Scheme default_scheme, 138 net::ProxyServer::Scheme default_scheme,
107 net::ProxyServer* proxy_server) { 139 net::ProxyServer* proxy_server) {
108 std::string scheme_string; // optional. 140 std::string scheme_string; // optional.
109 // We can safely assume that this is ASCII due to the allowed enumeration 141 // We can safely assume that this is ASCII due to the allowed enumeration
110 // values specified in extension_api.json. 142 // values specified in extension_api.json.
111 dict->GetStringASCII(kProxyCfgScheme, &scheme_string); 143 dict->GetStringASCII(kProxyCfgScheme, &scheme_string);
112 144
113 net::ProxyServer::Scheme scheme = 145 net::ProxyServer::Scheme scheme =
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 break; 577 break;
546 case net::ProxyServer::SCHEME_DIRECT: 578 case net::ProxyServer::SCHEME_DIRECT:
547 case net::ProxyServer::SCHEME_INVALID: 579 case net::ProxyServer::SCHEME_INVALID:
548 NOTREACHED(); 580 NOTREACHED();
549 return out; 581 return out;
550 } 582 }
551 out->SetString(kProxyCfgRuleHost, proxy.host_port_pair().host()); 583 out->SetString(kProxyCfgRuleHost, proxy.host_port_pair().host());
552 out->SetInteger(kProxyCfgRulePort, proxy.host_port_pair().port()); 584 out->SetInteger(kProxyCfgRulePort, proxy.host_port_pair().port());
553 return out; 585 return out;
554 } 586 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698