// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "sync/engine/clear_server_data.h" #include "base/trace_event/trace_event.h" #include "sync/engine/syncer.h" #include "sync/engine/syncer_proto_util.h" #include "sync/internal_api/public/events/clear_server_data_request_event.h" #include "sync/internal_api/public/events/clear_server_data_response_event.h" #include "sync/sessions/sync_session.h" namespace syncer { ClearServerData::ClearServerData(const std::string& account_name) { request_.set_share(account_name); request_.set_message_contents( sync_pb::ClientToServerMessage::CLEAR_SERVER_DATA); request_.mutable_clear_server_data(); } ClearServerData::~ClearServerData() {} SyncerError ClearServerData::SendRequest(sessions::SyncSession* session) { if (session->context()->debug_info_getter()) { sync_pb::DebugInfo* debug_info = request_.mutable_debug_info(); session->context()->debug_info_getter()->GetDebugInfo(debug_info); } DVLOG(1) << "Sending ClearServerData message."; const ClearServerDataRequestEvent request_event(base::Time::Now(), request_); session->SendProtocolEvent(request_event); sync_pb::ClientToServerResponse response; TRACE_EVENT_BEGIN0("sync", "PostClearServerData"); const SyncerError post_result = SyncerProtoUtil::PostClientToServerMessage( &request_, &response, session, nullptr); TRACE_EVENT_END0("sync", "PostClearServerData"); const ClearServerDataResponseEvent response_event(base::Time::Now(), post_result, response); session->SendProtocolEvent(response_event); if (post_result != SYNCER_OK) { DVLOG(1) << "Post ClearServerData failed"; return post_result; } if (!response.has_clear_server_data()) { DVLOG(1) << "ClearServerData response has no ClearServerData body!"; return SERVER_RESPONSE_VALIDATION_FAILED; } if (session->context()->debug_info_getter()) { DVLOG(1) << "Clearing client debug info."; session->context()->debug_info_getter()->ClearDebugInfo(); } return post_result; } } // namespace syncer