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

Side by Side Diff: components/policy/core/browser/managed_bookmarks_tracker.cc

Issue 769153007: Managed bookmarks for supervised users (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: new string&icons; rebase Created 5 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/policy/core/browser/managed_bookmarks_tracker.h" 5 #include "components/policy/core/browser/managed_bookmarks_tracker.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 12 matching lines...) Expand all
23 23
24 namespace policy { 24 namespace policy {
25 25
26 const char ManagedBookmarksTracker::kName[] = "name"; 26 const char ManagedBookmarksTracker::kName[] = "name";
27 const char ManagedBookmarksTracker::kUrl[] = "url"; 27 const char ManagedBookmarksTracker::kUrl[] = "url";
28 const char ManagedBookmarksTracker::kChildren[] = "children"; 28 const char ManagedBookmarksTracker::kChildren[] = "children";
29 29
30 ManagedBookmarksTracker::ManagedBookmarksTracker( 30 ManagedBookmarksTracker::ManagedBookmarksTracker(
31 BookmarkModel* model, 31 BookmarkModel* model,
32 PrefService* prefs, 32 PrefService* prefs,
33 bool is_supervised,
33 const GetManagementDomainCallback& callback) 34 const GetManagementDomainCallback& callback)
34 : model_(model), 35 : model_(model),
36 is_supervised_(is_supervised),
35 managed_node_(NULL), 37 managed_node_(NULL),
36 prefs_(prefs), 38 prefs_(prefs),
37 get_management_domain_callback_(callback) { 39 get_management_domain_callback_(callback) {
38 } 40 }
39 41
40 ManagedBookmarksTracker::~ManagedBookmarksTracker() {} 42 ManagedBookmarksTracker::~ManagedBookmarksTracker() {}
41 43
42 scoped_ptr<base::ListValue> 44 scoped_ptr<base::ListValue>
43 ManagedBookmarksTracker::GetInitialManagedBookmarks() { 45 ManagedBookmarksTracker::GetInitialManagedBookmarks() {
44 const base::ListValue* list = 46 const base::ListValue* list = prefs_->GetList(GetPrefName());
45 prefs_->GetList(bookmarks::prefs::kManagedBookmarks);
46 return make_scoped_ptr(list->DeepCopy()); 47 return make_scoped_ptr(list->DeepCopy());
47 } 48 }
48 49
49 // static 50 // static
50 int64 ManagedBookmarksTracker::LoadInitial(BookmarkNode* folder, 51 int64 ManagedBookmarksTracker::LoadInitial(BookmarkNode* folder,
51 const base::ListValue* list, 52 const base::ListValue* list,
52 int64 next_node_id) { 53 int64 next_node_id) {
53 for (size_t i = 0; i < list->GetSize(); ++i) { 54 for (size_t i = 0; i < list->GetSize(); ++i) {
54 // Extract the data for the next bookmark from the |list|. 55 // Extract the data for the next bookmark from the |list|.
55 base::string16 title; 56 base::string16 title;
(...skipping 14 matching lines...) Expand all
70 child->set_date_added(base::Time::Now()); 71 child->set_date_added(base::Time::Now());
71 } 72 }
72 } 73 }
73 74
74 return next_node_id; 75 return next_node_id;
75 } 76 }
76 77
77 void ManagedBookmarksTracker::Init(BookmarkPermanentNode* managed_node) { 78 void ManagedBookmarksTracker::Init(BookmarkPermanentNode* managed_node) {
78 managed_node_ = managed_node; 79 managed_node_ = managed_node;
79 registrar_.Init(prefs_); 80 registrar_.Init(prefs_);
80 registrar_.Add(bookmarks::prefs::kManagedBookmarks, 81 registrar_.Add(GetPrefName(),
81 base::Bind(&ManagedBookmarksTracker::ReloadManagedBookmarks, 82 base::Bind(&ManagedBookmarksTracker::ReloadManagedBookmarks,
82 base::Unretained(this))); 83 base::Unretained(this)));
83 // Reload now just in case something changed since the initial load started. 84 // Reload now just in case something changed since the initial load started.
84 ReloadManagedBookmarks(); 85 ReloadManagedBookmarks();
85 } 86 }
86 87
88 // static
89 const char* ManagedBookmarksTracker::GetPrefName(bool is_supervised) {
90 return is_supervised ? bookmarks::prefs::kSupervisedBookmarks
91 : bookmarks::prefs::kManagedBookmarks;
92 }
93
94 const char* ManagedBookmarksTracker::GetPrefName() const {
95 return GetPrefName(is_supervised_);
96 }
97
98 base::string16 ManagedBookmarksTracker::GetBookmarksFolderTitle() const {
99 if (is_supervised_) {
100 return l10n_util::GetStringUTF16(
101 IDS_BOOKMARK_BAR_SUPERVISED_FOLDER_DEFAULT_NAME);
102 } else {
103 std::string domain = get_management_domain_callback_.Run();
bartfab (slow) 2015/01/26 15:40:13 Nit: const.
Marc Treib 2015/01/26 16:16:47 Done.
104 if (domain.empty()) {
105 return l10n_util::GetStringUTF16(
106 IDS_BOOKMARK_BAR_MANAGED_FOLDER_DEFAULT_NAME);
107 } else {
108 return l10n_util::GetStringFUTF16(
109 IDS_BOOKMARK_BAR_MANAGED_FOLDER_DOMAIN_NAME,
110 base::UTF8ToUTF16(domain));
111 }
112 }
113 }
114
87 void ManagedBookmarksTracker::ReloadManagedBookmarks() { 115 void ManagedBookmarksTracker::ReloadManagedBookmarks() {
88 // Update the managed bookmarks folder title, in case the user just signed 116 // In case the user just signed into or out of a managed account.
bartfab (slow) 2015/01/26 15:40:14 Nit: s/a managed/the/ ("managed accounts" refers t
Marc Treib 2015/01/26 16:16:47 Done.
89 // into or out of a managed account. 117 model_->SetTitle(managed_node_, GetBookmarksFolderTitle());
90 base::string16 title;
91 std::string domain = get_management_domain_callback_.Run();
92 if (domain.empty()) {
93 title =
94 l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MANAGED_FOLDER_DEFAULT_NAME);
95 } else {
96 title = l10n_util::GetStringFUTF16(
97 IDS_BOOKMARK_BAR_MANAGED_FOLDER_DOMAIN_NAME, base::UTF8ToUTF16(domain));
98 }
99 model_->SetTitle(managed_node_, title);
100 118
101 // Recursively update all the managed bookmarks and folders. 119 // Recursively update all the managed bookmarks and folders.
102 const base::ListValue* list = 120 const base::ListValue* list = prefs_->GetList(GetPrefName());
103 prefs_->GetList(bookmarks::prefs::kManagedBookmarks);
104 UpdateBookmarks(managed_node_, list); 121 UpdateBookmarks(managed_node_, list);
105 122
106 // The managed bookmarks folder isn't visible when that policy isn't present. 123 // The managed bookmarks folder isn't visible when that policy isn't present.
107 managed_node_->set_visible(!managed_node_->empty()); 124 managed_node_->set_visible(!managed_node_->empty());
108 } 125 }
109 126
110 void ManagedBookmarksTracker::UpdateBookmarks(const BookmarkNode* folder, 127 void ManagedBookmarksTracker::UpdateBookmarks(const BookmarkNode* folder,
111 const base::ListValue* list) { 128 const base::ListValue* list) {
112 int folder_index = 0; 129 int folder_index = 0;
113 for (size_t i = 0; i < list->GetSize(); ++i) { 130 for (size_t i = 0; i < list->GetSize(); ++i) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 *children = NULL; 187 *children = NULL;
171 const base::DictionaryValue* dict = NULL; 188 const base::DictionaryValue* dict = NULL;
172 if (!list->GetDictionary(index, &dict) || 189 if (!list->GetDictionary(index, &dict) ||
173 !dict->GetString(kName, title) || 190 !dict->GetString(kName, title) ||
174 (!dict->GetString(kUrl, &spec) && 191 (!dict->GetString(kUrl, &spec) &&
175 !dict->GetList(kChildren, children))) { 192 !dict->GetList(kChildren, children))) {
176 // Should never happen after policy validation. 193 // Should never happen after policy validation.
177 NOTREACHED(); 194 NOTREACHED();
178 return false; 195 return false;
179 } 196 }
180 if (!*children) 197 if (!*children) {
181 *url = GURL(spec); 198 *url = GURL(spec);
199 DCHECK(url->is_valid());
bartfab (slow) 2015/01/26 15:40:14 Nit: #include "base/logging.h"
Marc Treib 2015/01/26 16:16:47 Done.
200 }
182 return true; 201 return true;
183 } 202 }
184 203
185 } // namespace policy 204 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698