| 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 1cadabd49e21125c3782585e689744db7bab559f..97e7e11ef9288e5083ae9b2b29588e98725bc10c 100644
|
| --- a/chrome/common/extensions/api/extension_api.cc
|
| +++ b/chrome/common/extensions/api/extension_api.cc
|
| @@ -64,7 +64,8 @@ base::StringPiece ReadFromResource(int resource_id) {
|
| return ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id);
|
| }
|
|
|
| -scoped_ptr<ListValue> LoadSchemaList(const base::StringPiece& schema) {
|
| +scoped_ptr<ListValue> LoadSchemaList(const std::string& name,
|
| + const base::StringPiece& schema) {
|
| std::string error_message;
|
| scoped_ptr<Value> result(
|
| base::JSONReader::ReadAndReturnError(
|
| @@ -72,6 +73,14 @@ scoped_ptr<ListValue> LoadSchemaList(const base::StringPiece& schema) {
|
| base::JSON_PARSE_RFC, // options
|
| NULL, // error code
|
| &error_message));
|
| +
|
| + // Tracking down http://crbug.com/121424
|
| + char buf[128];
|
| + base::snprintf(buf, arraysize(buf), "%s: (%d) '%s'",
|
| + name.c_str(),
|
| + result.get() ? result->GetType() : -1,
|
| + error_message.c_str());
|
| +
|
| CHECK(result.get()) << error_message << " for schema " << schema;
|
| CHECK(result->IsType(Value::TYPE_LIST)) << " for schema " << schema;
|
| return scoped_ptr<ListValue>(static_cast<ListValue*>(result.release()));
|
| @@ -146,8 +155,9 @@ void ExtensionAPI::SplitDependencyName(const std::string& full_name,
|
| *feature_name = full_name.substr(colon_index + 1);
|
| }
|
|
|
| -void ExtensionAPI::LoadSchema(const base::StringPiece& schema) {
|
| - scoped_ptr<ListValue> schema_list(LoadSchemaList(schema));
|
| +void ExtensionAPI::LoadSchema(const std::string& name,
|
| + const base::StringPiece& schema) {
|
| + scoped_ptr<ListValue> schema_list(LoadSchemaList(name, schema));
|
| std::string schema_namespace;
|
|
|
| while (!schema_list->empty()) {
|
| @@ -474,7 +484,7 @@ const DictionaryValue* ExtensionAPI::GetSchema(const std::string& full_name) {
|
| if (maybe_schema_resource == unloaded_schemas_.end())
|
| return NULL;
|
|
|
| - LoadSchema(maybe_schema_resource->second);
|
| + LoadSchema(maybe_schema_resource->first, maybe_schema_resource->second);
|
| maybe_schema = schemas_.find(api_name);
|
| CHECK(schemas_.end() != maybe_schema);
|
| result = maybe_schema->second.get();
|
| @@ -716,7 +726,9 @@ void ExtensionAPI::GetAPIsMatchingURL(const GURL& url,
|
|
|
| void ExtensionAPI::LoadAllSchemas() {
|
| while (unloaded_schemas_.size()) {
|
| - LoadSchema(unloaded_schemas_.begin()->second);
|
| + std::map<std::string, base::StringPiece>::iterator it =
|
| + unloaded_schemas_.begin();
|
| + LoadSchema(it->first, it->second);
|
| }
|
| }
|
|
|
|
|