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

Side by Side Diff: chrome/browser/bookmarks/chrome_bookmark_client.cc

Issue 484213002: Refactor HistoryService to not send NOTIFICATION_FAVICON_CHANGED (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix android compilation Created 6 years, 4 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 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 "chrome/browser/bookmarks/chrome_bookmark_client.h" 5 #include "chrome/browser/bookmarks/chrome_bookmark_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/browser/chrome_notification_types.h"
12 #include "chrome/browser/favicon/favicon_changed_details.h"
13 #include "chrome/browser/favicon/favicon_service.h" 11 #include "chrome/browser/favicon/favicon_service.h"
14 #include "chrome/browser/favicon/favicon_service_factory.h" 12 #include "chrome/browser/favicon/favicon_service_factory.h"
15 #include "chrome/browser/history/history_service.h" 13 #include "chrome/browser/history/history_service.h"
16 #include "chrome/browser/history/history_service_factory.h" 14 #include "chrome/browser/history/history_service_factory.h"
17 #include "chrome/browser/policy/profile_policy_connector.h" 15 #include "chrome/browser/policy/profile_policy_connector.h"
18 #include "chrome/browser/policy/profile_policy_connector_factory.h" 16 #include "chrome/browser/policy/profile_policy_connector_factory.h"
19 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
20 #include "components/bookmarks/browser/bookmark_model.h" 18 #include "components/bookmarks/browser/bookmark_model.h"
21 #include "components/bookmarks/browser/bookmark_node.h" 19 #include "components/bookmarks/browser/bookmark_node.h"
22 #include "components/history/core/browser/url_database.h" 20 #include "components/history/core/browser/url_database.h"
(...skipping 22 matching lines...) Expand all
45 if (bitmap_result.is_valid()) { 43 if (bitmap_result.is_valid()) {
46 result.image = gfx::Image::CreateFrom1xPNGBytes( 44 result.image = gfx::Image::CreateFrom1xPNGBytes(
47 bitmap_result.bitmap_data->front(), bitmap_result.bitmap_data->size()); 45 bitmap_result.bitmap_data->front(), bitmap_result.bitmap_data->size());
48 result.icon_url = bitmap_result.icon_url; 46 result.icon_url = bitmap_result.icon_url;
49 callback.Run(result); 47 callback.Run(result);
50 return; 48 return;
51 } 49 }
52 callback.Run(result); 50 callback.Run(result);
53 } 51 }
54 52
53 void OnFaviconChanged(BookmarkModel* model,
54 HistoryService* history_service,
55 const std::set<GURL>& changed_favicons) {
56 model->OnFaviconChanged(changed_favicons);
57 }
58
55 } // namespace 59 } // namespace
56 60
57 ChromeBookmarkClient::ChromeBookmarkClient(Profile* profile) 61 ChromeBookmarkClient::ChromeBookmarkClient(Profile* profile)
58 : profile_(profile), model_(NULL), managed_node_(NULL) { 62 : profile_(profile), model_(NULL), managed_node_(NULL) {
59 } 63 }
60 64
61 ChromeBookmarkClient::~ChromeBookmarkClient() { 65 ChromeBookmarkClient::~ChromeBookmarkClient() {
62 } 66 }
63 67
64 void ChromeBookmarkClient::Init(BookmarkModel* model) { 68 void ChromeBookmarkClient::Init(BookmarkModel* model) {
65 DCHECK(model); 69 DCHECK(model);
66 DCHECK(!model_); 70 DCHECK(!model_);
67 model_ = model; 71 model_ = model;
68 model_->AddObserver(this); 72 model_->AddObserver(this);
69 73
70 managed_bookmarks_tracker_.reset(new policy::ManagedBookmarksTracker( 74 managed_bookmarks_tracker_.reset(new policy::ManagedBookmarksTracker(
71 model_, 75 model_,
72 profile_->GetPrefs(), 76 profile_->GetPrefs(),
73 base::Bind(&ChromeBookmarkClient::GetManagedBookmarksDomain, 77 base::Bind(&ChromeBookmarkClient::GetManagedBookmarksDomain,
74 base::Unretained(this)))); 78 base::Unretained(this))));
75 79
76 // Listen for changes to favicons so that we can update the favicon of the 80 HistoryService* history_service =
77 // node appropriately. 81 HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
78 registrar_.Add(this, 82 if (history_service) {
79 chrome::NOTIFICATION_FAVICON_CHANGED, 83 favicon_changed_subscription_ = history_service->AddFaviconChangedCallback(
80 content::Source<Profile>(profile_)); 84 base::Bind(&OnFaviconChanged, base::Unretained(model_)));
85 }
81 } 86 }
82 87
83 void ChromeBookmarkClient::Shutdown() { 88 void ChromeBookmarkClient::Shutdown() {
84 if (model_) { 89 if (model_) {
85 registrar_.RemoveAll(); 90 favicon_changed_subscription_.reset();
86 91
87 model_->RemoveObserver(this); 92 model_->RemoveObserver(this);
88 model_ = NULL; 93 model_ = NULL;
89 } 94 }
90 BookmarkClient::Shutdown(); 95 BookmarkClient::Shutdown();
91 } 96 }
92 97
93 bool ChromeBookmarkClient::IsDescendantOfManagedNode(const BookmarkNode* node) { 98 bool ChromeBookmarkClient::IsDescendantOfManagedNode(const BookmarkNode* node) {
94 return node && node->HasAncestor(managed_node_); 99 return node && node->HasAncestor(managed_node_);
95 } 100 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 } 207 }
203 208
204 bool ChromeBookmarkClient::CanSyncNode(const BookmarkNode* node) { 209 bool ChromeBookmarkClient::CanSyncNode(const BookmarkNode* node) {
205 return !IsDescendantOfManagedNode(node); 210 return !IsDescendantOfManagedNode(node);
206 } 211 }
207 212
208 bool ChromeBookmarkClient::CanBeEditedByUser(const BookmarkNode* node) { 213 bool ChromeBookmarkClient::CanBeEditedByUser(const BookmarkNode* node) {
209 return !IsDescendantOfManagedNode(node); 214 return !IsDescendantOfManagedNode(node);
210 } 215 }
211 216
212 void ChromeBookmarkClient::Observe(
213 int type,
214 const content::NotificationSource& source,
215 const content::NotificationDetails& details) {
216 switch (type) {
217 case chrome::NOTIFICATION_FAVICON_CHANGED: {
218 content::Details<FaviconChangedDetails> favicon_details(details);
219 model_->OnFaviconChanged(favicon_details->urls);
220 break;
221 }
222
223 default:
224 NOTREACHED();
225 break;
226 }
227 }
228
229 void ChromeBookmarkClient::BookmarkModelChanged() { 217 void ChromeBookmarkClient::BookmarkModelChanged() {
230 } 218 }
231 219
232 void ChromeBookmarkClient::BookmarkNodeRemoved( 220 void ChromeBookmarkClient::BookmarkNodeRemoved(
233 BookmarkModel* model, 221 BookmarkModel* model,
234 const BookmarkNode* parent, 222 const BookmarkNode* parent,
235 int old_index, 223 int old_index,
236 const BookmarkNode* node, 224 const BookmarkNode* node,
237 const std::set<GURL>& removed_urls) { 225 const std::set<GURL>& removed_urls) {
238 NotifyHistoryOfRemovedURLs(profile_, removed_urls); 226 NotifyHistoryOfRemovedURLs(profile_, removed_urls);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 return extra_nodes.Pass(); 262 return extra_nodes.Pass();
275 } 263 }
276 264
277 std::string ChromeBookmarkClient::GetManagedBookmarksDomain() { 265 std::string ChromeBookmarkClient::GetManagedBookmarksDomain() {
278 policy::ProfilePolicyConnector* connector = 266 policy::ProfilePolicyConnector* connector =
279 policy::ProfilePolicyConnectorFactory::GetForProfile(profile_); 267 policy::ProfilePolicyConnectorFactory::GetForProfile(profile_);
280 if (connector->IsPolicyFromCloudPolicy(policy::key::kManagedBookmarks)) 268 if (connector->IsPolicyFromCloudPolicy(policy::key::kManagedBookmarks))
281 return connector->GetManagementDomain(); 269 return connector->GetManagementDomain();
282 return std::string(); 270 return std::string();
283 } 271 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698