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

Unified Diff: components/bookmarks/browser/bookmark_utils.cc

Issue 317333004: Added BookmarkClient::CanBeEditedByUser. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: added TODO 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: components/bookmarks/browser/bookmark_utils.cc
diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
index bff1d49a681a474e32ebd9c4db61105058419a8c..54a226f1faddf76494ecafe5a39f702a16cb3f81 100644
--- a/components/bookmarks/browser/bookmark_utils.cc
+++ b/components/bookmarks/browser/bookmark_utils.cc
@@ -14,6 +14,7 @@
#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
+#include "components/bookmarks/browser/bookmark_client.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/scoped_group_bookmark_actions.h"
#include "components/bookmarks/common/bookmark_pref_names.h"
@@ -203,13 +204,13 @@ void PasteFromClipboard(BookmarkModel* model,
CloneBookmarkNode(model, bookmark_data.elements, parent, index, true);
}
-bool CanPasteFromClipboard(const BookmarkNode* node) {
- if (!node)
+bool CanPasteFromClipboard(BookmarkModel* model, const BookmarkNode* node) {
+ if (!node || !model->client()->CanBeEditedByUser(node))
return false;
return BookmarkNodeData::ClipboardContainsBookmarks();
}
-std::vector<const BookmarkNode*> GetMostRecentlyModifiedFolders(
+std::vector<const BookmarkNode*> GetMostRecentlyModifiedUserFolders(
BookmarkModel* model,
size_t max_count) {
std::vector<const BookmarkNode*> nodes;
@@ -218,6 +219,8 @@ std::vector<const BookmarkNode*> GetMostRecentlyModifiedFolders(
while (iterator.has_next()) {
const BookmarkNode* parent = iterator.Next();
+ if (!model->client()->CanBeEditedByUser(parent))
+ continue;
if (parent->is_folder() && parent->date_folder_modified() > Time()) {
if (max_count == 0) {
nodes.push_back(parent);
@@ -242,7 +245,7 @@ std::vector<const BookmarkNode*> GetMostRecentlyModifiedFolders(
for (int i = 0; i < root_node->child_count(); ++i) {
const BookmarkNode* node = root_node->GetChild(i);
- if (node->IsVisible() &&
+ if (node->IsVisible() && model->client()->CanBeEditedByUser(node) &&
std::find(nodes.begin(), nodes.end(), node) == nodes.end()) {
nodes.push_back(node);
@@ -376,11 +379,8 @@ void DeleteBookmarkFolders(BookmarkModel* model,
void AddIfNotBookmarked(BookmarkModel* model,
const GURL& url,
const base::string16& title) {
- std::vector<const BookmarkNode*> bookmarks;
- model->GetNodesByURL(url, &bookmarks);
- if (!bookmarks.empty())
- return; // Nothing to do, a bookmark with that url already exists.
-
+ if (IsBookmarkedByUser(model, url))
+ return; // Nothing to do, a user bookmark with that url already exists.
model->client()->RecordAction(base::UserMetricsAction("BookmarkAdded"));
const BookmarkNode* parent = model->GetParentForNewNodes();
model->AddURL(parent, parent->child_count(), title, url);
@@ -390,11 +390,11 @@ void RemoveAllBookmarks(BookmarkModel* model, const GURL& url) {
std::vector<const BookmarkNode*> bookmarks;
model->GetNodesByURL(url, &bookmarks);
- // Remove all the bookmarks.
+ // Remove all the user bookmarks.
for (size_t i = 0; i < bookmarks.size(); ++i) {
const BookmarkNode* node = bookmarks[i];
int index = node->parent()->GetIndexOf(node);
- if (index > -1)
+ if (index > -1 && model->client()->CanBeEditedByUser(node))
model->Remove(node->parent(), index);
}
}
@@ -415,6 +415,25 @@ base::string16 CleanUpTitleForMatching(const base::string16& title) {
return base::i18n::ToLower(title.substr(0u, kCleanedUpTitleMaxLength));
}
+bool CanAllBeEditedByUser(BookmarkClient* client,
+ const std::vector<const BookmarkNode*>& nodes) {
+ for (size_t i = 0; i < nodes.size(); ++i) {
+ if (!client->CanBeEditedByUser(nodes[i]))
+ return false;
+ }
+ return true;
+}
+
+bool IsBookmarkedByUser(BookmarkModel* model, const GURL& url) {
+ std::vector<const BookmarkNode*> nodes;
+ model->GetNodesByURL(url, &nodes);
+ for (size_t i = 0; i < nodes.size(); ++i) {
+ if (model->client()->CanBeEditedByUser(nodes[i]))
+ return true;
+ }
+ return false;
+}
+
} // namespace bookmark_utils
const BookmarkNode* GetBookmarkNodeByID(const BookmarkModel* model, int64 id) {
« no previous file with comments | « components/bookmarks/browser/bookmark_utils.h ('k') | components/bookmarks/browser/bookmark_utils_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698