fake_server_response.cc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. #include "components/query_tiles/test/fake_server_response.h"
  5. #include "base/strings/string_number_conversions.h"
  6. #include "components/query_tiles/internal/tile_fetcher.h"
  7. #include "components/query_tiles/proto/tile_response.pb.h"
  8. namespace query_tiles {
  9. namespace {
  10. constexpr char kTestLocale[] = "en";
  11. std::string BuildPrefix(const std::string& prefix, size_t pos) {
  12. return prefix + "_" + base::NumberToString(pos);
  13. }
  14. void CreateTiles(proto::TileInfoGroup* info_group,
  15. proto::TileInfo* parent,
  16. const std::string& prefix,
  17. int levels,
  18. size_t tiles_per_level) {
  19. if (levels <= 0)
  20. return;
  21. // Add sub-tiles.
  22. for (size_t j = 0; j < tiles_per_level; j++) {
  23. std::string subprefix = BuildPrefix(prefix, j);
  24. parent->add_sub_tile_ids(subprefix + "_id");
  25. auto* new_tile = info_group->add_tiles();
  26. new_tile->set_tile_id(subprefix + "_id");
  27. new_tile->set_display_text(subprefix + "_display_text");
  28. new_tile->set_accessibility_text(subprefix + "_accessibility_text");
  29. new_tile->set_query_string(subprefix + "_query_string");
  30. new_tile->set_is_top_level(false);
  31. // Add sub-tiles.
  32. CreateTiles(info_group, new_tile, subprefix, levels - 1, tiles_per_level);
  33. }
  34. }
  35. // Build a fake two level response proto.
  36. void InitResponseProto(proto::ServerResponse* response,
  37. int levels,
  38. size_t tiles_per_level) {
  39. proto::TileInfoGroup* info_group = response->mutable_tile_group();
  40. info_group->set_locale(kTestLocale);
  41. // Add top level tiles.
  42. for (size_t i = 0; i < tiles_per_level; i++) {
  43. auto* new_top_level_tile = info_group->add_tiles();
  44. std::string prefix = BuildPrefix("Tile", i);
  45. new_top_level_tile->set_tile_id(prefix + "_id");
  46. new_top_level_tile->set_display_text(prefix + "_display_text");
  47. new_top_level_tile->set_accessibility_text(prefix + "_accessibility_text");
  48. new_top_level_tile->set_query_string(prefix + "_query_string");
  49. new_top_level_tile->set_is_top_level(true);
  50. // Add sub-tiles.
  51. CreateTiles(info_group, new_top_level_tile, prefix, levels - 1,
  52. tiles_per_level);
  53. }
  54. }
  55. } // namespace
  56. // static
  57. void FakeServerResponse::SetTileFetcherServerURL(const GURL& url) {
  58. TileFetcher::SetOverrideURLForTesting(url);
  59. }
  60. // static
  61. std::string FakeServerResponse::CreateServerResponseProto(int levels,
  62. int tiles_per_level) {
  63. proto::ServerResponse server_response;
  64. InitResponseProto(&server_response, levels, tiles_per_level);
  65. std::string response_str;
  66. CHECK(server_response.SerializeToString(&response_str));
  67. return response_str;
  68. }
  69. } // namespace query_tiles