Chromium Code Reviews| Index: chrome/browser/extensions/api/bookmarks/bookmarks_api.cc |
| diff --git a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc |
| index 505fd0a5d65bf4b4aee80b21255c86aa5ae3dfb7..af5bb89d12f16c0220e832245db84fa640a1b6a1 100644 |
| --- a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc |
| +++ b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc |
| @@ -154,14 +154,8 @@ const BookmarkNode* BookmarksFunction::CreateBookmarkNode( |
| return NULL; |
| } |
| const BookmarkNode* parent = GetBookmarkNodeByID(model, parentId); |
| - if (!parent) { |
| - error_ = keys::kNoParentError; |
| - return NULL; |
| - } |
| - if (parent->is_root()) { // Can't create children of the root. |
| - error_ = keys::kModifySpecialError; |
| + if (!CanBeModified(parent)) |
| return NULL; |
| - } |
| int index; |
| if (!details.index.get()) { // Optional (defaults to end). |
| @@ -211,6 +205,23 @@ bool BookmarksFunction::EditBookmarksEnabled() { |
| return false; |
| } |
| +bool BookmarksFunction::CanBeModified(const BookmarkNode* node) { |
| + if (!node) { |
| + error_ = keys::kNoParentError; |
| + return false; |
| + } |
| + if (node->is_root()) { |
| + error_ = keys::kModifySpecialError; |
| + return false; |
| + } |
| + BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile()); |
| + if (model->IsManaged(node)) { |
| + error_ = keys::kModifyManagedError; |
| + return false; |
| + } |
| + return true; |
| +} |
| + |
| void BookmarksFunction::BookmarkModelChanged() { |
| } |
| @@ -630,13 +641,10 @@ bool BookmarksMoveFunction::RunOnReady() { |
| parent = GetBookmarkNodeByID(model, parentId); |
| } |
| - if (!parent) { |
| - error_ = keys::kNoParentError; |
| - // TODO(erikkay) return an error message. |
| + if (!CanBeModified(parent)) |
| return false; |
| - } |
| - if (parent == model->root_node()) { |
| - error_ = keys::kModifySpecialError; |
| + if (model->IsManaged(node)) { |
|
not at google - send to devlin
2014/06/03 18:09:16
why not !CanBeModified(node)?
Joao da Silva
2014/06/05 17:10:32
I thought some of the checks in CanBeModified are
|
| + error_ = keys::kModifyManagedError; |
| return false; |
| } |
| @@ -695,7 +703,7 @@ bool BookmarksUpdateFunction::RunOnReady() { |
| } |
| const BookmarkNode* node = GetBookmarkNodeFromId(params->id); |
| - if (!node) |
| + if (!CanBeModified(node)) |
| return false; |
| BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile()); |
| @@ -896,7 +904,7 @@ void BookmarksMoveFunction::GetQuotaLimitHeuristics( |
| void BookmarksUpdateFunction::GetQuotaLimitHeuristics( |
| QuotaLimitHeuristics* heuristics) const { |
| BookmarksQuotaLimitFactory::Build<BookmarksUpdateFunction>(heuristics); |
| -}; |
| +} |
| void BookmarksCreateFunction::GetQuotaLimitHeuristics( |
| QuotaLimitHeuristics* heuristics) const { |