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 { |