blob: 155f3680a2a9523273262245660659e746a10777 [file] [log] [blame]
// Copyright 2020 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 "components/query_tiles/test/fake_server_response.h"
#include "base/strings/string_number_conversions.h"
#include "components/query_tiles/internal/tile_fetcher.h"
#include "components/query_tiles/proto/tile_response.pb.h"
namespace query_tiles {
namespace {
constexpr char kTestLocale[] = "en";
std::string BuildPrefix(const std::string& prefix, size_t pos) {
return prefix + "_" + base::NumberToString(pos);
}
void CreateTiles(proto::TileInfoGroup* info_group,
proto::TileInfo* parent,
const std::string& prefix,
int levels,
size_t tiles_per_level) {
if (levels <= 0)
return;
// Add sub-tiles.
for (size_t j = 0; j < tiles_per_level; j++) {
std::string subprefix = BuildPrefix(prefix, j);
parent->add_sub_tile_ids(subprefix + "_id");
auto* new_tile = info_group->add_tiles();
new_tile->set_tile_id(subprefix + "_id");
new_tile->set_display_text(subprefix + "_display_text");
new_tile->set_accessibility_text(subprefix + "_accessibility_text");
new_tile->set_query_string(subprefix + "_query_string");
new_tile->set_is_top_level(false);
// Add sub-tiles.
CreateTiles(info_group, new_tile, subprefix, levels - 1, tiles_per_level);
}
}
// Build a fake two level response proto.
void InitResponseProto(proto::ServerResponse* response,
int levels,
size_t tiles_per_level) {
proto::TileInfoGroup* info_group = response->mutable_tile_group();
info_group->set_locale(kTestLocale);
// Add top level tiles.
for (size_t i = 0; i < tiles_per_level; i++) {
auto* new_top_level_tile = info_group->add_tiles();
std::string prefix = BuildPrefix("Tile", i);
new_top_level_tile->set_tile_id(prefix + "_id");
new_top_level_tile->set_display_text(prefix + "_display_text");
new_top_level_tile->set_accessibility_text(prefix + "_accessibility_text");
new_top_level_tile->set_query_string(prefix + "_query_string");
new_top_level_tile->set_is_top_level(true);
// Add sub-tiles.
CreateTiles(info_group, new_top_level_tile, prefix, levels - 1,
tiles_per_level);
}
}
} // namespace
// static
void FakeServerResponse::SetTileFetcherServerURL(const GURL& url) {
TileFetcher::SetOverrideURLForTesting(url);
}
// static
std::string FakeServerResponse::CreateServerResponseProto(int levels,
int tiles_per_level) {
proto::ServerResponse server_response;
InitResponseProto(&server_response, levels, tiles_per_level);
std::string response_str;
CHECK(server_response.SerializeToString(&response_str));
return response_str;
}
} // namespace query_tiles