Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/foreign_session_handler.h" | 5 #include "chrome/browser/ui/webui/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 | 10 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 151 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); | 151 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); |
| 152 | 152 |
| 153 // Only return the delegate if it exists and it is done syncing sessions. | 153 // Only return the delegate if it exists and it is done syncing sessions. |
| 154 if (service && service->SyncActive()) | 154 if (service && service->SyncActive()) |
| 155 return service->GetOpenTabsUIDelegate(); | 155 return service->GetOpenTabsUIDelegate(); |
| 156 | 156 |
| 157 return NULL; | 157 return NULL; |
| 158 } | 158 } |
| 159 | 159 |
| 160 void ForeignSessionHandler::RegisterMessages() { | 160 void ForeignSessionHandler::RegisterMessages() { |
| 161 Init(); | 161 Profile* profile = Profile::FromWebUI(web_ui()); |
|
Dan Beam
2015/05/20 18:40:02
only called one place
| |
| 162 ProfileSyncService* service = | |
| 163 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); | |
| 164 registrar_.Add(this, chrome::NOTIFICATION_SYNC_CONFIGURE_DONE, | |
| 165 content::Source<ProfileSyncService>(service)); | |
| 166 registrar_.Add(this, chrome::NOTIFICATION_FOREIGN_SESSION_UPDATED, | |
| 167 content::Source<Profile>(profile)); | |
| 168 registrar_.Add(this, chrome::NOTIFICATION_FOREIGN_SESSION_DISABLED, | |
| 169 content::Source<Profile>(profile)); | |
| 170 | |
| 162 web_ui()->RegisterMessageCallback("deleteForeignSession", | 171 web_ui()->RegisterMessageCallback("deleteForeignSession", |
| 163 base::Bind(&ForeignSessionHandler::HandleDeleteForeignSession, | 172 base::Bind(&ForeignSessionHandler::HandleDeleteForeignSession, |
| 164 base::Unretained(this))); | 173 base::Unretained(this))); |
| 165 web_ui()->RegisterMessageCallback("getForeignSessions", | 174 web_ui()->RegisterMessageCallback("getForeignSessions", |
| 166 base::Bind(&ForeignSessionHandler::HandleGetForeignSessions, | 175 base::Bind(&ForeignSessionHandler::HandleGetForeignSessions, |
| 167 base::Unretained(this))); | 176 base::Unretained(this))); |
| 168 web_ui()->RegisterMessageCallback("openForeignSession", | 177 web_ui()->RegisterMessageCallback("openForeignSession", |
| 169 base::Bind(&ForeignSessionHandler::HandleOpenForeignSession, | 178 base::Bind(&ForeignSessionHandler::HandleOpenForeignSession, |
| 170 base::Unretained(this))); | 179 base::Unretained(this))); |
| 171 web_ui()->RegisterMessageCallback("setForeignSessionCollapsed", | 180 web_ui()->RegisterMessageCallback("setForeignSessionCollapsed", |
| 172 base::Bind(&ForeignSessionHandler::HandleSetForeignSessionCollapsed, | 181 base::Bind(&ForeignSessionHandler::HandleSetForeignSessionCollapsed, |
| 173 base::Unretained(this))); | 182 base::Unretained(this))); |
| 174 } | 183 } |
| 175 | 184 |
| 176 void ForeignSessionHandler::Init() { | |
| 177 Profile* profile = Profile::FromWebUI(web_ui()); | |
| 178 ProfileSyncService* service = | |
| 179 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); | |
| 180 registrar_.Add(this, chrome::NOTIFICATION_SYNC_CONFIGURE_DONE, | |
| 181 content::Source<ProfileSyncService>(service)); | |
| 182 registrar_.Add(this, chrome::NOTIFICATION_FOREIGN_SESSION_UPDATED, | |
| 183 content::Source<Profile>(profile)); | |
| 184 registrar_.Add(this, chrome::NOTIFICATION_FOREIGN_SESSION_DISABLED, | |
| 185 content::Source<Profile>(profile)); | |
| 186 } | |
| 187 | |
| 188 void ForeignSessionHandler::Observe( | 185 void ForeignSessionHandler::Observe( |
| 189 int type, | 186 int type, |
| 190 const content::NotificationSource& source, | 187 const content::NotificationSource& source, |
| 191 const content::NotificationDetails& details) { | 188 const content::NotificationDetails& details) { |
| 192 base::ListValue list_value; | |
|
Dan Beam
2015/05/20 18:40:02
not needed, declared too high. just axed.
| |
| 193 | |
| 194 switch (type) { | 189 switch (type) { |
| 195 case chrome::NOTIFICATION_FOREIGN_SESSION_DISABLED: | 190 case chrome::NOTIFICATION_FOREIGN_SESSION_DISABLED: |
| 196 // Tab sync is disabled, so clean up data about collapsed sessions. | 191 // Tab sync is disabled, so clean up data about collapsed sessions. |
| 197 Profile::FromWebUI(web_ui())->GetPrefs()->ClearPref( | 192 Profile::FromWebUI(web_ui())->GetPrefs()->ClearPref( |
| 198 prefs::kNtpCollapsedForeignSessions); | 193 prefs::kNtpCollapsedForeignSessions); |
| 199 // Fall through. | 194 // Fall through. |
| 200 case chrome::NOTIFICATION_SYNC_CONFIGURE_DONE: | 195 case chrome::NOTIFICATION_SYNC_CONFIGURE_DONE: |
| 201 case chrome::NOTIFICATION_FOREIGN_SESSION_UPDATED: | 196 case chrome::NOTIFICATION_FOREIGN_SESSION_UPDATED: |
| 202 HandleGetForeignSessions(&list_value); | 197 HandleGetForeignSessions(nullptr); |
| 203 break; | 198 break; |
| 204 default: | 199 default: |
| 205 NOTREACHED(); | 200 NOTREACHED(); |
| 206 } | 201 } |
| 207 } | 202 } |
| 208 | 203 |
| 209 | |
| 210 bool ForeignSessionHandler::IsTabSyncEnabled() { | 204 bool ForeignSessionHandler::IsTabSyncEnabled() { |
| 211 Profile* profile = Profile::FromWebUI(web_ui()); | 205 Profile* profile = Profile::FromWebUI(web_ui()); |
| 212 ProfileSyncService* service = | 206 ProfileSyncService* service = |
| 213 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); | 207 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); |
| 214 return service && service->GetActiveDataTypes().Has(syncer::PROXY_TABS); | 208 return service && service->GetActiveDataTypes().Has(syncer::PROXY_TABS); |
| 215 } | 209 } |
| 216 | 210 |
| 217 base::string16 ForeignSessionHandler::FormatSessionTime( | 211 base::string16 ForeignSessionHandler::FormatSessionTime( |
| 218 const base::Time& time) { | 212 const base::Time& time) { |
| 219 // Return a time like "1 hour ago", "2 days ago", etc. | 213 // Return a time like "1 hour ago", "2 days ago", etc. |
| 220 base::Time now = base::Time::Now(); | 214 base::Time now = base::Time::Now(); |
| 221 // TimeFormat does not support negative TimeDelta values, so then we use 0. | 215 // TimeFormat does not support negative TimeDelta values, so then we use 0. |
| 222 return ui::TimeFormat::Simple( | 216 return ui::TimeFormat::Simple( |
| 223 ui::TimeFormat::FORMAT_ELAPSED, ui::TimeFormat::LENGTH_SHORT, | 217 ui::TimeFormat::FORMAT_ELAPSED, ui::TimeFormat::LENGTH_SHORT, |
| 224 now < time ? base::TimeDelta() : now - time); | 218 now < time ? base::TimeDelta() : now - time); |
| 225 } | 219 } |
| 226 | 220 |
| 227 void ForeignSessionHandler::HandleGetForeignSessions( | 221 void ForeignSessionHandler::HandleGetForeignSessions( |
| 228 const base::ListValue* args) { | 222 const base::ListValue* /*args*/) { |
| 229 OpenTabsUIDelegate* open_tabs = GetOpenTabsUIDelegate(web_ui()); | 223 OpenTabsUIDelegate* open_tabs = GetOpenTabsUIDelegate(web_ui()); |
| 230 std::vector<const SyncedSession*> sessions; | 224 std::vector<const SyncedSession*> sessions; |
| 231 | 225 |
| 232 base::ListValue session_list; | 226 base::ListValue session_list; |
| 233 if (open_tabs && open_tabs->GetAllForeignSessions(&sessions)) { | 227 if (open_tabs && open_tabs->GetAllForeignSessions(&sessions)) { |
| 234 // Sort sessions from most recent to least recent. | 228 // Sort sessions from most recent to least recent. |
| 235 std::sort(sessions.begin(), sessions.end(), SortSessionsByRecency); | 229 std::sort(sessions.begin(), sessions.end(), SortSessionsByRecency); |
| 236 | 230 |
| 237 // Use a pref to keep track of sessions that were collapsed by the user. | 231 // Use a pref to keep track of sessions that were collapsed by the user. |
| 238 // To prevent the pref from accumulating stale sessions, clear it each time | 232 // To prevent the pref from accumulating stale sessions, clear it each time |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 413 last_synced < base::TimeDelta::FromMinutes(1) ? | 407 last_synced < base::TimeDelta::FromMinutes(1) ? |
| 414 l10n_util::GetStringUTF16(IDS_SYNC_TIME_JUST_NOW) : | 408 l10n_util::GetStringUTF16(IDS_SYNC_TIME_JUST_NOW) : |
| 415 ui::TimeFormat::Simple(ui::TimeFormat::FORMAT_ELAPSED, | 409 ui::TimeFormat::Simple(ui::TimeFormat::FORMAT_ELAPSED, |
| 416 ui::TimeFormat::LENGTH_SHORT, last_synced)); | 410 ui::TimeFormat::LENGTH_SHORT, last_synced)); |
| 417 dictionary->SetInteger("sessionId", window.window_id.id()); | 411 dictionary->SetInteger("sessionId", window.window_id.id()); |
| 418 dictionary->Set("tabs", tab_values.release()); | 412 dictionary->Set("tabs", tab_values.release()); |
| 419 return true; | 413 return true; |
| 420 } | 414 } |
| 421 | 415 |
| 422 } // namespace browser_sync | 416 } // namespace browser_sync |
| OLD | NEW |