123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file.
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "sync/internal_api/public/events/normal_get_updates_request_event.h"
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/strings/stringprintf.h"
823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "sync/protocol/proto_value_conversions.h"
923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "sync/sessions/nudge_tracker.h"
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace syncer {
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)NormalGetUpdatesRequestEvent::NormalGetUpdatesRequestEvent(
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      base::Time timestamp,
1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      const sessions::NudgeTracker& nudge_tracker,
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      const sync_pb::ClientToServerMessage& request)
1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  : timestamp_(timestamp),
1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    nudged_types_(nudge_tracker.GetNudgedTypes()),
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    notified_types_(nudge_tracker.GetNotifiedTypes()),
2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    refresh_requested_types_(nudge_tracker.GetRefreshRequestedTypes()),
2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    is_retry_(nudge_tracker.IsRetryRequired()),
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    request_(request) { }
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)NormalGetUpdatesRequestEvent::~NormalGetUpdatesRequestEvent() {}
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)base::Time NormalGetUpdatesRequestEvent::GetTimestamp() const {
2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return timestamp_;
2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)std::string NormalGetUpdatesRequestEvent::GetType() const {
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return "Normal GetUpdate request";
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)std::string NormalGetUpdatesRequestEvent::GetDetails() const {
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  std::string details;
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  if (!nudged_types_.Empty()) {
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    if (!details.empty())
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      details.append("\n");
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    details.append(base::StringPrintf(
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)        "Nudged types: %s",
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)        ModelTypeSetToString(nudged_types_).c_str()));
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  }
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  if (!notified_types_.Empty()) {
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    if (!details.empty())
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      details.append("\n");
4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    details.append(base::StringPrintf(
4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)        "Notified types: %s",
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)        ModelTypeSetToString(notified_types_).c_str()));
5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  }
5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  if (!refresh_requested_types_.Empty()) {
5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    if (!details.empty())
5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      details.append("\n");
5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    details.append(base::StringPrintf(
5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      "Refresh requested types: %s",
5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      ModelTypeSetToString(refresh_requested_types_).c_str()));
5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  }
6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  if (is_retry_) {
6223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    if (!details.empty())
6323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      details.append("\n");
6423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    details.append(base::StringPrintf("Is retry: True"));
6523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  }
6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
6723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return details;
6823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
7023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)scoped_ptr<base::DictionaryValue>
7123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)NormalGetUpdatesRequestEvent::GetProtoMessage() const {
7223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return scoped_ptr<base::DictionaryValue>(
7323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    ClientToServerMessageToValue(request_, false));
7423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
7523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
7623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)scoped_ptr<ProtocolEvent> NormalGetUpdatesRequestEvent::Clone() const {
7723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  return scoped_ptr<ProtocolEvent>(
7823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      new NormalGetUpdatesRequestEvent(
7923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          timestamp_,
8023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          nudged_types_,
8123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          notified_types_,
8223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          refresh_requested_types_,
8323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          is_retry_,
8423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)          request_));
8523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
8623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
8723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)NormalGetUpdatesRequestEvent::NormalGetUpdatesRequestEvent(
8823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      base::Time timestamp,
8923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      ModelTypeSet nudged_types,
9023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      ModelTypeSet notified_types,
9123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      ModelTypeSet refresh_requested_types,
9223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      bool is_retry,
9323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      sync_pb::ClientToServerMessage request)
9423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  : timestamp_(timestamp),
9523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    nudged_types_(nudged_types),
9623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    notified_types_(notified_types),
9723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    refresh_requested_types_(refresh_requested_types),
9823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    is_retry_(is_retry),
9923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    request_(request) {}
10023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
10123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namespace
102