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

Side by Side Diff: chrome/browser/ntp_snippets/bookmark_last_visit_updater.cc

Issue 2234393002: Marking last_visited date for bookmarks created from an open tab (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Marc's comments Created 4 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ntp_snippets/bookmark_last_visit_updater.h" 5 #include "chrome/browser/ntp_snippets/bookmark_last_visit_updater.h"
6 6
7 #include "components/bookmarks/browser/bookmark_model.h"
8 #include "components/bookmarks/browser/bookmark_node.h"
7 #include "components/ntp_snippets/bookmarks/bookmark_last_visit_utils.h" 9 #include "components/ntp_snippets/bookmarks/bookmark_last_visit_utils.h"
8 #include "content/public/browser/navigation_handle.h" 10 #include "content/public/browser/navigation_handle.h"
9 11
10 DEFINE_WEB_CONTENTS_USER_DATA_KEY(BookmarkLastVisitUpdater); 12 DEFINE_WEB_CONTENTS_USER_DATA_KEY(BookmarkLastVisitUpdater);
11 13
12 BookmarkLastVisitUpdater::~BookmarkLastVisitUpdater() {} 14 BookmarkLastVisitUpdater::~BookmarkLastVisitUpdater() {
15 bookmark_model_->RemoveObserver(this);
16 }
13 17
14 // static 18 // static
15 void BookmarkLastVisitUpdater::CreateForWebContentsWithBookmarkModel( 19 void BookmarkLastVisitUpdater::CreateForWebContentsWithBookmarkModel(
16 content::WebContents* web_contents, 20 content::WebContents* web_contents,
17 bookmarks::BookmarkModel* bookmark_model) { 21 bookmarks::BookmarkModel* bookmark_model) {
18 web_contents->SetUserData(UserDataKey(), new BookmarkLastVisitUpdater( 22 web_contents->SetUserData(UserDataKey(), new BookmarkLastVisitUpdater(
19 web_contents, bookmark_model)); 23 web_contents, bookmark_model));
20 } 24 }
21 25
22 BookmarkLastVisitUpdater::BookmarkLastVisitUpdater( 26 BookmarkLastVisitUpdater::BookmarkLastVisitUpdater(
23 content::WebContents* web_contents, 27 content::WebContents* web_contents,
24 bookmarks::BookmarkModel* bookmark_model) 28 bookmarks::BookmarkModel* bookmark_model)
25 : content::WebContentsObserver(web_contents), 29 : content::WebContentsObserver(web_contents),
26 bookmark_model_(bookmark_model) {} 30 bookmark_model_(bookmark_model),
31 web_contents_(web_contents) {
32 bookmark_model->AddObserver(this);
33 }
27 34
28 void BookmarkLastVisitUpdater::DidStartNavigation( 35 void BookmarkLastVisitUpdater::DidStartNavigation(
29 content::NavigationHandle* navigation_handle) { 36 content::NavigationHandle* navigation_handle) {
37 // Mark visited bookmark when the navigation starts (may end somewhere else
38 // due to server-side redirects).
39 NewURLVisited(navigation_handle);
40 }
41
42 void BookmarkLastVisitUpdater::DidRedirectNavigation(
43 content::NavigationHandle* navigation_handle) {
44 // Mark visited bookmark also after each redirect.
45 NewURLVisited(navigation_handle);
46 }
47
48 void BookmarkLastVisitUpdater::NewURLVisited(
49 content::NavigationHandle* navigation_handle) {
30 if (!navigation_handle->IsInMainFrame() || navigation_handle->IsErrorPage()) 50 if (!navigation_handle->IsInMainFrame() || navigation_handle->IsErrorPage())
31 return; 51 return;
52
32 ntp_snippets::UpdateBookmarkOnURLVisitedInMainFrame( 53 ntp_snippets::UpdateBookmarkOnURLVisitedInMainFrame(
33 bookmark_model_, navigation_handle->GetURL()); 54 bookmark_model_, navigation_handle->GetURL());
34 } 55 }
56
57 void BookmarkLastVisitUpdater::BookmarkNodeAdded(
58 bookmarks::BookmarkModel* model,
59 const bookmarks::BookmarkNode* parent,
60 int index) {
61 const GURL& new_bookmark_url = parent->GetChild(index)->url();
62
63 if (new_bookmark_url == web_contents_->GetLastCommittedURL()) {
64 // Consider in this TabHelper only bookmarks created from this tab (and not
65 // the ones created from other tabs or created through bookmark sync).
66 ntp_snippets::UpdateBookmarkOnURLVisitedInMainFrame(
67 bookmark_model_, new_bookmark_url);
68 }
69 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698