Index: components/sync_driver/revisit/sessions_page_revisit_observer.cc |
diff --git a/components/sync_driver/revisit/sessions_page_revisit_observer.cc b/components/sync_driver/revisit/sessions_page_revisit_observer.cc |
deleted file mode 100644 |
index 1cd56dd90d0b7e55535038675600d66c88378b2f..0000000000000000000000000000000000000000 |
--- a/components/sync_driver/revisit/sessions_page_revisit_observer.cc |
+++ /dev/null |
@@ -1,78 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/sync_driver/revisit/sessions_page_revisit_observer.h" |
- |
-#include "base/metrics/histogram_macros.h" |
-#include "base/thread_task_runner_handle.h" |
-#include "components/sessions/core/session_types.h" |
-#include "components/sync_driver/glue/synced_session.h" |
-#include "components/sync_driver/revisit/current_tab_matcher.h" |
-#include "components/sync_driver/revisit/offset_tab_matcher.h" |
-#include "components/sync_driver/revisit/page_equality.h" |
- |
-namespace sync_driver { |
- |
-SessionsPageRevisitObserver::SessionsPageRevisitObserver( |
- scoped_ptr<ForeignSessionsProvider> provider) |
- : provider_(provider.Pass()) {} |
- |
-SessionsPageRevisitObserver::~SessionsPageRevisitObserver() {} |
- |
-void SessionsPageRevisitObserver::OnPageVisit(const GURL& url, |
- const TransitionType transition) { |
- // We need to be invoked and eventually execute on the thread which owns the |
- // session objects the provider will give us. However, this work is not |
- // especially time sensitive, and so we post a task to perform this to get out |
- // of the way of any currently executing logic. |
- |
- // Bind this task to this->AsWeakPtr() so that if we're destructed this task |
- // just vanish instead of breaking things. |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, base::Bind(&SessionsPageRevisitObserver::CheckForRevisit, |
- this->AsWeakPtr(), url, transition)); |
-} |
- |
-void SessionsPageRevisitObserver::CheckForRevisit( |
- const GURL& url, |
- const TransitionType transition) { |
- base::TimeTicks start(base::TimeTicks::Now()); |
- |
- // We want to match tabs/navigation entries in two slightly different ways. We |
- // value the current url/navigation entry of a tab more highly, and want to |
- // actually seperate metrics from the backwards/forwards entries. And then |
- // to make things a little bit messier, we only have an accurate modified time |
- // for the tabs/current entries. So use index offset for forward/back entries. |
- PageEquality page_equality(url); |
- CurrentTabMatcher current_matcher(page_equality); |
- OffsetTabMatcher offset_matcher(page_equality); |
- |
- std::vector<const sync_driver::SyncedSession*> foreign_sessions; |
- if (provider_->GetAllForeignSessions(&foreign_sessions)) { |
- for (const sync_driver::SyncedSession* session : foreign_sessions) { |
- for (const std::pair<const SessionID::id_type, sessions::SessionWindow*>& |
- key_value : session->windows) { |
- for (const sessions::SessionTab* tab : key_value.second->tabs) { |
- // These matchers look identical and could easily implement an |
- // interface and we could iterate through a vector of matchers here. |
- // However this would cause quite a bit of overhead at the inner most |
- // loop of something that takes linear time in relation to the number |
- // of open foreign tabs. A small fraction of users have thousands of |
- // open tabs. |
- current_matcher.Check(tab); |
- offset_matcher.Check(tab); |
- } |
- } |
- } |
- } |
- |
- // emit even if there are no foreign sessions so that that counts all match. |
- current_matcher.Emit(transition); |
- offset_matcher.Emit(transition); |
- |
- base::TimeDelta duration(base::TimeTicks::Now() - start); |
- UMA_HISTOGRAM_TIMES("Sync.PageRevisitSessionDuration", duration); |
-} |
- |
-} // namespace sync_driver |