blob: a3ae074171f0401e940f646903268d7fb9c9d2f5 [file] [log] [blame]
Avi Drissman8ba1bad2022-09-13 19:22:361// Copyright 2021 The Chromium Authors
Duncan Mercer9c46b902022-08-19 17:55:112// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/lens/lens_url_utils.h"
6
7#include "base/strings/string_number_conversions.h"
Duncan Mercer0a35f5e7d2023-09-26 00:15:538#include "base/test/metrics/histogram_tester.h"
Duncan Mercer9c46b902022-08-19 17:55:119#include "base/time/time.h"
10#include "components/lens/lens_entrypoints.h"
11#include "components/lens/lens_rendering_environment.h"
12#include "testing/gmock/include/gmock/gmock.h"
13#include "testing/gtest/include/gtest/gtest.h"
14#include "url/gurl.h"
15
16using ::testing::MatchesRegex;
17
18namespace lens {
19
Jason Hu941e938492023-05-11 23:35:4620TEST(LensUrlUtilsTest, NonSidePanelRequestHasNoSidePanelSizeParams) {
21 lens::EntryPoint lens_region_search_ep =
22 lens::EntryPoint::CHROME_REGION_SEARCH_MENU_ITEM;
Duncan Mercerbfe13b832024-11-18 18:08:2623 std::string query_param =
24 lens::GetQueryParametersForLensRequest(lens_region_search_ep,
25 /*is_full_screen_request=*/false);
Jason Hu941e938492023-05-11 23:35:4626
27 // Despite passing in a nonzero size, there should not be any side panel
28 // viewport size params.
29 EXPECT_THAT(query_param, MatchesRegex("ep=crs&re=df&s=4&st=\\d+"));
30}
31
Jason Hu954b73282023-07-10 20:58:4532TEST(LensUrlUtilsTest,
33 AppendOrReplaceViewportSizeForRequestSetsSidePanelSizeParams) {
Duncan Mercer0a35f5e7d2023-09-26 00:15:5334 base::HistogramTester histogram_tester;
Jason Hu954b73282023-07-10 20:58:4535 GURL original_url = GURL("https://lens.google.com/");
36 GURL url = lens::AppendOrReplaceViewportSizeForRequest(original_url,
37 gfx::Size(10, 10));
38 EXPECT_THAT(url.query(), MatchesRegex("vpw=10&vph=10"));
Duncan Mercer0a35f5e7d2023-09-26 00:15:5339 histogram_tester.ExpectBucketCount(
40 "Search.Lens.ViewportDimensionsSent.Success", true, 1);
41}
42
43TEST(LensUrlUtilsTest,
44 AppendOrReplaceViewportSizeForRequestOnlySetsNonZeroSizes) {
45 base::HistogramTester histogram_tester;
46 GURL original_url = GURL("https://lens.google.com/");
47 GURL url_with_height = lens::AppendOrReplaceViewportSizeForRequest(
48 original_url, gfx::Size(0, 10));
49 EXPECT_THAT(url_with_height.query(), MatchesRegex("vph=10"));
50 GURL url_with_width = lens::AppendOrReplaceViewportSizeForRequest(
51 original_url, gfx::Size(10, 0));
52 EXPECT_THAT(url_with_width.query(), MatchesRegex("vpw=10"));
53 GURL url_with_neither = lens::AppendOrReplaceViewportSizeForRequest(
54 original_url, gfx::Size(0, 0));
55 EXPECT_THAT(url_with_neither.query(), MatchesRegex(""));
56 histogram_tester.ExpectBucketCount(
57 "Search.Lens.ViewportDimensionsSent.Success", false, 3);
Jason Hubaf33a762023-06-15 17:45:3758}
59
Duncan Mercer9c46b902022-08-19 17:55:1160TEST(LensUrlUtilsTest, GetRegionSearchNewTabQueryParameterTest) {
61 lens::EntryPoint lens_region_search_ep =
62 lens::EntryPoint::CHROME_REGION_SEARCH_MENU_ITEM;
Duncan Mercerbfe13b832024-11-18 18:08:2663 std::string query_param =
64 lens::GetQueryParametersForLensRequest(lens_region_search_ep,
65 /*is_full_screen_request=*/false);
Duncan Mercer14dd5c022023-01-11 19:57:4666 EXPECT_THAT(query_param, MatchesRegex("ep=crs&re=df&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:1167}
68
69TEST(LensUrlUtilsTest, GetImageSearchNewTabQueryParameterTest) {
70 lens::EntryPoint lens_image_search_ep =
71 lens::EntryPoint::CHROME_SEARCH_WITH_GOOGLE_LENS_CONTEXT_MENU_ITEM;
Duncan Mercerbfe13b832024-11-18 18:08:2672 std::string query_param =
73 lens::GetQueryParametersForLensRequest(lens_image_search_ep,
74 /*is_full_screen_request=*/false);
Duncan Mercer14dd5c022023-01-11 19:57:4675 EXPECT_THAT(query_param, MatchesRegex("ep=ccm&re=df&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:1176}
77
Bryan Nguyen252f9ac02023-01-31 00:05:1078TEST(LensUrlUtilsTest, GetImageTranslateNewTabQueryParameterTest) {
79 lens::EntryPoint lens_image_translate_ep = lens::EntryPoint::
80 CHROME_TRANSLATE_IMAGE_WITH_GOOGLE_LENS_CONTEXT_MENU_ITEM;
Duncan Mercerbfe13b832024-11-18 18:08:2681 std::string query_param =
82 lens::GetQueryParametersForLensRequest(lens_image_translate_ep,
83 /*is_full_screen_request=*/false);
Bryan Nguyenf0dbd082023-02-16 21:13:2284 EXPECT_THAT(query_param, MatchesRegex("ep=ctrcm&re=df&s=4&st=\\d+"));
Bryan Nguyen252f9ac02023-01-31 00:05:1085}
86
Duncan Mercer9c46b902022-08-19 17:55:1187TEST(LensUrlUtilsTest, GetOpenNewTabSidePanelParameterTest) {
88 lens::EntryPoint lens_open_new_tab_side_panel_ep =
89 lens::EntryPoint::CHROME_OPEN_NEW_TAB_SIDE_PANEL;
Duncan Mercerbfe13b832024-11-18 18:08:2690 std::string query_param =
91 lens::GetQueryParametersForLensRequest(lens_open_new_tab_side_panel_ep,
92 /*is_full_screen_request=*/false);
Duncan Mercer14dd5c022023-01-11 19:57:4693 EXPECT_THAT(query_param, MatchesRegex("ep=cnts&re=df&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:1194}
95
Anudeep Palanki02b81082022-11-10 18:26:3096TEST(LensUrlUtilsTest, GetFullscreenSearchQueryParameterTest) {
97 lens::EntryPoint lens_ep =
98 lens::EntryPoint::CHROME_FULLSCREEN_SEARCH_MENU_ITEM;
Duncan Mercerbfe13b832024-11-18 18:08:2699 std::string query_param =
100 lens::GetQueryParametersForLensRequest(lens_ep,
101 /*is_full_screen_request=*/true);
Duncan Mercer14dd5c022023-01-11 19:57:46102 EXPECT_THAT(query_param, MatchesRegex("ep=cfs&re=avsf&s=4&st=\\d+"));
Anudeep Palanki02b81082022-11-10 18:26:30103}
104
Xiaohan Wang70e9d652023-11-27 22:30:25105TEST(LensUrlUtilsTest, GetVideoFrameSearchQueryParameterTest) {
106 auto lens_ep = lens::EntryPoint::CHROME_VIDEO_FRAME_SEARCH_CONTEXT_MENU_ITEM;
Duncan Mercerbfe13b832024-11-18 18:08:26107 std::string query_param =
108 lens::GetQueryParametersForLensRequest(lens_ep,
109 /*is_full_screen_request=*/false);
Xiaohan Wang70e9d652023-11-27 22:30:25110 EXPECT_THAT(query_param, MatchesRegex("ep=cvfs&re=df&s=4&st=\\d+"));
111}
112
Duncan Mercer9c46b902022-08-19 17:55:11113TEST(LensUrlUtilsTest, GetUnknownEntryPointTest) {
Duncan Mercerbfe13b832024-11-18 18:08:26114 std::string query_param =
115 lens::GetQueryParametersForLensRequest(lens::EntryPoint::UNKNOWN,
116 /*is_full_screen_request=*/false);
Duncan Mercer14dd5c022023-01-11 19:57:46117 EXPECT_THAT(query_param, MatchesRegex("re=df&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:11118}
119
Duncan Mercer9c46b902022-08-19 17:55:11120TEST(LensUrlUtilsTest, AppendRegionSearchNewTabQueryParameterTest) {
121 lens::EntryPoint lens_region_search_ep =
122 lens::EntryPoint::CHROME_REGION_SEARCH_MENU_ITEM;
123 lens::RenderingEnvironment re =
124 lens::RenderingEnvironment::ONELENS_DESKTOP_WEB_FULLSCREEN;
125 GURL original_url = GURL("https://lens.google.com/");
126 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(
Duncan Mercerbfe13b832024-11-18 18:08:26127 original_url, lens_region_search_ep, re);
Duncan Mercer14dd5c022023-01-11 19:57:46128 EXPECT_THAT(url.query(), MatchesRegex("ep=crs&re=df&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:11129}
130
131TEST(LensUrlUtilsTest, AppendImageSearchNewTabQueryParameterTest) {
132 lens::EntryPoint lens_image_search_ep =
133 lens::EntryPoint::CHROME_SEARCH_WITH_GOOGLE_LENS_CONTEXT_MENU_ITEM;
134 lens::RenderingEnvironment re =
135 lens::RenderingEnvironment::ONELENS_DESKTOP_WEB_FULLSCREEN;
136 GURL original_url = GURL("https://lens.google.com/");
137 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(
Duncan Mercerbfe13b832024-11-18 18:08:26138 original_url, lens_image_search_ep, re);
Duncan Mercer14dd5c022023-01-11 19:57:46139 EXPECT_THAT(url.query(), MatchesRegex("ep=ccm&re=df&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:11140}
141
Bryan Nguyen252f9ac02023-01-31 00:05:10142TEST(LensUrlUtilsTest, AppendImageTranslateNewTabQueryParameterTest) {
143 lens::EntryPoint lens_image_translate_ep = lens::EntryPoint::
144 CHROME_TRANSLATE_IMAGE_WITH_GOOGLE_LENS_CONTEXT_MENU_ITEM;
145 lens::RenderingEnvironment re =
146 lens::RenderingEnvironment::ONELENS_DESKTOP_WEB_FULLSCREEN;
147 GURL original_url = GURL("https://lens.google.com/");
148 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(
Duncan Mercerbfe13b832024-11-18 18:08:26149 original_url, lens_image_translate_ep, re);
Bryan Nguyenf0dbd082023-02-16 21:13:22150 EXPECT_THAT(url.query(), MatchesRegex("ep=ctrcm&re=df&s=4&st=\\d+"));
Bryan Nguyen252f9ac02023-01-31 00:05:10151}
152
Duncan Mercer9c46b902022-08-19 17:55:11153TEST(LensUrlUtilsTest, AppendOpenNewTabSidePanelParameterTest) {
154 lens::EntryPoint lens_open_new_tab_side_panel_ep =
155 lens::EntryPoint::CHROME_OPEN_NEW_TAB_SIDE_PANEL;
156 lens::RenderingEnvironment re =
157 lens::RenderingEnvironment::ONELENS_DESKTOP_WEB_FULLSCREEN;
158 GURL original_url = GURL("https://lens.google.com/");
159 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(
Duncan Mercerbfe13b832024-11-18 18:08:26160 original_url, lens_open_new_tab_side_panel_ep, re);
Duncan Mercer14dd5c022023-01-11 19:57:46161 EXPECT_THAT(url.query(), MatchesRegex("ep=cnts&re=df&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:11162}
163
Anudeep Palanki02b81082022-11-10 18:26:30164TEST(LensUrlUtilsTest, AppendFullscreenSearchQueryParameterTest) {
165 lens::EntryPoint lens_ep =
166 lens::EntryPoint::CHROME_FULLSCREEN_SEARCH_MENU_ITEM;
167 lens::RenderingEnvironment re =
168 lens::RenderingEnvironment::ONELENS_AMBIENT_VISUAL_SEARCH_WEB_FULLSCREEN;
169 GURL original_url = GURL("https://lens.google.com/");
Duncan Mercerbfe13b832024-11-18 18:08:26170 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(original_url,
171 lens_ep, re);
Duncan Mercer14dd5c022023-01-11 19:57:46172 EXPECT_THAT(url.query(), MatchesRegex("ep=cfs&re=avsf&s=4&st=\\d+"));
Anudeep Palanki02b81082022-11-10 18:26:30173}
174
Juan Mojica2650ecd82024-10-02 23:09:46175TEST(LensUrlUtilsTest, AppendLensOverlayLocationBarQueryParameterTest) {
176 lens::EntryPoint lens_ep = lens::EntryPoint::CHROME_LENS_OVERLAY_LOCATION_BAR;
177 lens::RenderingEnvironment re =
178 lens::RenderingEnvironment::ONELENS_DESKTOP_WEB_FULLSCREEN;
179 GURL original_url = GURL("https://lens.google.com/");
Duncan Mercerbfe13b832024-11-18 18:08:26180 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(original_url,
181 lens_ep, re);
Juan Mojica2650ecd82024-10-02 23:09:46182 EXPECT_THAT(url.query(), MatchesRegex("ep=crmntob&re=df&s=4&st=\\d+"));
183}
184
Duncan Mercer9c46b902022-08-19 17:55:11185TEST(LensUrlUtilsTest, AppendUnknownEntryPointTest) {
186 lens::RenderingEnvironment re =
187 lens::RenderingEnvironment::ONELENS_DESKTOP_WEB_FULLSCREEN;
188 GURL original_url = GURL("https://lens.google.com/");
189 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(
Duncan Mercerbfe13b832024-11-18 18:08:26190 original_url, lens::EntryPoint::UNKNOWN, re);
Duncan Mercer14dd5c022023-01-11 19:57:46191 EXPECT_THAT(url.query(), MatchesRegex("re=df&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:11192}
193
194TEST(LensUrlUtilsTest, AppendUnknownRenderingEnvironmentTest) {
195 lens::EntryPoint ep = lens::EntryPoint::CHROME_REGION_SEARCH_MENU_ITEM;
196 GURL original_url = GURL("https://lens.google.com/");
197 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(
Duncan Mercerbfe13b832024-11-18 18:08:26198 original_url, ep, lens::RenderingEnvironment::RENDERING_ENV_UNKNOWN);
Duncan Mercer14dd5c022023-01-11 19:57:46199 EXPECT_THAT(url.query(), MatchesRegex("ep=crs&s=4&st=\\d+"));
Duncan Mercer9c46b902022-08-19 17:55:11200}
201
Jason Hu941e938492023-05-11 23:35:46202TEST(LensUrlUtilsTest, AppendNonSidePanelSettingsRemovesViewportSizeTest) {
203 lens::EntryPoint lens_image_search_ep =
204 lens::EntryPoint::CHROME_SEARCH_WITH_GOOGLE_LENS_CONTEXT_MENU_ITEM;
205 lens::RenderingEnvironment re =
206 lens::RenderingEnvironment::ONELENS_DESKTOP_WEB_FULLSCREEN;
207 GURL original_url =
208 GURL("https://lens.google.com/search?p=123&vph=10&vpw=10");
209 GURL url = lens::AppendOrReplaceQueryParametersForLensRequest(
Duncan Mercerbfe13b832024-11-18 18:08:26210 original_url, lens_image_search_ep, re);
Jason Hu941e938492023-05-11 23:35:46211 EXPECT_THAT(url.query(), MatchesRegex("p=123&ep=ccm&re=df&s=4&st=\\d+"));
212}
213
Jason Hu96602512023-08-23 21:31:20214TEST(LensUrlUtilsTest, AppendStartTimeUpdatesParamForLensUrlTest) {
215 GURL original_url = GURL("https://lens.google.com/search?p=123");
216 GURL url = lens::AppendOrReplaceStartTimeIfLensRequest(original_url);
217 EXPECT_THAT(url.query(), MatchesRegex("p=123&st=\\d+"));
218}
219
220TEST(LensUrlUtilsTest, AppendStartTimeIgnoresNonLensUrlTest) {
221 GURL original_url = GURL("https://not-lens.com/search?p=123");
222 GURL url = lens::AppendOrReplaceStartTimeIfLensRequest(original_url);
223 EXPECT_THAT(url.query(), MatchesRegex("p=123"));
224}
225
Duncan Mercer9c46b902022-08-19 17:55:11226} // namespace lens