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

Side by Side Diff: chrome/browser/extensions/api/proxy/proxy_api.cc

Issue 10694085: Refactor extension event distribution to use Values instead of JSON strings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing memory leak in a test. Created 8 years, 4 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Implementation of the Chrome Extensions Proxy Settings API. 5 // Implementation of the Chrome Extensions Proxy Settings API.
6 6
7 #include "chrome/browser/extensions/api/proxy/proxy_api.h" 7 #include "chrome/browser/extensions/api/proxy/proxy_api.h"
8 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 19 matching lines...) Expand all
30 ProxyEventRouter::ProxyEventRouter() { 30 ProxyEventRouter::ProxyEventRouter() {
31 } 31 }
32 32
33 ProxyEventRouter::~ProxyEventRouter() { 33 ProxyEventRouter::~ProxyEventRouter() {
34 } 34 }
35 35
36 void ProxyEventRouter::OnProxyError( 36 void ProxyEventRouter::OnProxyError(
37 EventRouterForwarder* event_router, 37 EventRouterForwarder* event_router,
38 void* profile, 38 void* profile,
39 int error_code) { 39 int error_code) {
40 ListValue args; 40 scoped_ptr<ListValue> args(new ListValue());
41 DictionaryValue* dict = new DictionaryValue(); 41 DictionaryValue* dict = new DictionaryValue();
42 dict->SetBoolean(keys::kProxyEventFatal, true); 42 dict->SetBoolean(keys::kProxyEventFatal, true);
43 dict->SetString(keys::kProxyEventError, net::ErrorToString(error_code)); 43 dict->SetString(keys::kProxyEventError, net::ErrorToString(error_code));
44 dict->SetString(keys::kProxyEventDetails, ""); 44 dict->SetString(keys::kProxyEventDetails, "");
45 args.Append(dict); 45 args->Append(dict);
46
47 std::string json_args;
48 base::JSONWriter::Write(&args, &json_args);
49 46
50 if (profile) { 47 if (profile) {
51 event_router->DispatchEventToRenderers( 48 event_router->DispatchEventToRenderers(
52 keys::kProxyEventOnProxyError, json_args, profile, true, GURL()); 49 keys::kProxyEventOnProxyError, args.Pass(), profile, true, GURL());
53 } else { 50 } else {
54 event_router->BroadcastEventToRenderers( 51 event_router->BroadcastEventToRenderers(
55 keys::kProxyEventOnProxyError, json_args, GURL()); 52 keys::kProxyEventOnProxyError, args.Pass(), GURL());
56 } 53 }
57 } 54 }
58 55
59 void ProxyEventRouter::OnPACScriptError( 56 void ProxyEventRouter::OnPACScriptError(
60 EventRouterForwarder* event_router, 57 EventRouterForwarder* event_router,
61 void* profile, 58 void* profile,
62 int line_number, 59 int line_number,
63 const string16& error) { 60 const string16& error) {
64 ListValue args; 61 scoped_ptr<ListValue> args(new ListValue());
65 DictionaryValue* dict = new DictionaryValue(); 62 DictionaryValue* dict = new DictionaryValue();
66 dict->SetBoolean(keys::kProxyEventFatal, false); 63 dict->SetBoolean(keys::kProxyEventFatal, false);
67 dict->SetString(keys::kProxyEventError, 64 dict->SetString(keys::kProxyEventError,
68 net::ErrorToString(net::ERR_PAC_SCRIPT_FAILED)); 65 net::ErrorToString(net::ERR_PAC_SCRIPT_FAILED));
69 std::string error_msg; 66 std::string error_msg;
70 if (line_number != -1) { 67 if (line_number != -1) {
71 base::SStringPrintf( 68 base::SStringPrintf(
72 &error_msg, "line: %d: %s", line_number, UTF16ToUTF8(error).c_str()); 69 &error_msg, "line: %d: %s", line_number, UTF16ToUTF8(error).c_str());
73 } else { 70 } else {
74 error_msg = UTF16ToUTF8(error); 71 error_msg = UTF16ToUTF8(error);
75 } 72 }
76 dict->SetString(keys::kProxyEventDetails, error_msg); 73 dict->SetString(keys::kProxyEventDetails, error_msg);
77 args.Append(dict); 74 args->Append(dict);
78
79 std::string json_args;
80 base::JSONWriter::Write(&args, &json_args);
81 75
82 if (profile) { 76 if (profile) {
83 event_router->DispatchEventToRenderers( 77 event_router->DispatchEventToRenderers(
84 keys::kProxyEventOnProxyError, json_args, profile, true, GURL()); 78 keys::kProxyEventOnProxyError, args.Pass(), profile, true, GURL());
85 } else { 79 } else {
86 event_router->BroadcastEventToRenderers( 80 event_router->BroadcastEventToRenderers(
87 keys::kProxyEventOnProxyError, json_args, GURL()); 81 keys::kProxyEventOnProxyError, args.Pass(), GURL());
88 } 82 }
89 } 83 }
90 84
91 ProxyPrefTransformer::ProxyPrefTransformer() { 85 ProxyPrefTransformer::ProxyPrefTransformer() {
92 } 86 }
93 87
94 ProxyPrefTransformer::~ProxyPrefTransformer() { 88 ProxyPrefTransformer::~ProxyPrefTransformer() {
95 } 89 }
96 90
97 Value* ProxyPrefTransformer::ExtensionToBrowserPref(const Value* extension_pref, 91 Value* ProxyPrefTransformer::ExtensionToBrowserPref(const Value* extension_pref,
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 extension_pref->Set(keys::kProxyConfigRules, proxy_rules_dict); 173 extension_pref->Set(keys::kProxyConfigRules, proxy_rules_dict);
180 break; 174 break;
181 } 175 }
182 case ProxyPrefs::kModeCount: 176 case ProxyPrefs::kModeCount:
183 NOTREACHED(); 177 NOTREACHED();
184 } 178 }
185 return extension_pref.release(); 179 return extension_pref.release();
186 } 180 }
187 181
188 } // namespace extensions 182 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698