| Index: chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc
|
| diff --git a/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc b/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc
|
| index b6e4c02b42c5f53fdff52f0e695797296822630c..2861ae35f2ee19b725160fd36dd6c205f5195c77 100644
|
| --- a/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc
|
| +++ b/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc
|
| @@ -666,25 +666,43 @@ bool BookmarkManagerPrivateGetMetaInfoFunction::RunOnReady() {
|
| scoped_ptr<GetMetaInfo::Params> params(GetMetaInfo::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params);
|
|
|
| - const BookmarkNode* node = GetBookmarkNodeFromId(params->id);
|
| - if (!node)
|
| - return false;
|
| + if (params->id) {
|
| + const BookmarkNode* node = GetBookmarkNodeFromId(*params->id);
|
| + if (!node)
|
| + return false;
|
|
|
| - if (params->key) {
|
| - std::string value;
|
| - if (node->GetMetaInfo(*params->key, &value)) {
|
| + if (params->key) {
|
| + std::string value;
|
| + if (node->GetMetaInfo(*params->key, &value)) {
|
| + GetMetaInfo::Results::Value result;
|
| + result.as_string.reset(new std::string(value));
|
| + results_ = GetMetaInfo::Results::Create(result);
|
| + }
|
| + } else {
|
| GetMetaInfo::Results::Value result;
|
| - result.as_string.reset(new std::string(value));
|
| + result.as_meta_info_fields.reset(
|
| + new bookmark_manager_private::MetaInfoFields);
|
| +
|
| + const BookmarkNode::MetaInfoMap* meta_info = node->GetMetaInfoMap();
|
| + if (meta_info)
|
| + result.as_meta_info_fields->additional_properties = *meta_info;
|
| results_ = GetMetaInfo::Results::Create(result);
|
| }
|
| } else {
|
| + if (params->key) {
|
| + return true;
|
| + }
|
| +
|
| + BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile());
|
| + const BookmarkNode* node = model->root_node();
|
| +
|
| GetMetaInfo::Results::Value result;
|
| - result.as_meta_info_fields.reset(
|
| - new bookmark_manager_private::MetaInfoFields);
|
| + result.as_map_meta_info_fields.reset(
|
| + new bookmark_manager_private::MapMetaInfoFields);
|
| +
|
| + bookmark_api_helpers::GetMetaInfo(node,
|
| + &result.as_map_meta_info_fields->additional_properties);
|
|
|
| - const BookmarkNode::MetaInfoMap* meta_info = node->GetMetaInfoMap();
|
| - if (meta_info)
|
| - result.as_meta_info_fields->additional_properties = *meta_info;
|
| results_ = GetMetaInfo::Results::Create(result);
|
| }
|
|
|
|
|