Commit a26c5322 authored by Ian Wells's avatar Ian Wells Committed by Commit Bot

Update FeedNetwork to make requests to new endpoints

Bug: 1044139
Change-Id: I01a0d041b67e2923d67a5cded6b92f784efd3a86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2121049Reviewed-by: default avatarDan H <harringtond@chromium.org>
Commit-Queue: Ian Wells <iwells@chromium.org>
Cr-Commit-Position: refs/heads/master@{#753477}
parent d3e730ed
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "components/feed/core/common/pref_names.h" #include "components/feed/core/common/pref_names.h"
#include "components/feed/core/proto/v2/wire/action_request.pb.h" #include "components/feed/core/proto/v2/wire/action_request.pb.h"
#include "components/feed/core/proto/v2/wire/feed_action_response.pb.h" #include "components/feed/core/proto/v2/wire/feed_action_response.pb.h"
#include "components/feed/core/proto/v2/wire/feed_query.pb.h"
#include "components/feed/core/proto/v2/wire/request.pb.h" #include "components/feed/core/proto/v2/wire/request.pb.h"
#include "components/feed/core/proto/v2/wire/response.pb.h" #include "components/feed/core/proto/v2/wire/response.pb.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
...@@ -37,6 +38,17 @@ constexpr char kAuthenticationScope[] = ...@@ -37,6 +38,17 @@ constexpr char kAuthenticationScope[] =
"https://www.googleapis.com/auth/googlenow"; "https://www.googleapis.com/auth/googlenow";
constexpr char kApplicationOctetStream[] = "application/octet-stream"; constexpr char kApplicationOctetStream[] = "application/octet-stream";
constexpr base::TimeDelta kNetworkTimeout = base::TimeDelta::FromSeconds(30); constexpr base::TimeDelta kNetworkTimeout = base::TimeDelta::FromSeconds(30);
constexpr char kFeedQueryUrl[] =
"https://www.google.com/httpservice/retry/InteractiveDiscoverAgaService/"
"FeedQuery";
constexpr char kNextPageQueryUrl[] =
"https://www.google.com/httpservice/retry/InteractiveDiscoverAgaService/"
"NextPageQuery";
constexpr char kBackgroundQueryUrl[] =
"https://www.google.com/httpservice/noretry/BackgroundDiscoverAgaService/"
"FeedQuery";
using RawResponse = FeedNetworkImpl::RawResponse; using RawResponse = FeedNetworkImpl::RawResponse;
} // namespace } // namespace
...@@ -366,13 +378,27 @@ FeedNetworkImpl::~FeedNetworkImpl() = default; ...@@ -366,13 +378,27 @@ FeedNetworkImpl::~FeedNetworkImpl() = default;
void FeedNetworkImpl::SendQueryRequest( void FeedNetworkImpl::SendQueryRequest(
const feedwire::Request& request, const feedwire::Request& request,
base::OnceCallback<void(QueryRequestResult)> callback) { base::OnceCallback<void(QueryRequestResult)> callback) {
// TODO(harringtond): Decide how we want to override these URLs for testing.
// Should probably add a command-line flag.
std::string binary_proto; std::string binary_proto;
request.SerializeToString(&binary_proto); request.SerializeToString(&binary_proto);
GURL url(
"https://www.google.com/httpservice/noretry/DiscoverClankService/" // TODO(harringtond): Decide how we want to override these URLs for testing.
"FeedQuery"); // Should probably add a command-line flag.
GURL url;
switch (request.feed_request().feed_query().reason()) {
case feedwire::FeedQuery::SCHEDULED_REFRESH:
case feedwire::FeedQuery::IN_PLACE_UPDATE:
url = GURL(kBackgroundQueryUrl);
break;
case feedwire::FeedQuery::NEXT_PAGE_SCROLL:
url = GURL(kNextPageQueryUrl);
break;
case feedwire::FeedQuery::MANUAL_REFRESH:
url = GURL(kFeedQueryUrl);
break;
default:
std::move(callback).Run({});
return;
}
AddMothershipPayloadQueryParams(/*is_post=*/false, binary_proto, AddMothershipPayloadQueryParams(/*is_post=*/false, binary_proto,
delegate_->GetLanguageTag(), &url); delegate_->GetLanguageTag(), &url);
......
...@@ -40,9 +40,11 @@ using testing::ElementsAre; ...@@ -40,9 +40,11 @@ using testing::ElementsAre;
using ActionRequestResult = FeedNetwork::ActionRequestResult; using ActionRequestResult = FeedNetwork::ActionRequestResult;
using QueryRequestResult = FeedNetwork::QueryRequestResult; using QueryRequestResult = FeedNetwork::QueryRequestResult;
feedwire::Request GetTestFeedRequest() { feedwire::Request GetTestFeedRequest(feedwire::FeedQuery::RequestReason reason =
feedwire::FeedQuery::MANUAL_REFRESH) {
feedwire::Request request; feedwire::Request request;
request.set_request_version(feedwire::Request::FEED_QUERY); request.set_request_version(feedwire::Request::FEED_QUERY);
request.mutable_feed_request()->mutable_feed_query()->set_reason(reason);
return request; return request;
} }
...@@ -182,12 +184,11 @@ class FeedNetworkTest : public testing::Test { ...@@ -182,12 +184,11 @@ class FeedNetworkTest : public testing::Test {
TEST_F(FeedNetworkTest, SendQueryRequestEmpty) { TEST_F(FeedNetworkTest, SendQueryRequestEmpty) {
CallbackReceiver<QueryRequestResult> receiver; CallbackReceiver<QueryRequestResult> receiver;
feed_network()->SendQueryRequest(feedwire::Request(), receiver.Bind()); feed_network()->SendQueryRequest(feedwire::Request(), receiver.Bind());
RespondToQueryRequest("", net::HTTP_OK);
ASSERT_TRUE(receiver.GetResult()); ASSERT_TRUE(receiver.GetResult());
const QueryRequestResult& result = *receiver.GetResult(); const QueryRequestResult& result = *receiver.GetResult();
EXPECT_EQ(net::HTTP_OK, result.status_code); EXPECT_EQ(0, result.status_code);
EXPECT_TRUE(result.response_body); EXPECT_FALSE(result.response_body);
} }
TEST_F(FeedNetworkTest, SendQueryRequestSendsValidRequest) { TEST_F(FeedNetworkTest, SendQueryRequestSendsValidRequest) {
...@@ -197,8 +198,8 @@ TEST_F(FeedNetworkTest, SendQueryRequestSendsValidRequest) { ...@@ -197,8 +198,8 @@ TEST_F(FeedNetworkTest, SendQueryRequestSendsValidRequest) {
RespondToQueryRequest("", net::HTTP_OK); RespondToQueryRequest("", net::HTTP_OK);
EXPECT_EQ( EXPECT_EQ(
"https://www.google.com/httpservice/noretry/" "https://www.google.com/httpservice/retry/InteractiveDiscoverAgaService/"
"DiscoverClankService/FeedQuery?reqpld=%08%01&fmt=bin&hl=en", "FeedQuery?reqpld=%08%01%C2%3E%04%12%02%08%01&fmt=bin&hl=en",
resource_request.url); resource_request.url);
EXPECT_EQ("GET", resource_request.method); EXPECT_EQ("GET", resource_request.method);
EXPECT_FALSE(resource_request.headers.HasHeader("content-encoding")); EXPECT_FALSE(resource_request.headers.HasHeader("content-encoding"));
...@@ -221,7 +222,7 @@ TEST_F(FeedNetworkTest, SendQueryRequestInvalidResponse) { ...@@ -221,7 +222,7 @@ TEST_F(FeedNetworkTest, SendQueryRequestInvalidResponse) {
TEST_F(FeedNetworkTest, SendQueryRequestReceivesResponse) { TEST_F(FeedNetworkTest, SendQueryRequestReceivesResponse) {
CallbackReceiver<QueryRequestResult> receiver; CallbackReceiver<QueryRequestResult> receiver;
feed_network()->SendQueryRequest(feedwire::Request(), receiver.Bind()); feed_network()->SendQueryRequest(GetTestFeedRequest(), receiver.Bind());
RespondToQueryRequest(GetTestFeedResponse(), net::HTTP_OK); RespondToQueryRequest(GetTestFeedResponse(), net::HTTP_OK);
ASSERT_TRUE(receiver.GetResult()); ASSERT_TRUE(receiver.GetResult());
...@@ -233,7 +234,7 @@ TEST_F(FeedNetworkTest, SendQueryRequestReceivesResponse) { ...@@ -233,7 +234,7 @@ TEST_F(FeedNetworkTest, SendQueryRequestReceivesResponse) {
TEST_F(FeedNetworkTest, SendQueryRequestIgnoresBodyForNon200Response) { TEST_F(FeedNetworkTest, SendQueryRequestIgnoresBodyForNon200Response) {
CallbackReceiver<QueryRequestResult> receiver; CallbackReceiver<QueryRequestResult> receiver;
feed_network()->SendQueryRequest(feedwire::Request(), receiver.Bind()); feed_network()->SendQueryRequest(GetTestFeedRequest(), receiver.Bind());
RespondToQueryRequest(GetTestFeedResponse(), net::HTTP_FORBIDDEN); RespondToQueryRequest(GetTestFeedResponse(), net::HTTP_FORBIDDEN);
ASSERT_TRUE(receiver.GetResult()); ASSERT_TRUE(receiver.GetResult());
...@@ -254,7 +255,7 @@ TEST_F(FeedNetworkTest, CancelRequest) { ...@@ -254,7 +255,7 @@ TEST_F(FeedNetworkTest, CancelRequest) {
TEST_F(FeedNetworkTest, RequestTimeout) { TEST_F(FeedNetworkTest, RequestTimeout) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
CallbackReceiver<QueryRequestResult> receiver; CallbackReceiver<QueryRequestResult> receiver;
feed_network()->SendQueryRequest(feedwire::Request(), receiver.Bind()); feed_network()->SendQueryRequest(GetTestFeedRequest(), receiver.Bind());
task_environment_.FastForwardBy(TimeDelta::FromSeconds(30)); task_environment_.FastForwardBy(TimeDelta::FromSeconds(30));
ASSERT_TRUE(receiver.GetResult()); ASSERT_TRUE(receiver.GetResult());
...@@ -268,7 +269,11 @@ TEST_F(FeedNetworkTest, RequestTimeout) { ...@@ -268,7 +269,11 @@ TEST_F(FeedNetworkTest, RequestTimeout) {
TEST_F(FeedNetworkTest, ParallelRequests) { TEST_F(FeedNetworkTest, ParallelRequests) {
CallbackReceiver<QueryRequestResult> receiver1, receiver2; CallbackReceiver<QueryRequestResult> receiver1, receiver2;
feed_network()->SendQueryRequest(GetTestFeedRequest(), receiver1.Bind()); feed_network()->SendQueryRequest(GetTestFeedRequest(), receiver1.Bind());
feed_network()->SendQueryRequest(feedwire::Request(), receiver2.Bind()); // Make another request with a different URL so Respond() won't affect both
// requests.
feed_network()->SendQueryRequest(
GetTestFeedRequest(feedwire::FeedQuery::NEXT_PAGE_SCROLL),
receiver2.Bind());
// Respond to both requests, avoiding FastForwardUntilNoTasksRemain until // Respond to both requests, avoiding FastForwardUntilNoTasksRemain until
// a response is added for both requests. // a response is added for both requests.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment