1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/lens/test_lens_search_controller.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/ui/lens/lens_overlay_query_controller.h"
#include "chrome/browser/ui/lens/test_lens_overlay_controller.h"
#include "chrome/browser/ui/lens/test_lens_overlay_query_controller.h"
#include "chrome/browser/ui/lens/test_lens_search_contextualization_controller.h"
#include "components/prefs/pref_service.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "components/sync/service/sync_service.h"
#include "components/tabs/public/tab_interface.h"
#include "components/variations/variations_client.h"
namespace lens {
namespace {
// The fake server session id.
constexpr char kTestServerSessionId[] = "server_session_id";
// The fake search session id.
constexpr char kTestSearchSessionId[] = "search_session_id";
// The fake suggest signals.
constexpr char kTestSuggestSignals[] = "encoded_image_signals";
lens::Text CreateTestText(const std::vector<std::string>& words) {
lens::Text text;
text.set_content_language("es");
// Create a paragraph.
lens::TextLayout::Paragraph* paragraph =
text.mutable_text_layout()->add_paragraphs();
// Create a line.
lens::TextLayout::Line* line = paragraph->add_lines();
for (size_t i = 0; i < words.size(); ++i) {
lens::TextLayout::Word* word = line->add_words();
word->set_plain_text(words[i]);
word->set_text_separator(" ");
word->mutable_geometry()->mutable_bounding_box()->set_center_x(0.1 * i);
word->mutable_geometry()->mutable_bounding_box()->set_center_y(0.1);
word->mutable_geometry()->mutable_bounding_box()->set_width(0.1);
word->mutable_geometry()->mutable_bounding_box()->set_height(0.1);
word->mutable_geometry()->mutable_bounding_box()->set_coordinate_type(
lens::NORMALIZED);
}
return text;
}
} // namespace
std::unique_ptr<LensOverlayController>
TestLensSearchController::CreateLensOverlayController(
tabs::TabInterface* tab,
LensSearchController* lens_search_controller,
variations::VariationsClient* variations_client,
signin::IdentityManager* identity_manager,
PrefService* pref_service,
syncer::SyncService* sync_service,
ThemeService* theme_service) {
// Set browser color scheme to light mode for consistency.
theme_service->SetBrowserColorScheme(
ThemeService::BrowserColorScheme::kLight);
return std::make_unique<TestLensOverlayController>(
tab, lens_search_controller, variations_client, identity_manager,
pref_service, sync_service, theme_service);
}
std::unique_ptr<lens::LensOverlayQueryController>
TestLensSearchController::CreateLensQueryController(
lens::LensOverlayFullImageResponseCallback full_image_callback,
lens::LensOverlayUrlResponseCallback url_callback,
lens::LensOverlayInteractionResponseCallback interaction_callback,
lens::LensOverlaySuggestInputsCallback suggest_inputs_callback,
lens::LensOverlayThumbnailCreatedCallback thumbnail_created_callback,
lens::UploadProgressCallback upload_progress_callback,
variations::VariationsClient* variations_client,
signin::IdentityManager* identity_manager,
Profile* profile,
lens::LensOverlayInvocationSource invocation_source,
bool use_dark_mode,
lens::LensOverlayGen204Controller* gen204_controller) {
auto fake_query_controller =
std::make_unique<lens::TestLensOverlayQueryController>(
full_image_callback, url_callback, interaction_callback,
suggest_inputs_callback, thumbnail_created_callback,
upload_progress_callback, variations_client, identity_manager,
profile, invocation_source, use_dark_mode, gen204_controller);
// Set up the fake responses for the query controller.
lens::LensOverlayServerClusterInfoResponse cluster_info_response;
cluster_info_response.set_server_session_id(kTestServerSessionId);
cluster_info_response.set_search_session_id(kTestSearchSessionId);
fake_query_controller->set_fake_cluster_info_response(cluster_info_response);
lens::LensOverlayObjectsResponse objects_response;
objects_response.mutable_text()->CopyFrom(
CreateTestText({"This", "is", "test", "text."}));
objects_response.mutable_cluster_info()->set_server_session_id(
kTestServerSessionId);
objects_response.mutable_cluster_info()->set_search_session_id(
kTestSearchSessionId);
fake_query_controller->set_fake_objects_response(objects_response);
lens::LensOverlayInteractionResponse interaction_response;
interaction_response.set_encoded_response(kTestSuggestSignals);
fake_query_controller->set_fake_interaction_response(interaction_response);
return fake_query_controller;
}
std::unique_ptr<lens::LensSearchContextualizationController>
TestLensSearchController::CreateLensSearchContextualizationController() {
return std::make_unique<lens::TestLensSearchContextualizationController>(
this);
}
} // namespace lens
|