Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4235)

Unified Diff: chrome/browser/extensions/api/bookmarks/bookmarks_api.cc

Issue 308273002: Made the bookmarks extension APIs aware of managed bookmarks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..3b7b29c5351e32649d1a55979094ec049baa112c 100644
--- a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
+++ b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
@@ -22,6 +22,7 @@
#include "base/time/time.h"
#include "chrome/browser/bookmarks/bookmark_html_writer.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
+#include "chrome/browser/bookmarks/chrome_bookmark_client.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/api/bookmarks/bookmark_api_constants.h"
#include "chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.h"
@@ -117,6 +118,10 @@ bool BookmarksFunction::RunAsync() {
return true;
}
+ChromeBookmarkClient* BookmarksFunction::GetChromeBookmarkClient() {
+ return BookmarkModelFactory::GetChromeBookmarkClientForProfile(GetProfile());
+}
+
bool BookmarksFunction::GetBookmarkIdAsInt64(const std::string& id_string,
int64* id) {
if (base::StringToInt64(id_string, id))
@@ -154,14 +159,8 @@ const BookmarkNode* BookmarksFunction::CreateBookmarkNode(
return NULL;
}
const BookmarkNode* parent = GetBookmarkNodeByID(model, parentId);
- if (!parent) {
- error_ = keys::kNoParentError;
+ if (!CanBeModified(parent))
return NULL;
- }
- if (parent->is_root()) { // Can't create children of the root.
- error_ = keys::kModifySpecialError;
- return NULL;
- }
int index;
if (!details.index.get()) { // Optional (defaults to end).
@@ -211,6 +210,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;
+ }
+ ChromeBookmarkClient* client = GetChromeBookmarkClient();
+ if (client->IsDescendantOfManagedNode(node)) {
+ error_ = keys::kModifyManagedError;
+ return false;
+ }
+ return true;
+}
+
void BookmarksFunction::BookmarkModelChanged() {
}
@@ -566,8 +582,8 @@ bool BookmarksRemoveFunction::RunOnReady() {
if (name() == BookmarksRemoveTreeFunction::function_name())
recursive = true;
- BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile());
- if (!bookmark_api_helpers::RemoveNode(model, id, recursive, &error_))
+ ChromeBookmarkClient* client = GetChromeBookmarkClient();
+ if (!bookmark_api_helpers::RemoveNode(client, id, recursive, &error_))
return false;
return true;
@@ -630,15 +646,8 @@ bool BookmarksMoveFunction::RunOnReady() {
parent = GetBookmarkNodeByID(model, parentId);
}
- if (!parent) {
- error_ = keys::kNoParentError;
- // TODO(erikkay) return an error message.
- return false;
- }
- if (parent == model->root_node()) {
- error_ = keys::kModifySpecialError;
+ if (!CanBeModified(parent) || !CanBeModified(node))
return false;
- }
int index;
if (params->destination.index.get()) { // Optional (defaults to end).
@@ -695,7 +704,7 @@ bool BookmarksUpdateFunction::RunOnReady() {
}
const BookmarkNode* node = GetBookmarkNodeFromId(params->id);
- if (!node)
+ if (!CanBeModified(node))
return false;
BookmarkModel* model = BookmarkModelFactory::GetForProfile(GetProfile());
@@ -896,7 +905,7 @@ void BookmarksMoveFunction::GetQuotaLimitHeuristics(
void BookmarksUpdateFunction::GetQuotaLimitHeuristics(
QuotaLimitHeuristics* heuristics) const {
BookmarksQuotaLimitFactory::Build<BookmarksUpdateFunction>(heuristics);
-};
+}
void BookmarksCreateFunction::GetQuotaLimitHeuristics(
QuotaLimitHeuristics* heuristics) const {

Powered by Google App Engine
This is Rietveld 408576698