fake_tile_service.cc 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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_tile_service.h"
  5. #include <utility>
  6. #include <vector>
  7. #include "base/threading/thread_task_runner_handle.h"
  8. namespace query_tiles {
  9. namespace {
  10. std::unique_ptr<Tile> CreateTile(const std::string& id,
  11. const std::string& display_text,
  12. const std::string& query_text,
  13. const std::string& url) {
  14. auto tile = std::make_unique<Tile>();
  15. tile->id = id;
  16. tile->display_text = display_text;
  17. tile->accessibility_text = display_text;
  18. tile->query_text = query_text;
  19. tile->image_metadatas.emplace_back(GURL(url));
  20. return tile;
  21. }
  22. void AddChild(Tile* parent, std::unique_ptr<Tile> child) {
  23. parent->sub_tiles.emplace_back(std::move(child));
  24. }
  25. std::vector<std::unique_ptr<Tile>> BuildFakeTree() {
  26. std::vector<std::unique_ptr<Tile>> top_tiles;
  27. auto tile1 = CreateTile("1", "News", "News",
  28. "http://t0.gstatic.com/"
  29. "images?q=tbn:ANd9GcTFlesDfqnMIxCvcotuKHBR-"
  30. "U4cSOG1ceOcoitEOWuiRq9MqNn05e6agwcQHVXiQ3A");
  31. AddChild(tile1.get(),
  32. CreateTile("tile1_1", "India", "India",
  33. "http://t2.gstatic.com/"
  34. "images?q=tbn:ANd9GcTCr5Ene2snzAE_"
  35. "tOxcZ6AlKrH8CLA4aYQYYLRepngj5oh5bwHagRF0ootjfRDlM1k"));
  36. auto tile2 = CreateTile("2", "Films", "Films",
  37. "http://t1.gstatic.com/"
  38. "images?q=tbn:"
  39. "ANd9GcRuSbDebh0CCLeMEr2Wh8qmHpWSKdbqrZFWZsndsu7TMtPe"
  40. "eNDYIKrQqexISQ4Bk0U");
  41. top_tiles.push_back(std::move(tile1));
  42. top_tiles.push_back(std::move(tile2));
  43. return top_tiles;
  44. }
  45. absl::optional<Tile> FindTile(std::vector<std::unique_ptr<Tile>>& tiles,
  46. const std::string& id) {
  47. for (const auto& tile : tiles) {
  48. if (id == tile->id)
  49. return *tile.get();
  50. }
  51. for (const auto& tile : tiles) {
  52. for (const auto& child : tile->sub_tiles) {
  53. if (id == child->id)
  54. return *child.get();
  55. }
  56. }
  57. return absl::nullopt;
  58. }
  59. } // namespace
  60. FakeTileService::FakeTileService() : tiles_(BuildFakeTree()) {}
  61. FakeTileService::~FakeTileService() = default;
  62. void FakeTileService::GetQueryTiles(GetTilesCallback callback) {
  63. std::vector<Tile> tiles;
  64. for (auto& tile : tiles_)
  65. tiles.push_back(*tile.get());
  66. base::ThreadTaskRunnerHandle::Get()->PostTask(
  67. FROM_HERE, base::BindOnce(std::move(callback), std::move(tiles)));
  68. }
  69. void FakeTileService::GetTile(const std::string& tile_id,
  70. TileCallback callback) {
  71. auto tile = FindTile(tiles_, tile_id);
  72. base::ThreadTaskRunnerHandle::Get()->PostTask(
  73. FROM_HERE, base::BindOnce(std::move(callback), std::move(tile)));
  74. }
  75. void FakeTileService::StartFetchForTiles(
  76. bool is_from_reduced_mode,
  77. BackgroundTaskFinishedCallback callback) {
  78. base::ThreadTaskRunnerHandle::Get()->PostTask(
  79. FROM_HERE,
  80. base::BindOnce(std::move(callback), false /*need_reschedule*/));
  81. }
  82. void FakeTileService::CancelTask() {}
  83. void FakeTileService::PurgeDb() {}
  84. void FakeTileService::SetServerUrl(const std::string& url) {}
  85. void FakeTileService::OnTileClicked(const std::string& url) {}
  86. void FakeTileService::OnQuerySelected(
  87. const absl::optional<std::string>& parent_tile_id,
  88. const std::u16string& query_text) {}
  89. Logger* FakeTileService::GetLogger() {
  90. return nullptr;
  91. }
  92. } // namespace query_tiles