| Index: chrome/common/extensions/api/extension_api.cc
|
| diff --git a/chrome/common/extensions/api/extension_api.cc b/chrome/common/extensions/api/extension_api.cc
|
| index c75fb6014f83a30c969db656c1880a56c6c9998e..b13b84bca3e28b5d860306864b5ec7f16f4a0754 100644
|
| --- a/chrome/common/extensions/api/extension_api.cc
|
| +++ b/chrome/common/extensions/api/extension_api.cc
|
| @@ -22,21 +22,32 @@ ExtensionAPI* ExtensionAPI::GetInstance() {
|
| return Singleton<ExtensionAPI>::get();
|
| }
|
|
|
| -ExtensionAPI::ExtensionAPI() {
|
| +static base::ListValue* LoadSchemaList(int resource_id) {
|
| const bool kAllowTrailingCommas = false;
|
| std::string error_message;
|
| - scoped_ptr<Value> temp_value(
|
| + Value* result =
|
| base::JSONReader::ReadAndReturnError(
|
| ResourceBundle::GetSharedInstance().GetRawDataResource(
|
| - IDR_EXTENSION_API_JSON).as_string(),
|
| + resource_id).as_string(),
|
| kAllowTrailingCommas,
|
| NULL, // error code
|
| - &error_message));
|
| - CHECK(temp_value.get()) << error_message;
|
| - CHECK(temp_value->IsType(base::Value::TYPE_LIST))
|
| - << "Top-level node in extension API is not dictionary";
|
| + &error_message);
|
| + CHECK(result) << error_message;
|
| + CHECK(result->IsType(base::Value::TYPE_LIST));
|
| + return static_cast<base::ListValue*>(result);
|
| +}
|
| +
|
| +static void AppendExtraSchemaList(base::ListValue* list, int resource_id) {
|
| + Value* value;
|
| + scoped_ptr<base::ListValue> to_append(LoadSchemaList(resource_id));
|
| + while (to_append->Remove(0, &value)) {
|
| + list->Append(value);
|
| + }
|
| +}
|
|
|
| - value_.reset(static_cast<base::ListValue*>(temp_value.release()));
|
| +ExtensionAPI::ExtensionAPI() {
|
| + value_.reset(LoadSchemaList(IDR_EXTENSION_API_JSON));
|
| + AppendExtraSchemaList(value_.get(), IDR_EXTENSION_API_JSON_EXTENSION);
|
| }
|
|
|
| ExtensionAPI::~ExtensionAPI() {
|
|
|