| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/sync_sessions/revisit/page_revisit_broadcaster.h" | 5 #include "components/sync_sessions/revisit/page_revisit_broadcaster.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
| 13 #include "base/metrics/field_trial.h" | 13 #include "base/metrics/field_trial.h" |
| 14 #include "components/bookmarks/browser/bookmark_model.h" | 14 #include "components/bookmarks/browser/bookmark_model.h" |
| 15 #include "components/history/core/browser/history_service.h" | 15 #include "components/history/core/browser/history_service.h" |
| 16 #include "components/sync_sessions/revisit/bookmarks_by_url_provider_impl.h" | 16 #include "components/sync_sessions/revisit/bookmarks_by_url_provider_impl.h" |
| 17 #include "components/sync_sessions/revisit/bookmarks_page_revisit_observer.h" | 17 #include "components/sync_sessions/revisit/bookmarks_page_revisit_observer.h" |
| 18 #include "components/sync_sessions/revisit/sessions_page_revisit_observer.h" | 18 #include "components/sync_sessions/revisit/sessions_page_revisit_observer.h" |
| 19 #include "components/sync_sessions/revisit/typed_url_page_revisit_observer.h" | 19 #include "components/sync_sessions/revisit/typed_url_page_revisit_observer.h" |
| 20 #include "components/sync_sessions/sessions_sync_manager.h" | 20 #include "components/sync_sessions/sessions_sync_manager.h" |
| 21 #include "components/sync_sessions/sync_sessions_client.h" | 21 #include "components/sync_sessions/sync_sessions_client.h" |
| 22 | 22 |
| 23 namespace browser_sync { | 23 namespace sync_sessions { |
| 24 | 24 |
| 25 namespace { | 25 namespace { |
| 26 | 26 |
| 27 // Simple implementation of ForeignSessionsProvider that delegates to | 27 // Simple implementation of ForeignSessionsProvider that delegates to |
| 28 // SessionsSyncManager. It holds onto a non-owning pointer, with the assumption | 28 // SessionsSyncManager. It holds onto a non-owning pointer, with the assumption |
| 29 // that this class is only used by classes owned by SessionsSyncManager itself. | 29 // that this class is only used by classes owned by SessionsSyncManager itself. |
| 30 class SessionsSyncManagerWrapper | 30 class SessionsSyncManagerWrapper : public ForeignSessionsProvider { |
| 31 : public sync_sessions::ForeignSessionsProvider { | |
| 32 public: | 31 public: |
| 33 explicit SessionsSyncManagerWrapper(SessionsSyncManager* manager) | 32 explicit SessionsSyncManagerWrapper(SessionsSyncManager* manager) |
| 34 : manager_(manager) {} | 33 : manager_(manager) {} |
| 35 ~SessionsSyncManagerWrapper() override{}; | 34 ~SessionsSyncManagerWrapper() override{}; |
| 36 bool GetAllForeignSessions( | 35 bool GetAllForeignSessions( |
| 37 std::vector<const sync_driver::SyncedSession*>* sessions) override { | 36 std::vector<const SyncedSession*>* sessions) override { |
| 38 return manager_->GetAllForeignSessions(sessions); | 37 return manager_->GetAllForeignSessions(sessions); |
| 39 } | 38 } |
| 40 | 39 |
| 41 private: | 40 private: |
| 42 SessionsSyncManager* manager_; | 41 SessionsSyncManager* manager_; |
| 43 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManagerWrapper); | 42 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManagerWrapper); |
| 44 }; | 43 }; |
| 45 | 44 |
| 46 } // namespace | 45 } // namespace |
| 47 | 46 |
| 48 PageRevisitBroadcaster::PageRevisitBroadcaster( | 47 PageRevisitBroadcaster::PageRevisitBroadcaster( |
| 49 SessionsSyncManager* manager, | 48 SessionsSyncManager* manager, |
| 50 sync_sessions::SyncSessionsClient* sessions_client) | 49 SyncSessionsClient* sessions_client) |
| 51 : sessions_client_(sessions_client) { | 50 : sessions_client_(sessions_client) { |
| 52 const std::string group_name = | 51 const std::string group_name = |
| 53 base::FieldTrialList::FindFullName("PageRevisitInstrumentation"); | 52 base::FieldTrialList::FindFullName("PageRevisitInstrumentation"); |
| 54 bool shouldInstrument = group_name == "Enabled"; | 53 bool shouldInstrument = group_name == "Enabled"; |
| 55 if (shouldInstrument) { | 54 if (shouldInstrument) { |
| 56 revisit_observers_.push_back(new sync_sessions::SessionsPageRevisitObserver( | 55 revisit_observers_.push_back(new SessionsPageRevisitObserver( |
| 57 base::MakeUnique<SessionsSyncManagerWrapper>(manager))); | 56 base::MakeUnique<SessionsSyncManagerWrapper>(manager))); |
| 58 | 57 |
| 59 history::HistoryService* history = sessions_client_->GetHistoryService(); | 58 history::HistoryService* history = sessions_client_->GetHistoryService(); |
| 60 if (history) { | 59 if (history) { |
| 61 revisit_observers_.push_back( | 60 revisit_observers_.push_back(new TypedUrlPageRevisitObserver(history)); |
| 62 new sync_sessions::TypedUrlPageRevisitObserver(history)); | |
| 63 } | 61 } |
| 64 | 62 |
| 65 bookmarks::BookmarkModel* bookmarks = sessions_client_->GetBookmarkModel(); | 63 bookmarks::BookmarkModel* bookmarks = sessions_client_->GetBookmarkModel(); |
| 66 if (bookmarks) { | 64 if (bookmarks) { |
| 67 revisit_observers_.push_back( | 65 revisit_observers_.push_back(new BookmarksPageRevisitObserver( |
| 68 new sync_sessions::BookmarksPageRevisitObserver( | 66 base::MakeUnique<BookmarksByUrlProviderImpl>(bookmarks))); |
| 69 base::MakeUnique<sync_sessions::BookmarksByUrlProviderImpl>( | |
| 70 bookmarks))); | |
| 71 } | 67 } |
| 72 } | 68 } |
| 73 } | 69 } |
| 74 | 70 |
| 75 PageRevisitBroadcaster::~PageRevisitBroadcaster() {} | 71 PageRevisitBroadcaster::~PageRevisitBroadcaster() {} |
| 76 | 72 |
| 77 void PageRevisitBroadcaster::OnPageVisit(const GURL& url, | 73 void PageRevisitBroadcaster::OnPageVisit(const GURL& url, |
| 78 const ui::PageTransition transition) { | 74 const ui::PageTransition transition) { |
| 79 if (sessions_client_->ShouldSyncURL(url)) { | 75 if (sessions_client_->ShouldSyncURL(url)) { |
| 80 sync_sessions::PageVisitObserver::TransitionType converted( | 76 PageVisitObserver::TransitionType converted( |
| 81 ConvertTransitionEnum(transition)); | 77 ConvertTransitionEnum(transition)); |
| 82 for (auto* observer : revisit_observers_) { | 78 for (auto* observer : revisit_observers_) { |
| 83 observer->OnPageVisit(url, converted); | 79 observer->OnPageVisit(url, converted); |
| 84 } | 80 } |
| 85 } | 81 } |
| 86 } | 82 } |
| 87 | 83 |
| 88 // Static | 84 // Static |
| 89 sync_sessions::PageVisitObserver::TransitionType | 85 PageVisitObserver::TransitionType PageRevisitBroadcaster::ConvertTransitionEnum( |
| 90 PageRevisitBroadcaster::ConvertTransitionEnum( | |
| 91 const ui::PageTransition original) { | 86 const ui::PageTransition original) { |
| 92 switch (ui::PageTransitionStripQualifier(original)) { | 87 switch (ui::PageTransitionStripQualifier(original)) { |
| 93 case ui::PAGE_TRANSITION_LINK: | 88 case ui::PAGE_TRANSITION_LINK: |
| 94 if (original & ui::PAGE_TRANSITION_FROM_ADDRESS_BAR) { | 89 if (original & ui::PAGE_TRANSITION_FROM_ADDRESS_BAR) { |
| 95 return sync_sessions::PageVisitObserver::kTransitionCopyPaste; | 90 return PageVisitObserver::kTransitionCopyPaste; |
| 96 } else { | 91 } else { |
| 97 return sync_sessions::PageVisitObserver::kTransitionPage; | 92 return PageVisitObserver::kTransitionPage; |
| 98 } | 93 } |
| 99 case ui::PAGE_TRANSITION_TYPED: | 94 case ui::PAGE_TRANSITION_TYPED: |
| 100 return sync_sessions::PageVisitObserver::kTransitionOmniboxUrl; | 95 return PageVisitObserver::kTransitionOmniboxUrl; |
| 101 | 96 |
| 102 case ui::PAGE_TRANSITION_AUTO_BOOKMARK: | 97 case ui::PAGE_TRANSITION_AUTO_BOOKMARK: |
| 103 return sync_sessions::PageVisitObserver::kTransitionBookmark; | 98 return PageVisitObserver::kTransitionBookmark; |
| 104 | 99 |
| 105 case ui::PAGE_TRANSITION_AUTO_SUBFRAME: | 100 case ui::PAGE_TRANSITION_AUTO_SUBFRAME: |
| 106 case ui::PAGE_TRANSITION_MANUAL_SUBFRAME: | 101 case ui::PAGE_TRANSITION_MANUAL_SUBFRAME: |
| 107 // These are not expected, we only expect top-level frame transitions. | 102 // These are not expected, we only expect top-level frame transitions. |
| 108 return sync_sessions::PageVisitObserver::kTransitionUnknown; | 103 return PageVisitObserver::kTransitionUnknown; |
| 109 | 104 |
| 110 case ui::PAGE_TRANSITION_GENERATED: | 105 case ui::PAGE_TRANSITION_GENERATED: |
| 111 return sync_sessions::PageVisitObserver::kTransitionOmniboxDefaultSearch; | 106 return PageVisitObserver::kTransitionOmniboxDefaultSearch; |
| 112 | 107 |
| 113 case ui::PAGE_TRANSITION_AUTO_TOPLEVEL: | 108 case ui::PAGE_TRANSITION_AUTO_TOPLEVEL: |
| 114 if (original & ui::PAGE_TRANSITION_FORWARD_BACK) { | 109 if (original & ui::PAGE_TRANSITION_FORWARD_BACK) { |
| 115 return sync_sessions::PageVisitObserver::kTransitionForwardBackward; | 110 return PageVisitObserver::kTransitionForwardBackward; |
| 116 } else { | 111 } else { |
| 117 return sync_sessions::PageVisitObserver::kTransitionUnknown; | 112 return PageVisitObserver::kTransitionUnknown; |
| 118 } | 113 } |
| 119 | 114 |
| 120 case ui::PAGE_TRANSITION_FORM_SUBMIT: | 115 case ui::PAGE_TRANSITION_FORM_SUBMIT: |
| 121 return sync_sessions::PageVisitObserver::kTransitionPage; | 116 return PageVisitObserver::kTransitionPage; |
| 122 | 117 |
| 123 case ui::PAGE_TRANSITION_RELOAD: | 118 case ui::PAGE_TRANSITION_RELOAD: |
| 124 // Refreshing pages also carry PAGE_TRANSITION_RELOAD but the url never | 119 // Refreshing pages also carry PAGE_TRANSITION_RELOAD but the url never |
| 125 // changes so we don't expect to ever get them. | 120 // changes so we don't expect to ever get them. |
| 126 return sync_sessions::PageVisitObserver::kTransitionRestore; | 121 return PageVisitObserver::kTransitionRestore; |
| 127 | 122 |
| 128 case ui::PAGE_TRANSITION_KEYWORD: | 123 case ui::PAGE_TRANSITION_KEYWORD: |
| 129 case ui::PAGE_TRANSITION_KEYWORD_GENERATED: | 124 case ui::PAGE_TRANSITION_KEYWORD_GENERATED: |
| 130 return sync_sessions::PageVisitObserver::kTransitionOmniboxTemplateSearch; | 125 return PageVisitObserver::kTransitionOmniboxTemplateSearch; |
| 131 | 126 |
| 132 default: | 127 default: |
| 133 return sync_sessions::PageVisitObserver::kTransitionUnknown; | 128 return PageVisitObserver::kTransitionUnknown; |
| 134 } | 129 } |
| 135 } | 130 } |
| 136 | 131 |
| 137 } // namespace browser_sync | 132 } // namespace sync_sessions |
| OLD | NEW |