1 // Copyright 2020 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_FEED_CORE_V2_FEED_NETWORK_H_ 6 #define COMPONENTS_FEED_CORE_V2_FEED_NETWORK_H_ 7 8 #include <memory> 9 10 #include "base/callback.h" 11 #include "components/feed/core/v2/public/types.h" 12 13 namespace feedwire { 14 class UploadActionsResponse; 15 class UploadActionsRequest; 16 class Request; 17 class Response; 18 } // namespace feedwire 19 20 namespace feed { 21 22 class FeedNetwork { 23 public: 24 // Result of SendQueryRequest. 25 struct QueryRequestResult { 26 QueryRequestResult(); 27 ~QueryRequestResult(); 28 QueryRequestResult(QueryRequestResult&&); 29 QueryRequestResult& operator=(QueryRequestResult&&); 30 NetworkResponseInfo response_info; 31 // Response body if one was received. 32 std::unique_ptr<feedwire::Response> response_body; 33 // Whether the request was signed in. 34 bool was_signed_in; 35 }; 36 37 // Result of SendActionRequest. 38 struct ActionRequestResult { 39 ActionRequestResult(); 40 ~ActionRequestResult(); 41 ActionRequestResult(ActionRequestResult&&); 42 ActionRequestResult& operator=(ActionRequestResult&&); 43 NetworkResponseInfo response_info; 44 // Response body if one was received. 45 std::unique_ptr<feedwire::UploadActionsResponse> response_body; 46 }; 47 48 virtual ~FeedNetwork(); 49 50 // Send a feedwire::Request, and receive the response in |callback|. 51 // |callback| will be called unless the request is canceled with 52 // |CancelRequests()|. 53 virtual void SendQueryRequest( 54 const feedwire::Request& request, 55 bool force_signed_out_request, 56 base::OnceCallback<void(QueryRequestResult)> callback) = 0; 57 58 // Send a feedwire::UploadActionsRequest, and receive the response in 59 // |callback|. |callback| will be called unless the request is canceled with 60 // |CancelRequests()|. 61 virtual void SendActionRequest( 62 const feedwire::UploadActionsRequest& request, 63 base::OnceCallback<void(ActionRequestResult)> callback) = 0; 64 65 // Cancels all pending requests immediately. This could be used, for example, 66 // if there are pending requests for a user who just signed out. 67 virtual void CancelRequests() = 0; 68 }; 69 70 } // namespace feed 71 72 #endif // COMPONENTS_FEED_CORE_V2_FEED_NETWORK_H_ 73