| Index: chrome/browser/ui/webui/ntp/foreign_session_handler.cc
|
| diff --git a/chrome/browser/ui/webui/ntp/foreign_session_handler.cc b/chrome/browser/ui/webui/ntp/foreign_session_handler.cc
|
| index 1a2f0dc737c8b19ce9cddc94bb36ea0e742dde56..525915052568ccc294e689dabf01db327e6504f0 100644
|
| --- a/chrome/browser/ui/webui/ntp/foreign_session_handler.cc
|
| +++ b/chrome/browser/ui/webui/ntp/foreign_session_handler.cc
|
| @@ -9,6 +9,7 @@
|
| #include <vector>
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| +#include "base/i18n/time_formatting.h"
|
| #include "base/memory/scoped_vector.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/utf_string_conversions.h"
|
| @@ -20,6 +21,7 @@
|
| #include "chrome/browser/ui/webui/ntp/new_tab_ui.h"
|
| #include "chrome/browser/ui/webui/web_ui_util.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| +#include "chrome/common/time_format.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/notification_source.h"
|
| @@ -54,6 +56,9 @@ void ForeignSessionHandler::RegisterMessages() {
|
| web_ui()->RegisterMessageCallback("openForeignSession",
|
| base::Bind(&ForeignSessionHandler::HandleOpenForeignSession,
|
| base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback("deleteForeignSession",
|
| + base::Bind(&ForeignSessionHandler::HandleDeleteForeignSession,
|
| + base::Unretained(this)));
|
| }
|
|
|
| void ForeignSessionHandler::Init() {
|
| @@ -104,6 +109,11 @@ bool ForeignSessionHandler::IsTabSyncEnabled() {
|
| return service && service->GetSessionModelAssociator();
|
| }
|
|
|
| +string16 ForeignSessionHandler::FormatSessionTime(const base::Time& time) {
|
| + // Return a time like "1 hour ago", "2 days ago", etc.
|
| + return TimeFormat::TimeElapsed(base::Time::Now() - time);
|
| +}
|
| +
|
| void ForeignSessionHandler::HandleGetForeignSessions(const ListValue* args) {
|
| SessionModelAssociator* associator = GetModelAssociator();
|
| std::vector<const SyncedSession*> sessions;
|
| @@ -119,6 +129,8 @@ void ForeignSessionHandler::HandleGetForeignSessions(const ListValue* args) {
|
| scoped_ptr<DictionaryValue> session_data(new DictionaryValue());
|
| session_data->SetString("tag", session->session_tag);
|
| session_data->SetString("name", session->session_name);
|
| + session_data->SetString("modifiedTime",
|
| + FormatSessionTime(session->modified_time));
|
| scoped_ptr<ListValue> window_list(new ListValue());
|
| for (SyncedSession::SyncedWindowMap::const_iterator it =
|
| session->windows.begin(); it != session->windows.end(); ++it) {
|
| @@ -138,8 +150,7 @@ void ForeignSessionHandler::HandleGetForeignSessions(const ListValue* args) {
|
| tab_sync_enabled);
|
| }
|
|
|
| -void ForeignSessionHandler::HandleOpenForeignSession(
|
| - const ListValue* args) {
|
| +void ForeignSessionHandler::HandleOpenForeignSession(const ListValue* args) {
|
| size_t num_args = args->GetSize();
|
| // Expect either 2 or 8 args. For restoring an entire window, only
|
| // two arguments are required -- the session tag and the window id.
|
| @@ -152,7 +163,7 @@ void ForeignSessionHandler::HandleOpenForeignSession(
|
| return;
|
| }
|
|
|
| - // Extract the machine tag (always provided).
|
| + // Extract the session tag (always provided).
|
| std::string session_string_value;
|
| if (!args->GetString(0, &session_string_value)) {
|
| LOG(ERROR) << "Failed to extract session tag.";
|
| @@ -209,6 +220,20 @@ void ForeignSessionHandler::HandleOpenForeignSession(
|
| }
|
| }
|
|
|
| +void ForeignSessionHandler::HandleDeleteForeignSession(const ListValue* args) {
|
| + if (args->GetSize() != 1U) {
|
| + LOG(ERROR) << "Wrong number of args to deleteForeignSession";
|
| + return;
|
| + }
|
| +
|
| + // Get the session tag argument (required).
|
| + std::string session_tag = UTF16ToUTF8(ExtractStringValue(args));
|
| +
|
| + SessionModelAssociator* associator = GetModelAssociator();
|
| + if (associator)
|
| + associator->DeleteForeignSession(session_tag);
|
| +}
|
| +
|
| bool ForeignSessionHandler::SessionTabToValue(
|
| const SessionTab& tab,
|
| DictionaryValue* dictionary) {
|
|
|