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

Unified Diff: chrome/browser/sessions/session_service.cc

Issue 15055003: Do not submit: high level overview patch. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix build. Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sessions/session_service.cc
diff --git a/chrome/browser/sessions/session_service.cc b/chrome/browser/sessions/session_service.cc
index 0cace940b9e37c8f6268e807077df7b5a6e7a1a3..bedbb000fdb3912312406540deb2cfef24971fc9 100644
--- a/chrome/browser/sessions/session_service.cc
+++ b/chrome/browser/sessions/session_service.cc
@@ -25,6 +25,7 @@
#include "chrome/browser/sessions/session_restore.h"
#include "chrome/browser/sessions/session_tab_helper.h"
#include "chrome/browser/sessions/session_types.h"
+#include "chrome/browser/sync/glue/synced_tab_delegate.h"
#include "chrome/browser/ui/browser_iterator.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_tabstrip.h"
@@ -50,6 +51,7 @@ using base::Time;
using content::NavigationEntry;
using content::WebContents;
using sessions::SerializedNavigationEntry;
+using browser_sync::SyncedTabDelegate;
// Identifier for commands written to file.
static const SessionCommand::id_type kCommandSetTabWindow = 0;
@@ -79,6 +81,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 kCommandSetTabSessionSyncId = 21;
// Every kWritesPerReset commands triggers recreating the file.
static const int kWritesPerReset = 250;
@@ -480,6 +483,15 @@ void SessionService::SetTabUserAgentOverride(
kCommandSetTabUserAgentOverride, tab_id.id(), user_agent_override));
}
+void SessionService::SetTabSessionSyncId(const SessionID& window_id,
+ const SessionID& tab_id,
+ const int64& sync_id) {
+ if (!ShouldTrackChangesToWindow(window_id))
+ return;
+ ScheduleCommand(CreateSetTabSessionSyncIdCommand(
+ kCommandSetTabSessionSyncId, tab_id.id(), sync_id));
+}
+
CancelableTaskTracker::TaskId SessionService::GetLastSession(
const SessionCallback& callback,
CancelableTaskTracker* tracker) {
@@ -518,6 +530,9 @@ void SessionService::Init() {
registrar_.Add(
this, chrome::NOTIFICATION_TAB_CONTENTS_APPLICATION_EXTENSION_CHANGED,
content::NotificationService::AllSources());
+ registrar_.Add(this,
+ chrome::NOTIFICATION_SESSION_SYNC_ID_GENERATED,
+ content::NotificationService::AllSources());
BrowserList::AddObserver(this);
}
@@ -680,6 +695,13 @@ void SessionService::Observe(int type,
extension_tab_helper->extension_app()->id());
}
break;
+
+ }
+ case chrome::NOTIFICATION_SESSION_SYNC_ID_GENERATED: {
+ content::Details<const SyncedTabDelegate> tab(details);
+ SetTabSessionSyncId(
+ tab->GetWindowId(), tab->GetSessionId(), tab->GetSyncSessionId());
+ break;
}
default:
@@ -1261,6 +1283,15 @@ bool SessionService::CreateTabsAndWindows(
break;
}
+ case kCommandSetTabSessionSyncId: {
+ SessionID::id_type tab_id;
+ int64 sync_id = -1;
+ if (!RestoreSetTabSessionSyncIdCommand(*command, &tab_id, &sync_id)) {
+ }
+ GetTab(tab_id, tabs)->sync_session_id = sync_id;
+ break;
+ }
+
default:
VLOG(1) << "Failed reading an unknown command " << command->id();
return true;
@@ -1311,6 +1342,10 @@ void SessionService::BuildCommandsForTab(const SessionID& window_id,
CreateSetTabUserAgentOverrideCommand(
kCommandSetTabUserAgentOverride, session_id.id(), ua_override));
}
+ const int64 sync_id =
+ SessionTabHelper::FromWebContents(tab)->GetSessionSyncId();
+ commands->push_back(CreateSetTabSessionSyncIdCommand(
+ kCommandSetTabSessionSyncId, session_id.id(), sync_id));
for (int i = min_index; i < max_index; ++i) {
const NavigationEntry* entry = (i == pending_index) ?

Powered by Google App Engine
This is Rietveld 408576698