| OLD | NEW |
| 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 #include "chrome/browser/extensions/api/bookmark_manager_private/bookmark_manage
r_private_api.h" | 5 #include "chrome/browser/extensions/api/bookmark_manager_private/bookmark_manage
r_private_api.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 nodes->push_back(node); | 97 nodes->push_back(node); |
| 98 } | 98 } |
| 99 | 99 |
| 100 return true; | 100 return true; |
| 101 } | 101 } |
| 102 | 102 |
| 103 // Recursively create a bookmark_manager_private::BookmarkNodeDataElement from | 103 // Recursively create a bookmark_manager_private::BookmarkNodeDataElement from |
| 104 // a bookmark node. This is by used |BookmarkNodeDataToJSON| when the data comes | 104 // a bookmark node. This is by used |BookmarkNodeDataToJSON| when the data comes |
| 105 // from the current profile. In this case we have a BookmarkNode since we got | 105 // from the current profile. In this case we have a BookmarkNode since we got |
| 106 // the data from the current profile. | 106 // the data from the current profile. |
| 107 linked_ptr<bookmark_manager_private::BookmarkNodeDataElement> | 107 bookmark_manager_private::BookmarkNodeDataElement |
| 108 CreateNodeDataElementFromBookmarkNode(const BookmarkNode& node) { | 108 CreateNodeDataElementFromBookmarkNode(const BookmarkNode& node) { |
| 109 linked_ptr<bookmark_manager_private::BookmarkNodeDataElement> element( | 109 bookmark_manager_private::BookmarkNodeDataElement element; |
| 110 new bookmark_manager_private::BookmarkNodeDataElement); | |
| 111 // Add id and parentId so we can associate the data with existing nodes on the | 110 // Add id and parentId so we can associate the data with existing nodes on the |
| 112 // client side. | 111 // client side. |
| 113 element->id.reset(new std::string(base::Int64ToString(node.id()))); | 112 element.id.reset(new std::string(base::Int64ToString(node.id()))); |
| 114 element->parent_id.reset( | 113 element.parent_id.reset( |
| 115 new std::string(base::Int64ToString(node.parent()->id()))); | 114 new std::string(base::Int64ToString(node.parent()->id()))); |
| 116 | 115 |
| 117 if (node.is_url()) | 116 if (node.is_url()) |
| 118 element->url.reset(new std::string(node.url().spec())); | 117 element.url.reset(new std::string(node.url().spec())); |
| 119 | 118 |
| 120 element->title = base::UTF16ToUTF8(node.GetTitle()); | 119 element.title = base::UTF16ToUTF8(node.GetTitle()); |
| 121 for (int i = 0; i < node.child_count(); ++i) { | 120 for (int i = 0; i < node.child_count(); ++i) { |
| 122 element->children.push_back( | 121 element.children.push_back( |
| 123 CreateNodeDataElementFromBookmarkNode(*node.GetChild(i))); | 122 CreateNodeDataElementFromBookmarkNode(*node.GetChild(i))); |
| 124 } | 123 } |
| 125 | 124 |
| 126 return element; | 125 return element; |
| 127 } | 126 } |
| 128 | 127 |
| 129 // Recursively create a bookmark_manager_private::BookmarkNodeDataElement from | 128 // Recursively create a bookmark_manager_private::BookmarkNodeDataElement from |
| 130 // a BookmarkNodeData::Element. This is used by |BookmarkNodeDataToJSON| when | 129 // a BookmarkNodeData::Element. This is used by |BookmarkNodeDataToJSON| when |
| 131 // the data comes from a different profile. When the data comes from a different | 130 // the data comes from a different profile. When the data comes from a different |
| 132 // profile we do not have any IDs or parent IDs. | 131 // profile we do not have any IDs or parent IDs. |
| 133 linked_ptr<bookmark_manager_private::BookmarkNodeDataElement> | 132 bookmark_manager_private::BookmarkNodeDataElement CreateApiNodeDataElement( |
| 134 CreateApiNodeDataElement(const BookmarkNodeData::Element& element) { | 133 const BookmarkNodeData::Element& element) { |
| 135 linked_ptr<bookmark_manager_private::BookmarkNodeDataElement> node_element( | 134 bookmark_manager_private::BookmarkNodeDataElement node_element; |
| 136 new bookmark_manager_private::BookmarkNodeDataElement); | |
| 137 | 135 |
| 138 if (element.is_url) | 136 if (element.is_url) |
| 139 node_element->url.reset(new std::string(element.url.spec())); | 137 node_element.url.reset(new std::string(element.url.spec())); |
| 140 node_element->title = base::UTF16ToUTF8(element.title); | 138 node_element.title = base::UTF16ToUTF8(element.title); |
| 141 for (size_t i = 0; i < element.children.size(); ++i) { | 139 for (size_t i = 0; i < element.children.size(); ++i) { |
| 142 node_element->children.push_back( | 140 node_element.children.push_back( |
| 143 CreateApiNodeDataElement(element.children[i])); | 141 CreateApiNodeDataElement(element.children[i])); |
| 144 } | 142 } |
| 145 | 143 |
| 146 return node_element; | 144 return node_element; |
| 147 } | 145 } |
| 148 | 146 |
| 149 // Creates a bookmark_manager_private::BookmarkNodeData from a BookmarkNodeData. | 147 // Creates a bookmark_manager_private::BookmarkNodeData from a BookmarkNodeData. |
| 150 scoped_ptr<bookmark_manager_private::BookmarkNodeData> | 148 bookmark_manager_private::BookmarkNodeData CreateApiBookmarkNodeData( |
| 151 CreateApiBookmarkNodeData(Profile* profile, const BookmarkNodeData& data) { | 149 Profile* profile, |
| 150 const BookmarkNodeData& data) { |
| 152 const base::FilePath& profile_path = profile->GetPath(); | 151 const base::FilePath& profile_path = profile->GetPath(); |
| 153 | 152 |
| 154 scoped_ptr<bookmark_manager_private::BookmarkNodeData> node_data( | 153 bookmark_manager_private::BookmarkNodeData node_data; |
| 155 new bookmark_manager_private::BookmarkNodeData); | 154 node_data.same_profile = data.IsFromProfilePath(profile_path); |
| 156 node_data->same_profile = data.IsFromProfilePath(profile_path); | |
| 157 | 155 |
| 158 if (node_data->same_profile) { | 156 if (node_data.same_profile) { |
| 159 std::vector<const BookmarkNode*> nodes = data.GetNodes( | 157 std::vector<const BookmarkNode*> nodes = data.GetNodes( |
| 160 BookmarkModelFactory::GetForProfile(profile), profile_path); | 158 BookmarkModelFactory::GetForProfile(profile), profile_path); |
| 161 for (size_t i = 0; i < nodes.size(); ++i) { | 159 for (size_t i = 0; i < nodes.size(); ++i) { |
| 162 node_data->elements.push_back( | 160 node_data.elements.push_back( |
| 163 CreateNodeDataElementFromBookmarkNode(*nodes[i])); | 161 CreateNodeDataElementFromBookmarkNode(*nodes[i])); |
| 164 } | 162 } |
| 165 } else { | 163 } else { |
| 166 // We do not have a node IDs when the data comes from a different profile. | 164 // We do not have a node IDs when the data comes from a different profile. |
| 167 for (size_t i = 0; i < data.size(); ++i) | 165 for (size_t i = 0; i < data.size(); ++i) |
| 168 node_data->elements.push_back(CreateApiNodeDataElement(data.elements[i])); | 166 node_data.elements.push_back(CreateApiNodeDataElement(data.elements[i])); |
| 169 } | 167 } |
| 170 return node_data; | 168 return node_data; |
| 171 } | 169 } |
| 172 | 170 |
| 173 } // namespace | 171 } // namespace |
| 174 | 172 |
| 175 BookmarkManagerPrivateEventRouter::BookmarkManagerPrivateEventRouter( | 173 BookmarkManagerPrivateEventRouter::BookmarkManagerPrivateEventRouter( |
| 176 content::BrowserContext* browser_context, | 174 content::BrowserContext* browser_context, |
| 177 BookmarkModel* bookmark_model) | 175 BookmarkModel* bookmark_model) |
| 178 : browser_context_(browser_context), bookmark_model_(bookmark_model) { | 176 : browser_context_(browser_context), bookmark_model_(bookmark_model) { |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 event_router->BroadcastEvent(std::move(event)); | 311 event_router->BroadcastEvent(std::move(event)); |
| 314 } | 312 } |
| 315 | 313 |
| 316 void BookmarkManagerPrivateDragEventRouter::OnDragEnter( | 314 void BookmarkManagerPrivateDragEventRouter::OnDragEnter( |
| 317 const BookmarkNodeData& data) { | 315 const BookmarkNodeData& data) { |
| 318 if (!data.is_valid()) | 316 if (!data.is_valid()) |
| 319 return; | 317 return; |
| 320 DispatchEvent(events::BOOKMARK_MANAGER_PRIVATE_ON_DRAG_ENTER, | 318 DispatchEvent(events::BOOKMARK_MANAGER_PRIVATE_ON_DRAG_ENTER, |
| 321 bookmark_manager_private::OnDragEnter::kEventName, | 319 bookmark_manager_private::OnDragEnter::kEventName, |
| 322 bookmark_manager_private::OnDragEnter::Create( | 320 bookmark_manager_private::OnDragEnter::Create( |
| 323 *CreateApiBookmarkNodeData(profile_, data))); | 321 CreateApiBookmarkNodeData(profile_, data))); |
| 324 } | 322 } |
| 325 | 323 |
| 326 void BookmarkManagerPrivateDragEventRouter::OnDragOver( | 324 void BookmarkManagerPrivateDragEventRouter::OnDragOver( |
| 327 const BookmarkNodeData& data) { | 325 const BookmarkNodeData& data) { |
| 328 // Intentionally empty since these events happens too often and floods the | 326 // Intentionally empty since these events happens too often and floods the |
| 329 // message queue. We do not need this event for the bookmark manager anyway. | 327 // message queue. We do not need this event for the bookmark manager anyway. |
| 330 } | 328 } |
| 331 | 329 |
| 332 void BookmarkManagerPrivateDragEventRouter::OnDragLeave( | 330 void BookmarkManagerPrivateDragEventRouter::OnDragLeave( |
| 333 const BookmarkNodeData& data) { | 331 const BookmarkNodeData& data) { |
| 334 if (!data.is_valid()) | 332 if (!data.is_valid()) |
| 335 return; | 333 return; |
| 336 DispatchEvent(events::BOOKMARK_MANAGER_PRIVATE_ON_DRAG_LEAVE, | 334 DispatchEvent(events::BOOKMARK_MANAGER_PRIVATE_ON_DRAG_LEAVE, |
| 337 bookmark_manager_private::OnDragLeave::kEventName, | 335 bookmark_manager_private::OnDragLeave::kEventName, |
| 338 bookmark_manager_private::OnDragLeave::Create( | 336 bookmark_manager_private::OnDragLeave::Create( |
| 339 *CreateApiBookmarkNodeData(profile_, data))); | 337 CreateApiBookmarkNodeData(profile_, data))); |
| 340 } | 338 } |
| 341 | 339 |
| 342 void BookmarkManagerPrivateDragEventRouter::OnDrop( | 340 void BookmarkManagerPrivateDragEventRouter::OnDrop( |
| 343 const BookmarkNodeData& data) { | 341 const BookmarkNodeData& data) { |
| 344 if (!data.is_valid()) | 342 if (!data.is_valid()) |
| 345 return; | 343 return; |
| 346 DispatchEvent(events::BOOKMARK_MANAGER_PRIVATE_ON_DROP, | 344 DispatchEvent(events::BOOKMARK_MANAGER_PRIVATE_ON_DROP, |
| 347 bookmark_manager_private::OnDrop::kEventName, | 345 bookmark_manager_private::OnDrop::kEventName, |
| 348 bookmark_manager_private::OnDrop::Create( | 346 bookmark_manager_private::OnDrop::Create( |
| 349 *CreateApiBookmarkNodeData(profile_, data))); | 347 CreateApiBookmarkNodeData(profile_, data))); |
| 350 | 348 |
| 351 // Make a copy that is owned by this instance. | 349 // Make a copy that is owned by this instance. |
| 352 ClearBookmarkNodeData(); | 350 ClearBookmarkNodeData(); |
| 353 bookmark_drag_data_ = data; | 351 bookmark_drag_data_ = data; |
| 354 } | 352 } |
| 355 | 353 |
| 356 const BookmarkNodeData* | 354 const BookmarkNodeData* |
| 357 BookmarkManagerPrivateDragEventRouter::GetBookmarkNodeData() { | 355 BookmarkManagerPrivateDragEventRouter::GetBookmarkNodeData() { |
| 358 if (bookmark_drag_data_.is_valid()) | 356 if (bookmark_drag_data_.is_valid()) |
| 359 return &bookmark_drag_data_; | 357 return &bookmark_drag_data_; |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 | 625 |
| 628 if (params->id.empty()) { | 626 if (params->id.empty()) { |
| 629 BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile()); | 627 BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile()); |
| 630 node = model->root_node(); | 628 node = model->root_node(); |
| 631 } else { | 629 } else { |
| 632 node = GetBookmarkNodeFromId(params->id); | 630 node = GetBookmarkNodeFromId(params->id); |
| 633 if (!node) | 631 if (!node) |
| 634 return false; | 632 return false; |
| 635 } | 633 } |
| 636 | 634 |
| 637 std::vector<linked_ptr<api::bookmarks::BookmarkTreeNode> > nodes; | 635 std::vector<api::bookmarks::BookmarkTreeNode> nodes; |
| 638 bookmarks::ManagedBookmarkService* managed = GetManagedBookmarkService(); | 636 bookmarks::ManagedBookmarkService* managed = GetManagedBookmarkService(); |
| 639 if (params->folders_only) | 637 if (params->folders_only) |
| 640 bookmark_api_helpers::AddNodeFoldersOnly(managed, node, &nodes, true); | 638 bookmark_api_helpers::AddNodeFoldersOnly(managed, node, &nodes, true); |
| 641 else | 639 else |
| 642 bookmark_api_helpers::AddNode(managed, node, &nodes, true); | 640 bookmark_api_helpers::AddNode(managed, node, &nodes, true); |
| 643 results_ = GetSubtree::Results::Create(nodes); | 641 results_ = GetSubtree::Results::Create(nodes); |
| 644 return true; | 642 return true; |
| 645 } | 643 } |
| 646 | 644 |
| 647 bool BookmarkManagerPrivateCanEditFunction::RunOnReady() { | 645 bool BookmarkManagerPrivateCanEditFunction::RunOnReady() { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 663 scoped_ptr<CreateWithMetaInfo::Params> params( | 661 scoped_ptr<CreateWithMetaInfo::Params> params( |
| 664 CreateWithMetaInfo::Params::Create(*args_)); | 662 CreateWithMetaInfo::Params::Create(*args_)); |
| 665 EXTENSION_FUNCTION_VALIDATE(params); | 663 EXTENSION_FUNCTION_VALIDATE(params); |
| 666 | 664 |
| 667 BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile()); | 665 BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile()); |
| 668 const BookmarkNode* node = CreateBookmarkNode( | 666 const BookmarkNode* node = CreateBookmarkNode( |
| 669 model, params->bookmark, ¶ms->meta_info.additional_properties); | 667 model, params->bookmark, ¶ms->meta_info.additional_properties); |
| 670 if (!node) | 668 if (!node) |
| 671 return false; | 669 return false; |
| 672 | 670 |
| 673 scoped_ptr<api::bookmarks::BookmarkTreeNode> result_node( | 671 api::bookmarks::BookmarkTreeNode result_node = |
| 674 bookmark_api_helpers::GetBookmarkTreeNode(GetManagedBookmarkService(), | 672 bookmark_api_helpers::GetBookmarkTreeNode(GetManagedBookmarkService(), |
| 675 node, false, false)); | 673 node, false, false); |
| 676 results_ = CreateWithMetaInfo::Results::Create(*result_node); | 674 results_ = CreateWithMetaInfo::Results::Create(result_node); |
| 677 | 675 |
| 678 return true; | 676 return true; |
| 679 } | 677 } |
| 680 | 678 |
| 681 bool BookmarkManagerPrivateGetMetaInfoFunction::RunOnReady() { | 679 bool BookmarkManagerPrivateGetMetaInfoFunction::RunOnReady() { |
| 682 scoped_ptr<GetMetaInfo::Params> params(GetMetaInfo::Params::Create(*args_)); | 680 scoped_ptr<GetMetaInfo::Params> params(GetMetaInfo::Params::Create(*args_)); |
| 683 EXTENSION_FUNCTION_VALIDATE(params); | 681 EXTENSION_FUNCTION_VALIDATE(params); |
| 684 | 682 |
| 685 if (params->id) { | 683 if (params->id) { |
| 686 const BookmarkNode* node = GetBookmarkNodeFromId(*params->id); | 684 const BookmarkNode* node = GetBookmarkNodeFromId(*params->id); |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 | 846 |
| 849 RedoInfo::Results::Result result; | 847 RedoInfo::Results::Result result; |
| 850 result.enabled = undo_manager->redo_count() > 0; | 848 result.enabled = undo_manager->redo_count() > 0; |
| 851 result.label = base::UTF16ToUTF8(undo_manager->GetRedoLabel()); | 849 result.label = base::UTF16ToUTF8(undo_manager->GetRedoLabel()); |
| 852 | 850 |
| 853 results_ = RedoInfo::Results::Create(result); | 851 results_ = RedoInfo::Results::Create(result); |
| 854 return true; | 852 return true; |
| 855 } | 853 } |
| 856 | 854 |
| 857 } // namespace extensions | 855 } // namespace extensions |
| OLD | NEW |