OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/android/bookmarks/bookmarks_bridge.h" | 5 #include "chrome/browser/android/bookmarks/bookmarks_bridge.h" |
6 | 6 |
7 #include "base/android/jni_array.h" | 7 #include "base/android/jni_array.h" |
8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
9 #include "base/containers/stack_container.h" | 9 #include "base/containers/stack_container.h" |
10 #include "base/i18n/string_compare.h" | 10 #include "base/i18n/string_compare.h" |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 jboolean get_normal, | 224 jboolean get_normal, |
225 jobject j_result_obj) { | 225 jobject j_result_obj) { |
226 DCHECK(IsLoaded()); | 226 DCHECK(IsLoaded()); |
227 std::vector<const BookmarkNode*> top_level_folders; | 227 std::vector<const BookmarkNode*> top_level_folders; |
228 | 228 |
229 if (get_special) { | 229 if (get_special) { |
230 if (client_->managed_node() && | 230 if (client_->managed_node() && |
231 client_->managed_node()->child_count() > 0) { | 231 client_->managed_node()->child_count() > 0) { |
232 top_level_folders.push_back(client_->managed_node()); | 232 top_level_folders.push_back(client_->managed_node()); |
233 } | 233 } |
| 234 if (client_->supervised_node() && |
| 235 client_->supervised_node()->child_count() > 0) { |
| 236 top_level_folders.push_back(client_->supervised_node()); |
| 237 } |
234 if (partner_bookmarks_shim_->HasPartnerBookmarks()) { | 238 if (partner_bookmarks_shim_->HasPartnerBookmarks()) { |
235 top_level_folders.push_back( | 239 top_level_folders.push_back( |
236 partner_bookmarks_shim_->GetPartnerBookmarksRoot()); | 240 partner_bookmarks_shim_->GetPartnerBookmarksRoot()); |
237 } | 241 } |
238 } | 242 } |
239 std::size_t special_count = top_level_folders.size(); | 243 std::size_t special_count = top_level_folders.size(); |
240 | 244 |
241 if (get_normal) { | 245 if (get_normal) { |
242 DCHECK_EQ(bookmark_model_->root_node()->child_count(), 4); | 246 DCHECK_EQ(bookmark_model_->root_node()->child_count(), 4); |
243 | 247 |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 for (std::list<const BookmarkNode*>::iterator folder_iter = folders.begin(); | 466 for (std::list<const BookmarkNode*>::iterator folder_iter = folders.begin(); |
463 folder_iter != folders.end(); ++folder_iter) { | 467 folder_iter != folders.end(); ++folder_iter) { |
464 if (*folder_iter == NULL) | 468 if (*folder_iter == NULL) |
465 continue; | 469 continue; |
466 | 470 |
467 std::list<const BookmarkNode*>::iterator insert_iter = folder_iter; | 471 std::list<const BookmarkNode*>::iterator insert_iter = folder_iter; |
468 ++insert_iter; | 472 ++insert_iter; |
469 | 473 |
470 for (int i = 0; i < (*folder_iter)->child_count(); ++i) { | 474 for (int i = 0; i < (*folder_iter)->child_count(); ++i) { |
471 const BookmarkNode* child = (*folder_iter)->GetChild(i); | 475 const BookmarkNode* child = (*folder_iter)->GetChild(i); |
472 if (!IsReachable(child) || client_->IsDescendantOfManagedNode(child)) | 476 if (!IsReachable(child) || |
| 477 client_->IsDescendantOfManagedOrSupervisedNode(child)) { |
473 continue; | 478 continue; |
| 479 } |
474 | 480 |
475 if (child->is_folder()) { | 481 if (child->is_folder()) { |
476 insert_iter = folders.insert(insert_iter, child); | 482 insert_iter = folders.insert(insert_iter, child); |
477 } else { | 483 } else { |
478 result.push_back(child); | 484 result.push_back(child); |
479 } | 485 } |
480 } | 486 } |
481 } | 487 } |
482 | 488 |
483 std::sort( | 489 std::sort( |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 bool BookmarksBridge::IsLoaded() const { | 870 bool BookmarksBridge::IsLoaded() const { |
865 return (bookmark_model_->loaded() && partner_bookmarks_shim_->IsLoaded()); | 871 return (bookmark_model_->loaded() && partner_bookmarks_shim_->IsLoaded()); |
866 } | 872 } |
867 | 873 |
868 bool BookmarksBridge::IsFolderAvailable( | 874 bool BookmarksBridge::IsFolderAvailable( |
869 const BookmarkNode* folder) const { | 875 const BookmarkNode* folder) const { |
870 // The managed bookmarks folder is not shown if there are no bookmarks | 876 // The managed bookmarks folder is not shown if there are no bookmarks |
871 // configured via policy. | 877 // configured via policy. |
872 if (folder == client_->managed_node() && folder->empty()) | 878 if (folder == client_->managed_node() && folder->empty()) |
873 return false; | 879 return false; |
| 880 // Similarly, the supervised bookmarks folder is not shown if there are no |
| 881 // bookmarks configured by the custodian. |
| 882 if (folder == client_->supervised_node() && folder->empty()) |
| 883 return false; |
874 | 884 |
875 SigninManager* signin = SigninManagerFactory::GetForProfile( | 885 SigninManager* signin = SigninManagerFactory::GetForProfile( |
876 profile_->GetOriginalProfile()); | 886 profile_->GetOriginalProfile()); |
877 return (folder->type() != BookmarkNode::BOOKMARK_BAR && | 887 return (folder->type() != BookmarkNode::BOOKMARK_BAR && |
878 folder->type() != BookmarkNode::OTHER_NODE) || | 888 folder->type() != BookmarkNode::OTHER_NODE) || |
879 (signin && signin->IsAuthenticated()); | 889 (signin && signin->IsAuthenticated()); |
880 } | 890 } |
881 | 891 |
882 void BookmarksBridge::NotifyIfDoneLoading() { | 892 void BookmarksBridge::NotifyIfDoneLoading() { |
883 if (!IsLoaded()) | 893 if (!IsLoaded()) |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1050 BookmarkModelChanged(); | 1060 BookmarkModelChanged(); |
1051 } | 1061 } |
1052 | 1062 |
1053 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { | 1063 void BookmarksBridge::PartnerShimLoaded(PartnerBookmarksShim* shim) { |
1054 NotifyIfDoneLoading(); | 1064 NotifyIfDoneLoading(); |
1055 } | 1065 } |
1056 | 1066 |
1057 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { | 1067 void BookmarksBridge::ShimBeingDeleted(PartnerBookmarksShim* shim) { |
1058 partner_bookmarks_shim_ = NULL; | 1068 partner_bookmarks_shim_ = NULL; |
1059 } | 1069 } |
OLD | NEW |