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

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: Android fix; rebase Created 5 years, 10 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"
11 #include "base/callback.h" 11 #include "base/callback.h"
12 #include "base/logging.h"
12 #include "base/prefs/pref_service.h" 13 #include "base/prefs/pref_service.h"
13 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
14 #include "base/values.h" 15 #include "base/values.h"
15 #include "components/bookmarks/browser/bookmark_model.h" 16 #include "components/bookmarks/browser/bookmark_model.h"
16 #include "components/bookmarks/browser/bookmark_node.h" 17 #include "components/bookmarks/browser/bookmark_node.h"
17 #include "components/bookmarks/common/bookmark_pref_names.h" 18 #include "components/bookmarks/common/bookmark_pref_names.h"
18 #include "grit/components_strings.h" 19 #include "grit/components_strings.h"
19 #include "ui/base/l10n/l10n_util.h" 20 #include "ui/base/l10n/l10n_util.h"
20 #include "url/gurl.h" 21 #include "url/gurl.h"
21 22
22 using bookmarks::BookmarkModel; 23 using bookmarks::BookmarkModel;
23 24
24 namespace policy { 25 namespace policy {
25 26
26 const char ManagedBookmarksTracker::kName[] = "name"; 27 const char ManagedBookmarksTracker::kName[] = "name";
27 const char ManagedBookmarksTracker::kUrl[] = "url"; 28 const char ManagedBookmarksTracker::kUrl[] = "url";
28 const char ManagedBookmarksTracker::kChildren[] = "children"; 29 const char ManagedBookmarksTracker::kChildren[] = "children";
29 30
30 ManagedBookmarksTracker::ManagedBookmarksTracker( 31 ManagedBookmarksTracker::ManagedBookmarksTracker(
31 BookmarkModel* model, 32 BookmarkModel* model,
32 PrefService* prefs, 33 PrefService* prefs,
34 bool is_supervised,
33 const GetManagementDomainCallback& callback) 35 const GetManagementDomainCallback& callback)
34 : model_(model), 36 : model_(model),
37 is_supervised_(is_supervised),
35 managed_node_(NULL), 38 managed_node_(NULL),
36 prefs_(prefs), 39 prefs_(prefs),
37 get_management_domain_callback_(callback) { 40 get_management_domain_callback_(callback) {
38 } 41 }
39 42
40 ManagedBookmarksTracker::~ManagedBookmarksTracker() {} 43 ManagedBookmarksTracker::~ManagedBookmarksTracker() {}
41 44
42 scoped_ptr<base::ListValue> 45 scoped_ptr<base::ListValue>
43 ManagedBookmarksTracker::GetInitialManagedBookmarks() { 46 ManagedBookmarksTracker::GetInitialManagedBookmarks() {
44 const base::ListValue* list = 47 const base::ListValue* list = prefs_->GetList(GetPrefName());
45 prefs_->GetList(bookmarks::prefs::kManagedBookmarks);
46 return make_scoped_ptr(list->DeepCopy()); 48 return make_scoped_ptr(list->DeepCopy());
47 } 49 }
48 50
49 // static 51 // static
50 int64 ManagedBookmarksTracker::LoadInitial(BookmarkNode* folder, 52 int64 ManagedBookmarksTracker::LoadInitial(BookmarkNode* folder,
51 const base::ListValue* list, 53 const base::ListValue* list,
52 int64 next_node_id) { 54 int64 next_node_id) {
53 for (size_t i = 0; i < list->GetSize(); ++i) { 55 for (size_t i = 0; i < list->GetSize(); ++i) {
54 // Extract the data for the next bookmark from the |list|. 56 // Extract the data for the next bookmark from the |list|.
55 base::string16 title; 57 base::string16 title;
(...skipping 14 matching lines...) Expand all
70 child->set_date_added(base::Time::Now()); 72 child->set_date_added(base::Time::Now());
71 } 73 }
72 } 74 }
73 75
74 return next_node_id; 76 return next_node_id;
75 } 77 }
76 78
77 void ManagedBookmarksTracker::Init(BookmarkPermanentNode* managed_node) { 79 void ManagedBookmarksTracker::Init(BookmarkPermanentNode* managed_node) {
78 managed_node_ = managed_node; 80 managed_node_ = managed_node;
79 registrar_.Init(prefs_); 81 registrar_.Init(prefs_);
80 registrar_.Add(bookmarks::prefs::kManagedBookmarks, 82 registrar_.Add(GetPrefName(),
81 base::Bind(&ManagedBookmarksTracker::ReloadManagedBookmarks, 83 base::Bind(&ManagedBookmarksTracker::ReloadManagedBookmarks,
82 base::Unretained(this))); 84 base::Unretained(this)));
83 // Reload now just in case something changed since the initial load started. 85 // Reload now just in case something changed since the initial load started.
84 ReloadManagedBookmarks(); 86 ReloadManagedBookmarks();
85 } 87 }
86 88
89 // static
90 const char* ManagedBookmarksTracker::GetPrefName(bool is_supervised) {
91 return is_supervised ? bookmarks::prefs::kSupervisedBookmarks
92 : bookmarks::prefs::kManagedBookmarks;
93 }
94
95 const char* ManagedBookmarksTracker::GetPrefName() const {
96 return GetPrefName(is_supervised_);
97 }
98
99 base::string16 ManagedBookmarksTracker::GetBookmarksFolderTitle() const {
100 if (is_supervised_) {
101 return l10n_util::GetStringUTF16(
102 IDS_BOOKMARK_BAR_SUPERVISED_FOLDER_DEFAULT_NAME);
103 } else {
104 const std::string domain = get_management_domain_callback_.Run();
105 if (domain.empty()) {
106 return l10n_util::GetStringUTF16(
107 IDS_BOOKMARK_BAR_MANAGED_FOLDER_DEFAULT_NAME);
108 } else {
109 return l10n_util::GetStringFUTF16(
110 IDS_BOOKMARK_BAR_MANAGED_FOLDER_DOMAIN_NAME,
111 base::UTF8ToUTF16(domain));
112 }
113 }
114 }
115
87 void ManagedBookmarksTracker::ReloadManagedBookmarks() { 116 void ManagedBookmarksTracker::ReloadManagedBookmarks() {
88 // Update the managed bookmarks folder title, in case the user just signed 117 // In case the user just signed into or out of the account.
89 // into or out of a managed account. 118 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 119
101 // Recursively update all the managed bookmarks and folders. 120 // Recursively update all the managed bookmarks and folders.
102 const base::ListValue* list = 121 const base::ListValue* list = prefs_->GetList(GetPrefName());
103 prefs_->GetList(bookmarks::prefs::kManagedBookmarks);
104 UpdateBookmarks(managed_node_, list); 122 UpdateBookmarks(managed_node_, list);
105 123
106 // The managed bookmarks folder isn't visible when that policy isn't present. 124 // The managed bookmarks folder isn't visible when that pref isn't present.
107 managed_node_->set_visible(!managed_node_->empty()); 125 managed_node_->set_visible(!managed_node_->empty());
108 } 126 }
109 127
110 void ManagedBookmarksTracker::UpdateBookmarks(const BookmarkNode* folder, 128 void ManagedBookmarksTracker::UpdateBookmarks(const BookmarkNode* folder,
111 const base::ListValue* list) { 129 const base::ListValue* list) {
112 int folder_index = 0; 130 int folder_index = 0;
113 for (size_t i = 0; i < list->GetSize(); ++i) { 131 for (size_t i = 0; i < list->GetSize(); ++i) {
114 // Extract the data for the next bookmark from the |list|. 132 // Extract the data for the next bookmark from the |list|.
115 base::string16 title; 133 base::string16 title;
116 GURL url; 134 GURL url;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 *children = NULL; 188 *children = NULL;
171 const base::DictionaryValue* dict = NULL; 189 const base::DictionaryValue* dict = NULL;
172 if (!list->GetDictionary(index, &dict) || 190 if (!list->GetDictionary(index, &dict) ||
173 !dict->GetString(kName, title) || 191 !dict->GetString(kName, title) ||
174 (!dict->GetString(kUrl, &spec) && 192 (!dict->GetString(kUrl, &spec) &&
175 !dict->GetList(kChildren, children))) { 193 !dict->GetList(kChildren, children))) {
176 // Should never happen after policy validation. 194 // Should never happen after policy validation.
177 NOTREACHED(); 195 NOTREACHED();
178 return false; 196 return false;
179 } 197 }
180 if (!*children) 198 if (!*children) {
181 *url = GURL(spec); 199 *url = GURL(spec);
200 DCHECK(url->is_valid());
201 }
182 return true; 202 return true;
183 } 203 }
184 204
185 } // namespace policy 205 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698