Index: components/sessions/session_service_commands.cc |
diff --git a/components/sessions/session_service_commands.cc b/components/sessions/session_service_commands.cc |
index eca2b4d718186d97d38fa77917213f3cb6cd34ac..f2bb9ea869913a7ac4eb7dd1fc05e9c62c7fc3ff 100644 |
--- a/components/sessions/session_service_commands.cc |
+++ b/components/sessions/session_service_commands.cc |
@@ -38,6 +38,7 @@ static const SessionCommand::id_type kCommandWindowClosed = 17; |
static const SessionCommand::id_type kCommandSetTabUserAgentOverride = 18; |
static const SessionCommand::id_type kCommandSessionStorageAssociated = 19; |
static const SessionCommand::id_type kCommandSetActiveWindow = 20; |
+static const SessionCommand::id_type kCommandActivationTime = 21; |
namespace { |
@@ -89,6 +90,11 @@ struct PinnedStatePayload { |
bool pinned_state; |
}; |
+struct ActivationTimePayload { |
+ SessionID::id_type tab_id; |
+ int64 last_activation_time; |
+}; |
+ |
// Persisted versions of ui::WindowShowState that are written to disk and can |
// never change. |
enum PersistedWindowShowState { |
@@ -558,6 +564,18 @@ bool CreateTabsAndWindows(const ScopedVector<SessionCommand>& data, |
break; |
} |
+ case kCommandActivationTime: { |
+ ActivationTimePayload payload; |
+ if (!command->GetPayload(&payload, sizeof(payload))) { |
+ DVLOG(1) << "Failed reading command " << command->id(); |
+ return true; |
+ } |
+ SessionTab* tab = GetTab(payload.tab_id, tabs); |
+ tab->last_activation_time = |
+ base::TimeTicks::FromInternalValue(payload.last_activation_time); |
+ break; |
+ } |
+ |
default: |
// TODO(skuhne): This might call back into a callback handler to extend |
// the command set for specific implementations. |
@@ -704,6 +722,18 @@ scoped_ptr<SessionCommand> CreateSetActiveWindowCommand( |
return command; |
} |
+scoped_ptr<SessionCommand> CreateActivationTimeCommand( |
+ const SessionID& tab_id, |
+ base::TimeTicks activation_time) { |
+ ActivationTimePayload payload = {0}; |
+ payload.tab_id = tab_id.id(); |
+ payload.last_activation_time = activation_time.ToInternalValue(); |
+ scoped_ptr<SessionCommand> command( |
+ new SessionCommand(kCommandActivationTime, sizeof(payload))); |
+ memcpy(command->contents(), &payload, sizeof(payload)); |
+ return command; |
+} |
+ |
scoped_ptr<SessionCommand> CreateTabNavigationPathPrunedFromBackCommand( |
const SessionID& tab_id, |
int count) { |