Index: chrome/browser/extensions/settings/settings_frontend.cc |
diff --git a/chrome/browser/extensions/settings/settings_frontend.cc b/chrome/browser/extensions/settings/settings_frontend.cc |
index 137964bba62d5aac3e6a3140884a13632bc5f82c..a0978ff8ee2a289b86c49118db23768ea1d01438 100644 |
--- a/chrome/browser/extensions/settings/settings_frontend.cc |
+++ b/chrome/browser/extensions/settings/settings_frontend.cc |
@@ -9,6 +9,7 @@ |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
#include "base/file_path.h" |
+#include "base/json/json_reader.h" |
#include "chrome/browser/extensions/event_names.h" |
#include "chrome/browser/extensions/event_router.h" |
#include "chrome/browser/extensions/extension_service.h" |
@@ -40,14 +41,15 @@ class DefaultObserver : public SettingsObserver { |
const std::string& extension_id, |
settings_namespace::Namespace settings_namespace, |
const std::string& change_json) OVERRIDE { |
+ // TODO(gdk): This is a temporary hack while the refactoring for |
+ // string-based event payloads is removed. http://crbug.com/136045 |
+ scoped_ptr<ListValue> args(new ListValue()); |
+ args->Append(base::JSONReader::Read(change_json)); |
+ args->Append(Value::CreateStringValue(settings_namespace::ToString( |
+ settings_namespace))); |
+ |
profile_->GetExtensionEventRouter()->DispatchEventToExtension( |
- extension_id, |
- event_names::kOnSettingsChanged, |
- // This is the list of function arguments to pass to the onChanged |
- // handler of extensions, an array of [changes, settings_namespace]. |
- std::string("[") + change_json + ",\"" + |
- settings_namespace::ToString(settings_namespace) + "\"]", |
- NULL, |
+ extension_id, event_names::kOnSettingsChanged, args.Pass(), NULL, |
GURL()); |
} |