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

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

Issue 888983002: Dont set NEEDS_OFFLINE_PROCESSING flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: 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/enhanced_bookmarks/enhanced_bookmark_model.h" 5 #include "components/enhanced_bookmarks/enhanced_bookmark_model.h"
6 6
7 #include <iomanip> 7 #include <iomanip>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/message_loop/message_loop_proxy.h" 12 #include "base/message_loop/message_loop_proxy.h"
13 #include "base/rand_util.h" 13 #include "base/rand_util.h"
14 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
15 #include "components/bookmarks/browser/bookmark_model.h" 15 #include "components/bookmarks/browser/bookmark_model.h"
16 #include "components/bookmarks/browser/bookmark_node.h" 16 #include "components/bookmarks/browser/bookmark_node.h"
17 #include "components/enhanced_bookmarks/enhanced_bookmark_model_observer.h" 17 #include "components/enhanced_bookmarks/enhanced_bookmark_model_observer.h"
18 #include "components/enhanced_bookmarks/proto/metadata.pb.h" 18 #include "components/enhanced_bookmarks/proto/metadata.pb.h"
19 #include "ui/base/models/tree_node_iterator.h" 19 #include "ui/base/models/tree_node_iterator.h"
20 #include "url/gurl.h" 20 #include "url/gurl.h"
21 21
22 using bookmarks::BookmarkModel; 22 using bookmarks::BookmarkModel;
23 using bookmarks::BookmarkNode; 23 using bookmarks::BookmarkNode;
24 24
25 namespace { 25 namespace {
26 const char* kBookmarkBarId = "f_bookmarks_bar"; 26 const char* kBookmarkBarId = "f_bookmarks_bar";
27 27
28 const char* kFlagsKey = "stars.flags";
29 const char* kIdKey = "stars.id"; 28 const char* kIdKey = "stars.id";
30 const char* kImageDataKey = "stars.imageData"; 29 const char* kImageDataKey = "stars.imageData";
31 const char* kNoteKey = "stars.note"; 30 const char* kNoteKey = "stars.note";
32 const char* kOldIdKey = "stars.oldId"; 31 const char* kOldIdKey = "stars.oldId";
33 const char* kPageDataKey = "stars.pageData"; 32 const char* kPageDataKey = "stars.pageData";
34 const char* kVersionKey = "stars.version"; 33 const char* kVersionKey = "stars.version";
35 34
36 const char* kBookmarkPrefix = "ebc_"; 35 const char* kBookmarkPrefix = "ebc_";
37 36
38 enum Flags {
39 // When set the server will attempt to fill in image and snippet information.
40 NEEDS_OFFLINE_PROCESSING = 0x1,
41 };
42
43 // Helper method for working with bookmark metainfo. 37 // Helper method for working with bookmark metainfo.
44 std::string DataForMetaInfoField(const BookmarkNode* node, 38 std::string DataForMetaInfoField(const BookmarkNode* node,
45 const std::string& field) { 39 const std::string& field) {
46 std::string value; 40 std::string value;
47 if (!node->GetMetaInfo(field, &value)) 41 if (!node->GetMetaInfo(field, &value))
48 return std::string(); 42 return std::string();
49 43
50 std::string decoded; 44 std::string decoded;
51 if (!base::Base64Decode(value, &decoded)) 45 if (!base::Base64Decode(value, &decoded))
52 return std::string(); 46 return std::string();
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 } 299 }
306 300
307 void EnhancedBookmarkModel::BookmarkNodeAdded(BookmarkModel* model, 301 void EnhancedBookmarkModel::BookmarkNodeAdded(BookmarkModel* model,
308 const BookmarkNode* parent, 302 const BookmarkNode* parent,
309 int index) { 303 int index) {
310 const BookmarkNode* node = parent->GetChild(index); 304 const BookmarkNode* node = parent->GetChild(index);
311 std::string remote_id; 305 std::string remote_id;
312 if (node->GetMetaInfo(kIdKey, &remote_id)) { 306 if (node->GetMetaInfo(kIdKey, &remote_id)) {
313 AddToIdMap(node); 307 AddToIdMap(node);
314 ScheduleResetDuplicateRemoteIds(); 308 ScheduleResetDuplicateRemoteIds();
315 } else if (node->is_url()) {
316 set_needs_offline_processing_tasks_[node] =
317 make_linked_ptr(new base::CancelableClosure(
318 base::Bind(&EnhancedBookmarkModel::SetNeedsOfflineProcessing,
319 weak_ptr_factory_.GetWeakPtr(),
320 base::Unretained(node))));
321 base::MessageLoopProxy::current()->PostTask(
322 FROM_HERE, set_needs_offline_processing_tasks_[node]->callback());
323 } 309 }
324 FOR_EACH_OBSERVER( 310 FOR_EACH_OBSERVER(
325 EnhancedBookmarkModelObserver, observers_, EnhancedBookmarkAdded(node)); 311 EnhancedBookmarkModelObserver, observers_, EnhancedBookmarkAdded(node));
326 } 312 }
327 313
328 void EnhancedBookmarkModel::BookmarkNodeRemoved( 314 void EnhancedBookmarkModel::BookmarkNodeRemoved(
329 BookmarkModel* model, 315 BookmarkModel* model,
330 const BookmarkNode* parent, 316 const BookmarkNode* parent,
331 int old_index, 317 int old_index,
332 const BookmarkNode* node, 318 const BookmarkNode* node,
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 } 387 }
402 } 388 }
403 389
404 void EnhancedBookmarkModel::RemoveNodeFromMaps(const BookmarkNode* node) { 390 void EnhancedBookmarkModel::RemoveNodeFromMaps(const BookmarkNode* node) {
405 for (int i = 0; i < node->child_count(); i++) { 391 for (int i = 0; i < node->child_count(); i++) {
406 RemoveNodeFromMaps(node->GetChild(i)); 392 RemoveNodeFromMaps(node->GetChild(i));
407 } 393 }
408 std::string remote_id = GetRemoteId(node); 394 std::string remote_id = GetRemoteId(node);
409 id_map_.erase(remote_id); 395 id_map_.erase(remote_id);
410 nodes_to_reset_.erase(node); 396 nodes_to_reset_.erase(node);
411 set_needs_offline_processing_tasks_.erase(node);
412 } 397 }
413 398
414 void EnhancedBookmarkModel::ScheduleResetDuplicateRemoteIds() { 399 void EnhancedBookmarkModel::ScheduleResetDuplicateRemoteIds() {
415 if (!nodes_to_reset_.empty()) { 400 if (!nodes_to_reset_.empty()) {
416 base::MessageLoopProxy::current()->PostTask( 401 base::MessageLoopProxy::current()->PostTask(
417 FROM_HERE, 402 FROM_HERE,
418 base::Bind(&EnhancedBookmarkModel::ResetDuplicateRemoteIds, 403 base::Bind(&EnhancedBookmarkModel::ResetDuplicateRemoteIds,
419 weak_ptr_factory_.GetWeakPtr())); 404 weak_ptr_factory_.GetWeakPtr()));
420 } 405 }
421 } 406 }
422 407
423 void EnhancedBookmarkModel::ResetDuplicateRemoteIds() { 408 void EnhancedBookmarkModel::ResetDuplicateRemoteIds() {
424 for (NodeToIdMap::iterator it = nodes_to_reset_.begin(); 409 for (NodeToIdMap::iterator it = nodes_to_reset_.begin();
425 it != nodes_to_reset_.end(); 410 it != nodes_to_reset_.end();
426 ++it) { 411 ++it) {
427 BookmarkNode::MetaInfoMap meta_info; 412 BookmarkNode::MetaInfoMap meta_info;
428 meta_info[kIdKey] = ""; 413 meta_info[kIdKey] = "";
429 meta_info[kOldIdKey] = it->second; 414 meta_info[kOldIdKey] = it->second;
430 SetMultipleMetaInfo(it->first, meta_info); 415 SetMultipleMetaInfo(it->first, meta_info);
431 } 416 }
432 nodes_to_reset_.clear(); 417 nodes_to_reset_.clear();
433 } 418 }
434 419
435 void EnhancedBookmarkModel::SetNeedsOfflineProcessing(
436 const BookmarkNode* node) {
437 set_needs_offline_processing_tasks_.erase(node);
438 int flags = 0;
439 std::string flags_str;
440 if (node->GetMetaInfo(kFlagsKey, &flags_str)) {
441 if (!base::StringToInt(flags_str, &flags))
442 flags = 0;
443 }
444 flags |= NEEDS_OFFLINE_PROCESSING;
445 SetMetaInfo(node, kFlagsKey, base::IntToString(flags));
446 }
447
448 void EnhancedBookmarkModel::SetMetaInfo(const BookmarkNode* node, 420 void EnhancedBookmarkModel::SetMetaInfo(const BookmarkNode* node,
449 const std::string& field, 421 const std::string& field,
450 const std::string& value) { 422 const std::string& value) {
451 DCHECK(!bookmark_model_->is_permanent_node(node)); 423 DCHECK(!bookmark_model_->is_permanent_node(node));
452 424
453 BookmarkNode::MetaInfoMap meta_info; 425 BookmarkNode::MetaInfoMap meta_info;
454 const BookmarkNode::MetaInfoMap* old_meta_info = node->GetMetaInfoMap(); 426 const BookmarkNode::MetaInfoMap* old_meta_info = node->GetMetaInfoMap();
455 if (old_meta_info) 427 if (old_meta_info)
456 meta_info.insert(old_meta_info->begin(), old_meta_info->end()); 428 meta_info.insert(old_meta_info->begin(), old_meta_info->end());
457 429
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 if (!result) 527 if (!result)
556 return false; 528 return false;
557 529
558 std::string encoded; 530 std::string encoded;
559 base::Base64Encode(output, &encoded); 531 base::Base64Encode(output, &encoded);
560 bookmark_model_->SetNodeMetaInfo(node, kImageDataKey, encoded); 532 bookmark_model_->SetNodeMetaInfo(node, kImageDataKey, encoded);
561 return true; 533 return true;
562 } 534 }
563 535
564 } // namespace enhanced_bookmarks 536 } // namespace enhanced_bookmarks
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698