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

Side by Side Diff: chrome/browser/android/bookmarks/partner_bookmarks_shim.cc

Issue 215693002: [Android] Allow non-editable partner bookmarks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Forgot to revert sanity-check. Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
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/partner_bookmarks_shim.h" 5 #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/bookmarks/bookmark_model.h" 10 #include "chrome/browser/bookmarks/bookmark_model.h"
(...skipping 24 matching lines...) Expand all
35 LAZY_INSTANCE_INITIALIZER; 35 LAZY_INSTANCE_INITIALIZER;
36 36
37 const void* kPartnerBookmarksShimUserDataKey = 37 const void* kPartnerBookmarksShimUserDataKey =
38 &kPartnerBookmarksShimUserDataKey; 38 &kPartnerBookmarksShimUserDataKey;
39 39
40 // Dictionary keys for entries in the kPartnerBookmarksMapping pref. 40 // Dictionary keys for entries in the kPartnerBookmarksMapping pref.
41 static const char kMappingUrl[] = "url"; 41 static const char kMappingUrl[] = "url";
42 static const char kMappingProviderTitle[] = "provider_title"; 42 static const char kMappingProviderTitle[] = "provider_title";
43 static const char kMappingTitle[] = "mapped_title"; 43 static const char kMappingTitle[] = "mapped_title";
44 44
45 static bool g_disable_partner_bookmarks_editing = false;
46
45 } // namespace 47 } // namespace
46 48
47 // static 49 // static
48 PartnerBookmarksShim* PartnerBookmarksShim::BuildForBrowserContext( 50 PartnerBookmarksShim* PartnerBookmarksShim::BuildForBrowserContext(
49 content::BrowserContext* browser_context) { 51 content::BrowserContext* browser_context) {
50 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 52 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
51 53
52 PartnerBookmarksShim* data = 54 PartnerBookmarksShim* data =
53 reinterpret_cast<PartnerBookmarksShim*>( 55 reinterpret_cast<PartnerBookmarksShim*>(
54 browser_context->GetUserData(kPartnerBookmarksShimUserDataKey)); 56 browser_context->GetUserData(kPartnerBookmarksShimUserDataKey));
55 if (data) 57 if (data)
56 return data; 58 return data;
57 59
58 data = new PartnerBookmarksShim( 60 data = new PartnerBookmarksShim(
59 Profile::FromBrowserContext(browser_context)->GetPrefs()); 61 Profile::FromBrowserContext(browser_context)->GetPrefs());
60 browser_context->SetUserData(kPartnerBookmarksShimUserDataKey, data); 62 browser_context->SetUserData(kPartnerBookmarksShimUserDataKey, data);
61 data->ReloadNodeMapping(); 63 data->ReloadNodeMapping();
62 return data; 64 return data;
63 } 65 }
64 66
65 // static 67 // static
66 void PartnerBookmarksShim::RegisterProfilePrefs( 68 void PartnerBookmarksShim::RegisterProfilePrefs(
67 user_prefs::PrefRegistrySyncable* registry) { 69 user_prefs::PrefRegistrySyncable* registry) {
68 registry->RegisterListPref( 70 registry->RegisterListPref(
69 prefs::kPartnerBookmarkMappings, 71 prefs::kPartnerBookmarkMappings,
70 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 72 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
71 } 73 }
72 74
75 // static
76 void PartnerBookmarksShim::DisablePartnerBookmarksEditing() {
77 g_disable_partner_bookmarks_editing = true;
78 }
79
73 bool PartnerBookmarksShim::IsLoaded() const { 80 bool PartnerBookmarksShim::IsLoaded() const {
74 return g_partner_model_keeper.Get().loaded; 81 return g_partner_model_keeper.Get().loaded;
75 } 82 }
76 83
77 bool PartnerBookmarksShim::HasPartnerBookmarks() const { 84 bool PartnerBookmarksShim::HasPartnerBookmarks() const {
78 DCHECK(IsLoaded()); 85 DCHECK(IsLoaded());
79 return g_partner_model_keeper.Get().partner_bookmarks_root.get() != NULL; 86 return g_partner_model_keeper.Get().partner_bookmarks_root.get() != NULL;
80 } 87 }
81 88
82 bool PartnerBookmarksShim::IsReachable(const BookmarkNode* node) const { 89 bool PartnerBookmarksShim::IsReachable(const BookmarkNode* node) const {
83 DCHECK(IsPartnerBookmark(node)); 90 DCHECK(IsPartnerBookmark(node));
84 if (!HasPartnerBookmarks()) 91 if (!HasPartnerBookmarks())
85 return false; 92 return false;
86 for (const BookmarkNode* i = node; i != NULL; i = i->parent()) { 93 if (!g_disable_partner_bookmarks_editing) {
87 const NodeRenamingMapKey key(i->url(), i->GetTitle()); 94 for (const BookmarkNode* i = node; i != NULL; i = i->parent()) {
88 NodeRenamingMap::const_iterator remap = node_rename_remove_map_.find(key); 95 const NodeRenamingMapKey key(i->url(), i->GetTitle());
89 if (remap != node_rename_remove_map_.end() && remap->second.empty()) 96 NodeRenamingMap::const_iterator remap = node_rename_remove_map_.find(key);
90 return false; 97 if (remap != node_rename_remove_map_.end() && remap->second.empty())
98 return false;
99 }
91 } 100 }
92 return true; 101 return true;
93 } 102 }
94 103
104 bool PartnerBookmarksShim::IsEditable(const BookmarkNode* node) const {
105 DCHECK(IsPartnerBookmark(node));
106 if (!HasPartnerBookmarks())
107 return false;
108 if (g_disable_partner_bookmarks_editing)
109 return false;
110 return true;
111 }
112
95 void PartnerBookmarksShim::RemoveBookmark(const BookmarkNode* node) { 113 void PartnerBookmarksShim::RemoveBookmark(const BookmarkNode* node) {
114 DCHECK(IsEditable(node));
96 RenameBookmark(node, base::string16()); 115 RenameBookmark(node, base::string16());
97 } 116 }
98 117
99 void PartnerBookmarksShim::RenameBookmark(const BookmarkNode* node, 118 void PartnerBookmarksShim::RenameBookmark(const BookmarkNode* node,
100 const base::string16& title) { 119 const base::string16& title) {
120 DCHECK(IsEditable(node));
101 const NodeRenamingMapKey key(node->url(), node->GetTitle()); 121 const NodeRenamingMapKey key(node->url(), node->GetTitle());
102 node_rename_remove_map_[key] = title; 122 node_rename_remove_map_[key] = title;
103 SaveNodeMapping(); 123 SaveNodeMapping();
104 FOR_EACH_OBSERVER(PartnerBookmarksShim::Observer, observers_, 124 FOR_EACH_OBSERVER(PartnerBookmarksShim::Observer, observers_,
105 PartnerShimChanged(this)); 125 PartnerShimChanged(this));
106 } 126 }
107 127
108 void PartnerBookmarksShim::AddObserver( 128 void PartnerBookmarksShim::AddObserver(
109 PartnerBookmarksShim::Observer* observer) { 129 PartnerBookmarksShim::Observer* observer) {
110 observers_.AddObserver(observer); 130 observers_.AddObserver(observer);
111 } 131 }
112 132
113 void PartnerBookmarksShim::RemoveObserver( 133 void PartnerBookmarksShim::RemoveObserver(
114 PartnerBookmarksShim::Observer* observer) { 134 PartnerBookmarksShim::Observer* observer) {
115 observers_.RemoveObserver(observer); 135 observers_.RemoveObserver(observer);
116 } 136 }
117 137
118 const BookmarkNode* PartnerBookmarksShim::GetNodeByID(int64 id) const { 138 const BookmarkNode* PartnerBookmarksShim::GetNodeByID(int64 id) const {
119 DCHECK(IsLoaded()); 139 DCHECK(IsLoaded());
120 if (!HasPartnerBookmarks()) 140 if (!HasPartnerBookmarks())
121 return NULL; 141 return NULL;
122 return GetNodeByID(GetPartnerBookmarksRoot(), id); 142 return GetNodeByID(GetPartnerBookmarksRoot(), id);
123 } 143 }
124 144
125 base::string16 PartnerBookmarksShim::GetTitle(const BookmarkNode* node) const { 145 base::string16 PartnerBookmarksShim::GetTitle(const BookmarkNode* node) const {
126 DCHECK(node); 146 DCHECK(node);
127 DCHECK(IsPartnerBookmark(node)); 147 DCHECK(IsPartnerBookmark(node));
128 148
129 const NodeRenamingMapKey key(node->url(), node->GetTitle()); 149 if (!g_disable_partner_bookmarks_editing) {
130 NodeRenamingMap::const_iterator i = node_rename_remove_map_.find(key); 150 const NodeRenamingMapKey key(node->url(), node->GetTitle());
131 if (i != node_rename_remove_map_.end()) 151 NodeRenamingMap::const_iterator i = node_rename_remove_map_.find(key);
132 return i->second; 152 if (i != node_rename_remove_map_.end())
153 return i->second;
154 }
133 155
134 return node->GetTitle(); 156 return node->GetTitle();
135 } 157 }
136 158
137 bool PartnerBookmarksShim::IsPartnerBookmark(const BookmarkNode* node) const { 159 bool PartnerBookmarksShim::IsPartnerBookmark(const BookmarkNode* node) const {
138 DCHECK(IsLoaded()); 160 DCHECK(IsLoaded());
139 if (!HasPartnerBookmarks()) 161 if (!HasPartnerBookmarks())
140 return false; 162 return false;
141 const BookmarkNode* parent = node; 163 const BookmarkNode* parent = node;
142 while (parent) { 164 while (parent) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 199 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
178 browser_context->SetUserData(kPartnerBookmarksShimUserDataKey, 0); 200 browser_context->SetUserData(kPartnerBookmarksShimUserDataKey, 0);
179 } 201 }
180 202
181 // static 203 // static
182 void PartnerBookmarksShim::ClearPartnerModelForTesting() { 204 void PartnerBookmarksShim::ClearPartnerModelForTesting() {
183 g_partner_model_keeper.Get().loaded = false; 205 g_partner_model_keeper.Get().loaded = false;
184 g_partner_model_keeper.Get().partner_bookmarks_root.reset(0); 206 g_partner_model_keeper.Get().partner_bookmarks_root.reset(0);
185 } 207 }
186 208
209 // static
210 void PartnerBookmarksShim::EnablePartnerBookmarksEditing() {
211 g_disable_partner_bookmarks_editing = false;
212 }
213
187 PartnerBookmarksShim::PartnerBookmarksShim(PrefService* prefs) 214 PartnerBookmarksShim::PartnerBookmarksShim(PrefService* prefs)
188 : prefs_(prefs), 215 : prefs_(prefs),
189 observers_( 216 observers_(
190 ObserverList<PartnerBookmarksShim::Observer>::NOTIFY_EXISTING_ONLY) { 217 ObserverList<PartnerBookmarksShim::Observer>::NOTIFY_EXISTING_ONLY) {
191 } 218 }
192 219
193 PartnerBookmarksShim::~PartnerBookmarksShim() { 220 PartnerBookmarksShim::~PartnerBookmarksShim() {
194 FOR_EACH_OBSERVER(PartnerBookmarksShim::Observer, observers_, 221 FOR_EACH_OBSERVER(PartnerBookmarksShim::Observer, observers_,
195 ShimBeingDeleted(this)); 222 ShimBeingDeleted(this));
196 } 223 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 i != node_rename_remove_map_.end(); 279 i != node_rename_remove_map_.end();
253 ++i) { 280 ++i) {
254 base::DictionaryValue* dict = new base::DictionaryValue(); 281 base::DictionaryValue* dict = new base::DictionaryValue();
255 dict->SetString(kMappingUrl, i->first.url().spec()); 282 dict->SetString(kMappingUrl, i->first.url().spec());
256 dict->SetString(kMappingProviderTitle, i->first.provider_title()); 283 dict->SetString(kMappingProviderTitle, i->first.provider_title());
257 dict->SetString(kMappingTitle, i->second); 284 dict->SetString(kMappingTitle, i->second);
258 list.Append(dict); 285 list.Append(dict);
259 } 286 }
260 prefs_->Set(prefs::kPartnerBookmarkMappings, list); 287 prefs_->Set(prefs::kPartnerBookmarkMappings, list);
261 } 288 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698