diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/components/feed/core/v2/protocol_translator.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/feed/core/v2/protocol_translator.cc')
-rw-r--r-- | chromium/components/feed/core/v2/protocol_translator.cc | 61 |
1 files changed, 40 insertions, 21 deletions
diff --git a/chromium/components/feed/core/v2/protocol_translator.cc b/chromium/components/feed/core/v2/protocol_translator.cc index 0b0b691ba98..f9c3c74bb32 100644 --- a/chromium/components/feed/core/v2/protocol_translator.cc +++ b/chromium/components/feed/core/v2/protocol_translator.cc @@ -4,10 +4,13 @@ #include "components/feed/core/v2/protocol_translator.h" +#include <string> #include <utility> +#include "base/logging.h" #include "base/optional.h" #include "base/time/time.h" +#include "components/feed/core/proto/v2/packing.pb.h" #include "components/feed/core/proto/v2/wire/data_operation.pb.h" #include "components/feed/core/proto/v2/wire/feature.pb.h" #include "components/feed/core/proto/v2/wire/feed_response.pb.h" @@ -85,10 +88,10 @@ struct ConvertedDataOperation { }; bool TranslateFeature(feedwire::Feature* feature, - ConvertedDataOperation* result) { + ConvertedDataOperation& result) { feedstore::StreamStructure::Type type = TranslateNodeType(feature->renderable_unit()); - result->stream_structure.set_type(type); + result.stream_structure.set_type(type); if (type == feedstore::StreamStructure::CONTENT) { feedwire::Content* wire_content = feature->mutable_content_extension(); @@ -99,10 +102,10 @@ bool TranslateFeature(feedwire::Feature* feature, // TODO(iwells): We still need score, availability_time_seconds, // offline_metadata, and representation_data to populate content_info. - result->content.emplace(); - *(result->content->mutable_content_id()) = - result->stream_structure.content_id(); - result->content->set_allocated_frame( + result.content.emplace(); + *(result.content->mutable_content_id()) = + result.stream_structure.content_id(); + result.content->set_allocated_frame( wire_content->mutable_xsurface_content()->release_xsurface_output()); } return true; @@ -110,26 +113,26 @@ bool TranslateFeature(feedwire::Feature* feature, base::Optional<feedstore::StreamSharedState> TranslateSharedState( feedwire::ContentId content_id, - feedwire::RenderData* wire_shared_state) { - if (wire_shared_state->render_data_type() != feedwire::RenderData::XSURFACE) { + feedwire::RenderData& wire_shared_state) { + if (wire_shared_state.render_data_type() != feedwire::RenderData::XSURFACE) { return base::nullopt; } feedstore::StreamSharedState shared_state; *shared_state.mutable_content_id() = std::move(content_id); shared_state.set_allocated_shared_state_data( - wire_shared_state->mutable_xsurface_container()->release_render_data()); + wire_shared_state.mutable_xsurface_container()->release_render_data()); return shared_state; } bool TranslatePayload(base::Time now, feedwire::DataOperation operation, ConvertedGlobalData* global_data, - ConvertedDataOperation* result) { + ConvertedDataOperation& result) { switch (operation.payload_case()) { case feedwire::DataOperation::kFeature: { feedwire::Feature* feature = operation.mutable_feature(); - result->stream_structure.set_allocated_parent_id( + result.stream_structure.set_allocated_parent_id( feature->release_parent_id()); if (!TranslateFeature(feature, result)) @@ -137,16 +140,16 @@ bool TranslatePayload(base::Time now, } break; case feedwire::DataOperation::kNextPageToken: { feedwire::Token* token = operation.mutable_next_page_token(); - result->stream_structure.set_allocated_parent_id( + result.stream_structure.set_allocated_parent_id( token->release_parent_id()); - result->next_page_token = std::move( + result.next_page_token = std::move( *token->mutable_next_page_token()->mutable_next_page_token()); } break; case feedwire::DataOperation::kRenderData: { - result->shared_state = - TranslateSharedState(result->stream_structure.content_id(), - operation.mutable_render_data()); - if (!result->shared_state) + result.shared_state = + TranslateSharedState(result.stream_structure.content_id(), + *operation.mutable_render_data()); + if (!result.shared_state) return false; } break; case feedwire::DataOperation::kRequestSchedule: { @@ -184,7 +187,7 @@ base::Optional<ConvertedDataOperation> TranslateDataOperationInternal( result.stream_structure.set_allocated_content_id( operation.mutable_metadata()->release_content_id()); - if (!TranslatePayload(now, std::move(operation), global_data, &result)) + if (!TranslatePayload(now, std::move(operation), global_data, result)) return base::nullopt; break; @@ -280,13 +283,15 @@ RefreshResponseData TranslateWireResponse( } } - // TODO(harringtond): If there's more than one shared state, record some - // sort of error. if (!result->shared_states.empty()) { + if (result->shared_states.size() > 1) { + DLOG(ERROR) + << "Receieved more than one shared state. Only the first is used."; + } *result->stream_data.mutable_shared_state_id() = result->shared_states.front().content_id(); } - feedstore::SetLastAddedTime(current_time, &result->stream_data); + feedstore::SetLastAddedTime(current_time, result->stream_data); RefreshResponseData response_data; response_data.model_update_request = std::move(result); @@ -295,4 +300,18 @@ RefreshResponseData TranslateWireResponse( return response_data; } +std::vector<feedstore::DataOperation> TranslateDismissData( + base::Time current_time, + feedpacking::DismissData data) { + std::vector<feedstore::DataOperation> result; + for (auto& operation : data.data_operations()) { + base::Optional<feedstore::DataOperation> translated_operation = + TranslateDataOperation(current_time, operation); + if (translated_operation) { + result.push_back(std::move(translated_operation.value())); + } + } + return result; +} + } // namespace feed |