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

Side by Side Diff: components/sync_sessions/sync_sessions_metrics_unittest.cc

Issue 2499023004: [Sync] Introduce SyncedSessionWindow type. (Closed)
Patch Set: Fix compile Created 3 years, 9 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 "components/sync_sessions/sync_sessions_metrics.h" 5 #include "components/sync_sessions/sync_sessions_metrics.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 // calls in here are safe because the session/window objects are going to 63 // calls in here are safe because the session/window objects are going to
64 // delete all their children when their destructors are invoked. 64 // delete all their children when their destructors are invoked.
65 void PushTab(size_t tabIndex, int windowIndex, Time timestamp) { 65 void PushTab(size_t tabIndex, int windowIndex, Time timestamp) {
66 // First add sessions/windows as necessary. 66 // First add sessions/windows as necessary.
67 while (tabIndex >= sessions_.size()) { 67 while (tabIndex >= sessions_.size()) {
68 sessions_.push_back(base::MakeUnique<SyncedSession>()); 68 sessions_.push_back(base::MakeUnique<SyncedSession>());
69 } 69 }
70 if (sessions_[tabIndex]->windows.find(windowIndex) == 70 if (sessions_[tabIndex]->windows.find(windowIndex) ==
71 sessions_[tabIndex]->windows.end()) { 71 sessions_[tabIndex]->windows.end()) {
72 sessions_[tabIndex]->windows[windowIndex] = 72 sessions_[tabIndex]->windows[windowIndex] =
73 base::MakeUnique<SessionWindow>(); 73 base::MakeUnique<SyncedSessionWindow>();
74 } 74 }
75 75
76 sessions_[tabIndex]->modified_time = 76 sessions_[tabIndex]->modified_time =
77 std::max(sessions_[tabIndex]->modified_time, timestamp); 77 std::max(sessions_[tabIndex]->modified_time, timestamp);
78 sessions_[tabIndex]->windows[windowIndex]->timestamp = std::max( 78 sessions_[tabIndex]->windows[windowIndex]->wrapped_window.timestamp =
79 sessions_[tabIndex]->windows[windowIndex]->timestamp, timestamp); 79 std::max(
80 sessions_[tabIndex]->windows[windowIndex]->tabs.push_back( 80 sessions_[tabIndex]->windows[windowIndex]->wrapped_window.timestamp,
81 timestamp);
82 sessions_[tabIndex]->windows[windowIndex]->wrapped_window.tabs.push_back(
81 base::MakeUnique<SessionTab>()); 83 base::MakeUnique<SessionTab>());
82 sessions_[tabIndex]->windows[windowIndex]->tabs.back()->timestamp = 84 sessions_[tabIndex]
83 timestamp; 85 ->windows[windowIndex]
86 ->wrapped_window.tabs.back()
87 ->timestamp = timestamp;
84 } 88 }
85 89
86 // Removes the last tab at the given indexes. The idexes provided should be 90 // Removes the last tab at the given indexes. The idexes provided should be
87 // valid for existing data, this method does not check their validity. Windows 91 // valid for existing data, this method does not check their validity. Windows
88 // are not cleaned up/removed if they're left with 0 tabs. 92 // are not cleaned up/removed if they're left with 0 tabs.
89 void PopTab(size_t tabIndex, int windowIndex, Time timestamp) { 93 void PopTab(size_t tabIndex, int windowIndex, Time timestamp) {
90 sessions_[tabIndex]->modified_time = 94 sessions_[tabIndex]->modified_time =
91 std::max(sessions_[tabIndex]->modified_time, timestamp); 95 std::max(sessions_[tabIndex]->modified_time, timestamp);
92 sessions_[tabIndex]->windows[windowIndex]->timestamp = std::max( 96 sessions_[tabIndex]->windows[windowIndex]->wrapped_window.timestamp =
93 sessions_[tabIndex]->windows[windowIndex]->timestamp, timestamp); 97 std::max(
94 sessions_[tabIndex]->windows[windowIndex]->tabs.pop_back(); 98 sessions_[tabIndex]->windows[windowIndex]->wrapped_window.timestamp,
99 timestamp);
100 sessions_[tabIndex]->windows[windowIndex]->wrapped_window.tabs.pop_back();
95 } 101 }
96 102
97 // Runs MaxTabTimestamp on the current sessions data. 103 // Runs MaxTabTimestamp on the current sessions data.
98 Time MaxTabTimestamp() { 104 Time MaxTabTimestamp() {
99 std::vector<const SyncedSession*> typed_sessions; 105 std::vector<const SyncedSession*> typed_sessions;
100 for (auto& session : sessions_) { 106 for (auto& session : sessions_) {
101 typed_sessions.push_back(session.get()); 107 typed_sessions.push_back(session.get());
102 } 108 }
103 return SyncSessionsMetrics::MaxTabTimestamp(typed_sessions); 109 return SyncSessionsMetrics::MaxTabTimestamp(typed_sessions);
104 } 110 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 201
196 TEST_F(SyncSessionsMetricsTest, EmitNormalCase) { 202 TEST_F(SyncSessionsMetricsTest, EmitNormalCase) {
197 base::HistogramTester histogram_tester; 203 base::HistogramTester histogram_tester;
198 PushTab(0, 0, Time::Now() - TimeDelta::FromHours(1)); 204 PushTab(0, 0, Time::Now() - TimeDelta::FromHours(1));
199 SyncSessionsMetrics::RecordYoungestForeignTabAgeOnNTP( 205 SyncSessionsMetrics::RecordYoungestForeignTabAgeOnNTP(
200 get_sessions_sync_manager()); 206 get_sessions_sync_manager());
201 histogram_tester.ExpectTotalCount("Sync.YoungestForeignTabAgeOnNTP", 1); 207 histogram_tester.ExpectTotalCount("Sync.YoungestForeignTabAgeOnNTP", 1);
202 } 208 }
203 209
204 } // namespace sync_sessions 210 } // namespace sync_sessions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698