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

Side by Side Diff: components/enhanced_bookmarks/bookmark_server_service.cc

Issue 563363002: Only set remote id during url node creation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: EnhancedBookmarkModelObserver Created 6 years, 3 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/enhanced_bookmarks/bookmark_server_service.h" 5 #include "components/enhanced_bookmarks/bookmark_server_service.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "components/bookmarks/browser/bookmark_model.h" 8 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h"
9 #include "components/bookmarks/browser/bookmark_model_observer.h"
10 #include "components/enhanced_bookmarks/metadata_accessor.h"
11 #include "components/signin/core/browser/profile_oauth2_token_service.h" 9 #include "components/signin/core/browser/profile_oauth2_token_service.h"
12 #include "components/signin/core/browser/signin_manager_base.h" 10 #include "components/signin/core/browser/signin_manager_base.h"
13 #include "google_apis/gaia/gaia_constants.h" 11 #include "google_apis/gaia/gaia_constants.h"
14 #include "net/base/load_flags.h" 12 #include "net/base/load_flags.h"
15 #include "net/url_request/url_request_context_getter.h" 13 #include "net/url_request/url_request_context_getter.h"
16 #include "ui/base/models/tree_node_iterator.h" 14 #include "ui/base/models/tree_node_iterator.h"
17 15
18 namespace enhanced_bookmarks { 16 namespace enhanced_bookmarks {
19 17
20 BookmarkServerService::BookmarkServerService( 18 BookmarkServerService::BookmarkServerService(
21 scoped_refptr<net::URLRequestContextGetter> request_context_getter, 19 scoped_refptr<net::URLRequestContextGetter> request_context_getter,
22 ProfileOAuth2TokenService* token_service, 20 ProfileOAuth2TokenService* token_service,
23 SigninManagerBase* signin_manager, 21 SigninManagerBase* signin_manager,
24 BookmarkModel* bookmark_model) 22 EnhancedBookmarkModel* enhanced_bookmark_model)
25 : OAuth2TokenService::Consumer("bookmark_server_service"), 23 : OAuth2TokenService::Consumer("bookmark_server_service"),
26 bookmark_model_(bookmark_model), 24 model_(enhanced_bookmark_model),
27 token_service_(token_service), 25 token_service_(token_service),
28 signin_manager_(signin_manager), 26 signin_manager_(signin_manager),
29 request_context_getter_(request_context_getter), 27 request_context_getter_(request_context_getter) {
30 inhibit_change_notifications_(false) {
31 DCHECK(request_context_getter.get()); 28 DCHECK(request_context_getter.get());
32 DCHECK(token_service); 29 DCHECK(token_service);
33 DCHECK(signin_manager); 30 DCHECK(signin_manager);
34 DCHECK(bookmark_model); 31 DCHECK(enhanced_bookmark_model);
35 bookmark_model_->AddObserver(this); 32 model_->AddObserver(this);
36 if (bookmark_model_->loaded())
37 BuildIdMap();
38 } 33 }
39 34
40 BookmarkServerService::~BookmarkServerService() { 35 BookmarkServerService::~BookmarkServerService() {
41 bookmark_model_->RemoveObserver(this); 36 model_->AddObserver(this);
noyau (Ping after 24h) 2014/09/18 08:43:22 Remove observer maybe :)
Rune Fevang 2014/09/19 01:18:07 Doh! Thanks.
42 } 37 }
43 38
44 void BookmarkServerService::AddObserver( 39 void BookmarkServerService::AddObserver(
45 BookmarkServerServiceObserver* observer) { 40 BookmarkServerServiceObserver* observer) {
46 observers_.AddObserver(observer); 41 observers_.AddObserver(observer);
47 } 42 }
48 43
49 void BookmarkServerService::RemoveObserver( 44 void BookmarkServerService::RemoveObserver(
50 BookmarkServerServiceObserver* observer) { 45 BookmarkServerServiceObserver* observer) {
51 observers_.RemoveObserver(observer); 46 observers_.RemoveObserver(observer);
52 } 47 }
53 48
54 void BookmarkServerService::BuildIdMap() {
55 ui::TreeNodeIterator<const BookmarkNode> iterator(
56 bookmark_model_->root_node());
57
58 while (iterator.has_next()) {
59 const BookmarkNode* bookmark = iterator.Next();
60 if (bookmark_model_->is_permanent_node(bookmark))
61 continue;
62 // RemoteIdFromBookmark() will create the ID if it doesn't exists yet.
63 std::string starid =
64 enhanced_bookmarks::RemoteIdFromBookmark(bookmark_model_, bookmark);
65 if (bookmark->is_url()) {
66 starsid_to_bookmark_[starid] = bookmark;
67 }
68 }
69 }
70
71 const BookmarkNode* BookmarkServerService::BookmarkForRemoteId( 49 const BookmarkNode* BookmarkServerService::BookmarkForRemoteId(
72 const std::string& remote_id) const { 50 const std::string& remote_id) const {
73 std::map<std::string, const BookmarkNode*>::const_iterator it = 51 std::map<std::string, const BookmarkNode*>::const_iterator it =
74 starsid_to_bookmark_.find(remote_id); 52 starsid_to_bookmark_.find(remote_id);
75 if (it == starsid_to_bookmark_.end()) 53 if (it == starsid_to_bookmark_.end())
76 return NULL; 54 return NULL;
77 return it->second; 55 return it->second;
78 } 56 }
79 57
80 const std::string BookmarkServerService::RemoteIDForBookmark( 58 const std::string BookmarkServerService::RemoteIDForBookmark(
81 const BookmarkNode* bookmark) const { 59 const BookmarkNode* bookmark) const {
82 return enhanced_bookmarks::RemoteIdFromBookmark(bookmark_model_, bookmark); 60 return model_->GetRemoteId(bookmark);
83 } 61 }
84 62
85 void BookmarkServerService::Notify() { 63 void BookmarkServerService::Notify() {
86 FOR_EACH_OBSERVER(BookmarkServerServiceObserver, observers_, OnChange(this)); 64 FOR_EACH_OBSERVER(BookmarkServerServiceObserver, observers_, OnChange(this));
87 } 65 }
88 66
89 void BookmarkServerService::TriggerTokenRequest(bool cancel_previous) { 67 void BookmarkServerService::TriggerTokenRequest(bool cancel_previous) {
90 if (cancel_previous) 68 if (cancel_previous)
91 url_fetcher_.reset(); 69 url_fetcher_.reset();
92 70
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 136
159 if (url_fetcher->GetResponseCode() != 200 || 137 if (url_fetcher->GetResponseCode() != 200 ||
160 !url_fetcher->GetResponseAsString(&response) || 138 !url_fetcher->GetResponseAsString(&response) ||
161 !ProcessResponse(response, &should_notify)) { 139 !ProcessResponse(response, &should_notify)) {
162 CleanAfterFailure(); 140 CleanAfterFailure();
163 } 141 }
164 if (should_notify) 142 if (should_notify)
165 Notify(); 143 Notify();
166 } 144 }
167 145
168 //
169 // BookmarkModelObserver methods.
170 //
171 void BookmarkServerService::BookmarkModelLoaded(BookmarkModel* model,
172 bool ids_reassigned) {
173 BuildIdMap();
174 }
175
176 void BookmarkServerService::BookmarkNodeAdded(BookmarkModel* model,
177 const BookmarkNode* parent,
178 int index) {
179 DCHECK(!inhibit_change_notifications_);
180 const BookmarkNode* bookmark = parent->GetChild(index);
181 if (!bookmark->is_url())
182 return;
183
184 base::AutoReset<bool> inhibitor(&inhibit_change_notifications_, true);
185 std::string starid =
186 enhanced_bookmarks::RemoteIdFromBookmark(model, bookmark);
187 starsid_to_bookmark_[starid] = bookmark;
188 }
189
190 void BookmarkServerService::BookmarkNodeRemoved(
191 BookmarkModel* model,
192 const BookmarkNode* parent,
193 int old_index,
194 const BookmarkNode* node,
195 const std::set<GURL>& removed_urls) {
196 DCHECK(!inhibit_change_notifications_);
197 if (!node->is_url())
198 return;
199 base::AutoReset<bool> inhibitor(&inhibit_change_notifications_, true);
200 std::string starid = enhanced_bookmarks::RemoteIdFromBookmark(model, node);
201 starsid_to_bookmark_.erase(starid);
202 }
203
204 void BookmarkServerService::OnWillChangeBookmarkMetaInfo(
205 BookmarkModel* model,
206 const BookmarkNode* node) {
207 if (!node->is_url() || inhibit_change_notifications_)
208 return;
209 base::AutoReset<bool> inhibitor(&inhibit_change_notifications_, true);
210 std::string starid = enhanced_bookmarks::RemoteIdFromBookmark(model, node);
211 starsid_to_bookmark_.erase(starid);
212 }
213
214 void BookmarkServerService::BookmarkMetaInfoChanged(BookmarkModel* model,
215 const BookmarkNode* node) {
216 if (!node->is_url() || inhibit_change_notifications_)
217 return;
218
219 std::string starid = enhanced_bookmarks::RemoteIdFromBookmark(model, node);
220 starsid_to_bookmark_[starid] = node;
221 }
222
223 void BookmarkServerService::BookmarkAllUserNodesRemoved(
224 BookmarkModel* model,
225 const std::set<GURL>& removed_urls) {
226 DCHECK(!inhibit_change_notifications_);
227 starsid_to_bookmark_.clear();
228 }
229
230 SigninManagerBase* BookmarkServerService::GetSigninManager() { 146 SigninManagerBase* BookmarkServerService::GetSigninManager() {
231 DCHECK(signin_manager_); 147 DCHECK(signin_manager_);
232 return signin_manager_; 148 return signin_manager_;
233 } 149 }
234 150
235 } // namespace enhanced_bookmarks 151 } // namespace enhanced_bookmarks
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698