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

Side by Side Diff: chrome/browser/ui/webui/ntp/foreign_session_handler.cc

Issue 7966020: [Sync] Fix Session's handling of windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/ui/webui/ntp/foreign_session_handler.h" 5 #include "chrome/browser/ui/webui/ntp/foreign_session_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 #include "base/memory/scoped_vector.h" 10 #include "base/memory/scoped_vector.h"
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 "SessionModelAssociator."; 101 "SessionModelAssociator.";
102 return; 102 return;
103 } 103 }
104 int added_count = 0; 104 int added_count = 0;
105 ListValue session_list; 105 ListValue session_list;
106 for (std::vector<const SyncedSession*>::const_iterator i = 106 for (std::vector<const SyncedSession*>::const_iterator i =
107 sessions.begin(); i != sessions.end() && 107 sessions.begin(); i != sessions.end() &&
108 added_count < kMaxSessionsToShow; ++i) { 108 added_count < kMaxSessionsToShow; ++i) {
109 const SyncedSession* foreign_session = *i; 109 const SyncedSession* foreign_session = *i;
110 scoped_ptr<ListValue> window_list(new ListValue()); 110 scoped_ptr<ListValue> window_list(new ListValue());
111 for (std::vector<SessionWindow*>::const_iterator it = 111 for (SyncedSession::SyncedWindowMap::const_iterator it =
112 foreign_session->windows.begin(); it != foreign_session->windows.end(); 112 foreign_session->windows.begin(); it != foreign_session->windows.end();
113 ++it) { 113 ++it) {
114 SessionWindow* window = *it; 114 SessionWindow* window = it->second;
115 scoped_ptr<DictionaryValue> window_data(new DictionaryValue()); 115 scoped_ptr<DictionaryValue> window_data(new DictionaryValue());
116 if (SessionWindowToValue(*window, window_data.get())) { 116 if (SessionWindowToValue(*window, window_data.get())) {
117 window_data->SetString("sessionTag", foreign_session->session_tag); 117 window_data->SetString("sessionTag", foreign_session->session_tag);
118 118
119 // Give ownership to |list_value|. 119 // Give ownership to |list_value|.
120 window_list->Append(window_data.release()); 120 window_list->Append(window_data.release());
121 } 121 }
122 } 122 }
123 added_count++; 123 added_count++;
124 124
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 if (tab_id != kInvalidId) { 168 if (tab_id != kInvalidId) {
169 // We don't actually care about |window_num|, this is just a sanity check. 169 // We don't actually care about |window_num|, this is just a sanity check.
170 DCHECK_LT(kInvalidId, window_num); 170 DCHECK_LT(kInvalidId, window_num);
171 const SessionTab* tab; 171 const SessionTab* tab;
172 if (!associator->GetForeignTab(session_string_value, tab_id, &tab)) { 172 if (!associator->GetForeignTab(session_string_value, tab_id, &tab)) {
173 LOG(ERROR) << "Failed to load foreign tab."; 173 LOG(ERROR) << "Failed to load foreign tab.";
174 return; 174 return;
175 } 175 }
176 SessionRestore::RestoreForeignSessionTab(profile, *tab); 176 SessionRestore::RestoreForeignSessionTab(profile, *tab);
177 } else { 177 } else {
178 std::vector<SessionWindow*> windows; 178 std::vector<const SessionWindow*> windows;
179 // Note: we don't own the ForeignSessions themselves. 179 // Note: we don't own the ForeignSessions themselves.
180 if (!associator->GetForeignSession(session_string_value, &windows)) { 180 if (!associator->GetForeignSession(session_string_value, &windows)) {
181 LOG(ERROR) << "ForeignSessionHandler failed to get session data from" 181 LOG(ERROR) << "ForeignSessionHandler failed to get session data from"
182 "SessionModelAssociator."; 182 "SessionModelAssociator.";
183 return; 183 return;
184 } 184 }
185 std::vector<SessionWindow*>::const_iterator iter_begin = windows.begin() + 185 std::vector<const SessionWindow*>::const_iterator iter_begin =
186 ((window_num == kInvalidId) ? 0 : window_num); 186 windows.begin() + ((window_num == kInvalidId) ? 0 : window_num);
187 std::vector<SessionWindow*>::const_iterator iter_end = 187 std::vector<const SessionWindow*>::const_iterator iter_end =
188 ((window_num == kInvalidId) ? 188 ((window_num == kInvalidId) ?
189 std::vector<SessionWindow*>::const_iterator(windows.end()) : 189 std::vector<const SessionWindow*>::const_iterator(windows.end()) :
190 iter_begin + 1); 190 iter_begin + 1);
191 SessionRestore::RestoreForeignSessionWindows(profile, iter_begin, iter_end); 191 SessionRestore::RestoreForeignSessionWindows(profile, iter_begin, iter_end);
192 } 192 }
193 } 193 }
194 194
195 bool ForeignSessionHandler::SessionTabToValue( 195 bool ForeignSessionHandler::SessionTabToValue(
196 const SessionTab& tab, 196 const SessionTab& tab,
197 DictionaryValue* dictionary) { 197 DictionaryValue* dictionary) {
198 if (tab.navigations.empty()) 198 if (tab.navigations.empty())
199 return false; 199 return false;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 return false; 232 return false;
233 dictionary->SetString("type", "window"); 233 dictionary->SetString("type", "window");
234 dictionary->SetDouble("timestamp", 234 dictionary->SetDouble("timestamp",
235 static_cast<double>(window.timestamp.ToInternalValue())); 235 static_cast<double>(window.timestamp.ToInternalValue()));
236 dictionary->SetInteger("sessionId", window.window_id.id()); 236 dictionary->SetInteger("sessionId", window.window_id.id());
237 dictionary->Set("tabs", tab_values.release()); 237 dictionary->Set("tabs", tab_values.release());
238 return true; 238 return true;
239 } 239 }
240 240
241 } // namespace browser_sync 241 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698