| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "components/sync_driver/revisit/current_tab_matcher.h" | |
| 6 | |
| 7 #include "base/metrics/histogram_macros.h" | |
| 8 #include "base/time/time.h" | |
| 9 #include "components/sessions/core/serialized_navigation_entry.h" | |
| 10 | |
| 11 namespace sync_driver { | |
| 12 | |
| 13 CurrentTabMatcher::CurrentTabMatcher(const PageEquality& page_equality) | |
| 14 : page_equality_(page_equality) {} | |
| 15 | |
| 16 void CurrentTabMatcher::Check(const sessions::SessionTab* tab) { | |
| 17 if (tab->navigations.empty()) { | |
| 18 return; | |
| 19 } | |
| 20 const sessions::SerializedNavigationEntry& currentEntry = | |
| 21 tab->navigations[tab->normalized_navigation_index()]; | |
| 22 // Cannot rely on SerializedNavigationEntry timestamps, they're | |
| 23 // not set for foreign sessions. Instead rely on tab timestamps. | |
| 24 if (page_equality_.IsSamePage(currentEntry.virtual_url()) && | |
| 25 (most_recent_match_ == nullptr || | |
| 26 tab->timestamp > most_recent_match_->timestamp)) { | |
| 27 most_recent_match_ = tab; | |
| 28 } | |
| 29 } | |
| 30 | |
| 31 void CurrentTabMatcher::Emit( | |
| 32 const PageVisitObserver::TransitionType transition) { | |
| 33 if (most_recent_match_ == nullptr) { | |
| 34 UMA_HISTOGRAM_ENUMERATION("Sync.PageRevisitTabMissTransition", transition, | |
| 35 PageVisitObserver::kTransitionTypeLast); | |
| 36 } else { | |
| 37 base::TimeDelta age(base::Time::Now() - most_recent_match_->timestamp); | |
| 38 UMA_HISTOGRAM_CUSTOM_TIMES("Sync.PageRevisitTabMatchAge", age, | |
| 39 base::TimeDelta::FromSeconds(1), | |
| 40 base::TimeDelta::FromDays(14), 100); | |
| 41 UMA_HISTOGRAM_ENUMERATION("Sync.PageRevisitTabMatchTransition", transition, | |
| 42 PageVisitObserver::kTransitionTypeLast); | |
| 43 } | |
| 44 } | |
| 45 | |
| 46 } // namespace sync_driver | |
| OLD | NEW |