Version in base suite: 145.0.7632.159-1~deb13u1 Version in overlay suite: 146.0.7680.80-1~deb13u1 Base version: chromium_146.0.7680.80-1~deb13u1 Target version: chromium_146.0.7680.153-1~deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/c/chromium/chromium_146.0.7680.80-1~deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/c/chromium/chromium_146.0.7680.153-1~deb13u1.dsc DEPS | 22 ash/constants/ash_features.cc | 5 ash/constants/ash_features.h | 1 ash/strings/ash_strings_bn.xtb | 4 ash/strings/ash_strings_de.xtb | 6 ash/strings/ash_strings_et.xtb | 6 ash/strings/ash_strings_fa.xtb | 2 ash/strings/ash_strings_fi.xtb | 4 ash/strings/ash_strings_fil.xtb | 4 ash/strings/ash_strings_it.xtb | 12 ash/strings/ash_strings_kn.xtb | 2 ash/strings/ash_strings_ko.xtb | 2 ash/strings/ash_strings_mk.xtb | 2 ash/strings/ash_strings_ml.xtb | 4 ash/strings/ash_strings_mr.xtb | 4 ash/strings/ash_strings_ms.xtb | 2 ash/strings/ash_strings_nl.xtb | 4 ash/strings/ash_strings_sw.xtb | 4 ash/strings/ash_strings_ta.xtb | 4 ash/strings/ash_strings_te.xtb | 86 ash/strings/ash_strings_th.xtb | 4 ash/strings/ash_strings_vi.xtb | 4 ash/strings/ash_strings_zh-TW.xtb | 4 ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb | 2 ash/webui/settings/public/constants/routes.mojom | 4 ash/webui/settings/public/constants/setting.mojom | 2 base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.cc | 3 base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.h | 2 base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.cc | 8 base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.h | 1 base/callback_list.h | 137 base/callback_list_unittest.cc | 25 build/util/LASTCHANGE | 2 build/util/LASTCHANGE.committime | 2 chrome/VERSION | 2 chrome/app/profiles_strings.grdp | 3 chrome/app/profiles_strings_grdp/IDS_SIGN_IN_BENEFITS_WITHOUT_BOOKMARKS_AND_EXTENSIONS_IPH_TEXT.png.sha1 | 1 chrome/app/resources/chromium_strings_da.xtb | 2 chrome/app/resources/chromium_strings_it.xtb | 16 chrome/app/resources/chromium_strings_te.xtb | 8 chrome/app/resources/chromium_strings_zh-CN.xtb | 2 chrome/app/resources/generated_resources_af.xtb | 3 chrome/app/resources/generated_resources_am.xtb | 1 chrome/app/resources/generated_resources_ar.xtb | 1 chrome/app/resources/generated_resources_as.xtb | 1 chrome/app/resources/generated_resources_az.xtb | 1 chrome/app/resources/generated_resources_be.xtb | 1 chrome/app/resources/generated_resources_bg.xtb | 1 chrome/app/resources/generated_resources_bn.xtb | 1 chrome/app/resources/generated_resources_bs.xtb | 1 chrome/app/resources/generated_resources_ca.xtb | 3 chrome/app/resources/generated_resources_cs.xtb | 1 chrome/app/resources/generated_resources_cy.xtb | 1 chrome/app/resources/generated_resources_da.xtb | 5 chrome/app/resources/generated_resources_de.xtb | 5 chrome/app/resources/generated_resources_el.xtb | 1 chrome/app/resources/generated_resources_en-GB.xtb | 1 chrome/app/resources/generated_resources_es-419.xtb | 1 chrome/app/resources/generated_resources_es.xtb | 5 chrome/app/resources/generated_resources_et.xtb | 1 chrome/app/resources/generated_resources_eu.xtb | 7 chrome/app/resources/generated_resources_fa.xtb | 3 chrome/app/resources/generated_resources_fi.xtb | 1 chrome/app/resources/generated_resources_fil.xtb | 1 chrome/app/resources/generated_resources_fr-CA.xtb | 1 chrome/app/resources/generated_resources_fr.xtb | 3 chrome/app/resources/generated_resources_gl.xtb | 1 chrome/app/resources/generated_resources_gu.xtb | 1 chrome/app/resources/generated_resources_hi.xtb | 1 chrome/app/resources/generated_resources_hr.xtb | 3 chrome/app/resources/generated_resources_hu.xtb | 1 chrome/app/resources/generated_resources_hy.xtb | 3 chrome/app/resources/generated_resources_id.xtb | 9 chrome/app/resources/generated_resources_is.xtb | 1 chrome/app/resources/generated_resources_it.xtb | 79 chrome/app/resources/generated_resources_iw.xtb | 7 chrome/app/resources/generated_resources_ja.xtb | 1 chrome/app/resources/generated_resources_ka.xtb | 1 chrome/app/resources/generated_resources_kk.xtb | 1 chrome/app/resources/generated_resources_km.xtb | 1 chrome/app/resources/generated_resources_kn.xtb | 3 chrome/app/resources/generated_resources_ko.xtb | 11 chrome/app/resources/generated_resources_ky.xtb | 1 chrome/app/resources/generated_resources_lo.xtb | 1 chrome/app/resources/generated_resources_lt.xtb | 1 chrome/app/resources/generated_resources_lv.xtb | 1 chrome/app/resources/generated_resources_mk.xtb | 1 chrome/app/resources/generated_resources_ml.xtb | 1 chrome/app/resources/generated_resources_mn.xtb | 1 chrome/app/resources/generated_resources_mr.xtb | 1 chrome/app/resources/generated_resources_ms.xtb | 1 chrome/app/resources/generated_resources_my.xtb | 1 chrome/app/resources/generated_resources_ne.xtb | 5 chrome/app/resources/generated_resources_nl.xtb | 3 chrome/app/resources/generated_resources_no.xtb | 1 chrome/app/resources/generated_resources_or.xtb | 3 chrome/app/resources/generated_resources_pa.xtb | 1 chrome/app/resources/generated_resources_pl.xtb | 1 chrome/app/resources/generated_resources_pt-BR.xtb | 9 chrome/app/resources/generated_resources_pt-PT.xtb | 1 chrome/app/resources/generated_resources_ro.xtb | 1 chrome/app/resources/generated_resources_ru.xtb | 3 chrome/app/resources/generated_resources_si.xtb | 1 chrome/app/resources/generated_resources_sk.xtb | 5 chrome/app/resources/generated_resources_sl.xtb | 1 chrome/app/resources/generated_resources_sq.xtb | 5 chrome/app/resources/generated_resources_sr-Latn.xtb | 1 chrome/app/resources/generated_resources_sr.xtb | 1 chrome/app/resources/generated_resources_sv.xtb | 3 chrome/app/resources/generated_resources_sw.xtb | 1 chrome/app/resources/generated_resources_ta.xtb | 1 chrome/app/resources/generated_resources_te.xtb | 333 chrome/app/resources/generated_resources_th.xtb | 1 chrome/app/resources/generated_resources_tr.xtb | 1 chrome/app/resources/generated_resources_uk.xtb | 1 chrome/app/resources/generated_resources_ur.xtb | 1 chrome/app/resources/generated_resources_uz.xtb | 1 chrome/app/resources/generated_resources_vi.xtb | 3 chrome/app/resources/generated_resources_zh-CN.xtb | 7 chrome/app/resources/generated_resources_zh-HK.xtb | 1 chrome/app/resources/generated_resources_zh-TW.xtb | 9 chrome/app/resources/generated_resources_zu.xtb | 1 chrome/app/resources/google_chrome_strings_da.xtb | 2 chrome/app/resources/google_chrome_strings_it.xtb | 18 chrome/app/resources/google_chrome_strings_te.xtb | 10 chrome/app/resources/google_chrome_strings_zh-CN.xtb | 2 chrome/app/resources/google_chrome_strings_zh-TW.xtb | 2 chrome/browser/BUILD.gn | 2 chrome/browser/about_flags.cc | 22 chrome/browser/android/omnibox/composebox_query_controller_bridge.cc | 3 chrome/browser/ash/login/version_info_updater.cc | 35 chrome/browser/autocomplete/chrome_aim_eligibility_service_browsertest.cc | 313 chrome/browser/contextual_cueing/contextual_cueing_helper.cc | 27 chrome/browser/contextual_cueing/contextual_cueing_helper_interactive_uitest.cc | 76 chrome/browser/contextual_search/contextual_search_web_contents_helper.cc | 5 chrome/browser/contextual_search/contextual_search_web_contents_helper.h | 11 chrome/browser/contextual_tasks/BUILD.gn | 1 chrome/browser/contextual_tasks/contextual_tasks.mojom | 41 chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.cc | 8 chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.h | 1 chrome/browser/contextual_tasks/contextual_tasks_composebox_handler_unittest.cc | 21 chrome/browser/contextual_tasks/contextual_tasks_page_handler.cc | 34 chrome/browser/contextual_tasks/contextual_tasks_page_handler.h | 1 chrome/browser/contextual_tasks/contextual_tasks_page_handler_unittest.cc | 12 chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator.cc | 12 chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator_interactive_uitest.cc | 3 chrome/browser/contextual_tasks/contextual_tasks_ui.cc | 58 chrome/browser/contextual_tasks/contextual_tasks_ui.h | 7 chrome/browser/contextual_tasks/contextual_tasks_ui_browsertest.cc | 52 chrome/browser/contextual_tasks/contextual_tasks_ui_service.cc | 60 chrome/browser/contextual_tasks/contextual_tasks_ui_service.h | 4 chrome/browser/contextual_tasks/contextual_tasks_ui_service_unittest.cc | 70 chrome/browser/contextual_tasks/contextual_tasks_ui_unittest.cc | 34 chrome/browser/contextual_tasks/contextual_tasks_utils.cc | 12 chrome/browser/contextual_tasks/contextual_tasks_utils.h | 4 chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc | 7 chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc | 34 chrome/browser/extensions/renderer_startup_helper_browsertest.cc | 146 chrome/browser/flag-metadata.json | 11 chrome/browser/flag_descriptions.h | 5 chrome/browser/glic/BUILD.gn | 9 chrome/browser/glic/browser_ui/glic_button_controller.cc | 8 chrome/browser/glic/browser_ui/glic_button_controller_unittest.cc | 20 chrome/browser/glic/glic_enums.h | 12 chrome/browser/glic/glic_metrics.cc | 26 chrome/browser/glic/glic_metrics.h | 22 chrome/browser/glic/glic_metrics_browsertest.cc | 58 chrome/browser/glic/glic_metrics_provider.cc | 1 chrome/browser/glic/glic_metrics_provider_unittest.cc | 53 chrome/browser/glic/glic_metrics_unittest.cc | 63 chrome/browser/glic/glic_navigation_throttle.cc | 90 chrome/browser/glic/glic_navigation_throttle.h | 6 chrome/browser/glic/glic_navigation_throttle_browsertest.cc | 175 chrome/browser/glic/glic_profile_manager.cc | 22 chrome/browser/glic/glic_profile_manager.h | 11 chrome/browser/glic/host/context/glic_sharing_manager_impl.cc | 8 chrome/browser/glic/host/glic_api_browsertest.cc | 8 chrome/browser/glic/host/glic_cookie_synchronizer.cc | 48 chrome/browser/glic/host/glic_cookie_synchronizer.h | 5 chrome/browser/glic/host/glic_cookie_synchronizer_unittest.cc | 46 chrome/browser/glic/host/glic_page_handler.cc | 31 chrome/browser/glic/host/host.cc | 11 chrome/browser/glic/public/glic_enabling.cc | 156 chrome/browser/glic/public/glic_enabling.h | 41 chrome/browser/glic/public/glic_enabling_metrics_unittest.cc | 100 chrome/browser/glic/public/glic_instance_metrics_backwards_compatibility.h | 13 chrome/browser/glic/service/glic_instance_coordinator_browsertest.cc | 52 chrome/browser/glic/service/glic_instance_helper_unittest.cc | 85 chrome/browser/glic/service/glic_instance_impl.cc | 1 chrome/browser/glic/service/metrics/glic_instance_helper_metrics.cc | 9 chrome/browser/glic/service/metrics/glic_instance_helper_metrics.h | 9 chrome/browser/glic/service/metrics/glic_instance_metrics.cc | 126 chrome/browser/glic/service/metrics/glic_instance_metrics.h | 38 chrome/browser/glic/service/metrics/glic_instance_metrics_unittest.cc | 260 chrome/browser/glic/service/metrics/metrics_types.cc | 77 chrome/browser/glic/service/metrics/metrics_types.h | 32 chrome/browser/glic/widget/glic_side_panel_ui.cc | 6 chrome/browser/glic/widget/glic_side_panel_ui_android.cc | 6 chrome/browser/new_tab_page/new_tab_page_realbox_interactive_uitest.cc | 2 chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.cc | 101 chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.h | 58 chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer_unittest.cc | 51 chrome/browser/page_load_metrics/page_load_metrics_initialize.cc | 9 chrome/browser/resources/ash/settings/BUILD.gn | 2 chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.html | 38 chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.ts | 203 chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.html | 23 chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.ts | 97 chrome/browser/resources/ash/settings/crostini_page/crostini_subpage.html | 9 chrome/browser/resources/ash/settings/crostini_page/crostini_subpage.ts | 29 chrome/browser/resources/ash/settings/lazy_load.ts | 2 chrome/browser/resources/ash/settings/os_about_page/os_about_page.html | 7 chrome/browser/resources/ash/settings/os_settings_routes.ts | 5 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_bn.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_de.xtb | 12 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_et.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fa.xtb | 2 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fi.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_fil.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_id.xtb | 2 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kn.xtb | 2 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ko.xtb | 2 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_mk.xtb | 2 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ml.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_mr.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ms.xtb | 2 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_nl.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_sv.xtb | 2 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_sw.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_ta.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb | 8 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_th.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_vi.xtb | 4 chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_zh-TW.xtb | 4 chrome/browser/resources/contextual_tasks/app.css | 46 chrome/browser/resources/contextual_tasks/app.html.ts | 22 chrome/browser/resources/contextual_tasks/app.ts | 123 chrome/browser/resources/contextual_tasks/composebox.css | 12 chrome/browser/resources/contextual_tasks/composebox.html.ts | 15 chrome/browser/resources/contextual_tasks/composebox.ts | 190 chrome/browser/resources/contextual_tasks/contextual_tasks.html | 7 chrome/browser/resources/contextual_tasks/ghost_loader.css | 2 chrome/browser/resources/contextual_tasks/onboarding_tooltip.ts | 131 chrome/browser/resources/contextual_tasks/top_toolbar.html.ts | 3 chrome/browser/resources/history/history_list.ts | 2 chrome/browser/resources/lens/overlay/side_panel/side_panel_app.ts | 6 chrome/browser/resources/omnibox/aim_eligibility/app.html.ts | 8 chrome/browser/resources/omnibox/aim_eligibility/app.ts | 1 chrome/browser/resources/omnibox_popup/aim_app.css | 20 chrome/browser/resources/omnibox_popup/aim_app.ts | 14 chrome/browser/resources/omnibox_popup/app.css | 15 chrome/browser/resources/omnibox_popup/app.html.ts | 2 chrome/browser/resources/omnibox_popup/app.ts | 27 chrome/browser/resources/omnibox_popup/app_contextual_entrypoint.html.ts | 3 chrome/browser/resources/tab_search/tab_search_item.css | 1 chrome/browser/ssl/ssl_prerender_browsertest.cc | 70 chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc | 67 chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb | 8 chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb | 2 chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb | 118 chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb | 6 chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb | 2 chrome/browser/ui/lens/BUILD.gn | 2 chrome/browser/ui/lens/DEPS | 1 chrome/browser/ui/lens/lens_overlay_controller_interactive_uitest.cc | 50 chrome/browser/ui/lens/lens_overlay_query_controller.cc | 4 chrome/browser/ui/lens/lens_query_flow_router.cc | 1 chrome/browser/ui/lens/lens_query_flow_router.h | 2 chrome/browser/ui/lens/lens_search_controller_contextual_tasks_browsertest.cc | 52 chrome/browser/ui/omnibox/ai_mode_page_action_controller_interactive_uitest.cc | 2 chrome/browser/ui/omnibox/omnibox_context_menu_controller.cc | 13 chrome/browser/ui/omnibox/omnibox_context_menu_controller_browsertest.cc | 59 chrome/browser/ui/omnibox/omnibox_edit_model.cc | 13 chrome/browser/ui/omnibox/omnibox_edit_model.h | 4 chrome/browser/ui/omnibox/omnibox_next_features.cc | 2 chrome/browser/ui/omnibox/omnibox_next_features_unittest.cc | 1 chrome/browser/ui/omnibox/omnibox_view.cc | 4 chrome/browser/ui/startup/default_browser_prompt/pin_infobar/BUILD.gn | 1 chrome/browser/ui/startup/default_browser_prompt/pin_infobar/pin_infobar_controller.cc | 40 chrome/browser/ui/startup/default_browser_prompt/pin_infobar/pin_infobar_controller.h | 5 chrome/browser/ui/startup/default_browser_prompt/pin_infobar/pin_infobar_controller_crash_unittest.cc | 116 chrome/browser/ui/views/contextual_tasks/contextual_tasks_close_tab_button.cc | 8 chrome/browser/ui/views/frame/multi_contents_view_drop_target_controller.h | 4 chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc | 2 chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h | 4 chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc | 2 chrome/browser/ui/views/location_bar/custom_tab_bar_view.h | 4 chrome/browser/ui/views/location_bar/location_bar_view.cc | 92 chrome/browser/ui/views/location_bar/location_bar_view.h | 19 chrome/browser/ui/views/location_bar/location_bar_view_browsertest.cc | 23 chrome/browser/ui/views/location_bar/location_icon_view.h | 2 chrome/browser/ui/views/location_bar/location_icon_view_unittest.cc | 3 chrome/browser/ui/views/omnibox/omnibox_aim_popup_browsertest.cc | 105 chrome/browser/ui/views/omnibox/omnibox_aim_popup_webui_content.cc | 18 chrome/browser/ui/views/omnibox/omnibox_aim_popup_webui_content.h | 26 chrome/browser/ui/views/omnibox/omnibox_popup_aim_presenter.cc | 9 chrome/browser/ui/views/omnibox/omnibox_popup_presenter_base.cc | 2 chrome/browser/ui/views/omnibox/omnibox_popup_view_views.cc | 25 chrome/browser/ui/views/omnibox/omnibox_popup_view_views.h | 7 chrome/browser/ui/views/omnibox/omnibox_popup_view_views_browsertest.cc | 37 chrome/browser/ui/views/omnibox/omnibox_popup_view_webui.cc | 35 chrome/browser/ui/views/omnibox/omnibox_popup_view_webui.h | 5 chrome/browser/ui/views/omnibox/omnibox_popup_view_webui_interactive_uitest.cc | 7 chrome/browser/ui/views/omnibox/omnibox_popup_webui_base_content.cc | 2 chrome/browser/ui/views/omnibox/omnibox_popup_webui_base_content.h | 7 chrome/browser/ui/views/omnibox/omnibox_popup_webui_content.cc | 4 chrome/browser/ui/views/omnibox/omnibox_popup_webui_content.h | 3 chrome/browser/ui/views/user_education/browser_user_education_service.cc | 7 chrome/browser/ui/webui/ash/settings/pages/crostini/crostini_section.cc | 69 chrome/browser/ui/webui/cr_components/composebox/composebox_handler.cc | 48 chrome/browser/ui/webui/cr_components/composebox/composebox_handler.h | 27 chrome/browser/ui/webui/cr_components/composebox/composebox_handler_unittest.cc | 65 chrome/browser/ui/webui/cr_components/searchbox/contextual_searchbox_handler.cc | 56 chrome/browser/ui/webui/cr_components/searchbox/contextual_searchbox_handler.h | 13 chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc | 25 chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.h | 3 chrome/browser/ui/webui/new_tab_footer/BUILD.gn | 1 chrome/browser/ui/webui/new_tab_footer/new_tab_footer_handler_browsertest.cc | 27 chrome/browser/ui/webui/new_tab_page/composebox/variations/composebox_fieldtrial.cc | 2 chrome/browser/ui/webui/new_tab_page/composebox/variations/composebox_fieldtrial_browsertest.cc | 1 chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc | 39 chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h | 2 chrome/browser/ui/webui/omnibox/aim_eligibility/aim_eligibility.mojom | 2 chrome/browser/ui/webui/omnibox/aim_eligibility/aim_eligibility_page_handler.cc | 10 chrome/browser/ui/webui/omnibox_popup/mojom/BUILD.gn | 1 chrome/browser/ui/webui/omnibox_popup/mojom/omnibox_popup.mojom | 4 chrome/browser/ui/webui/omnibox_popup/mojom/omnibox_popup_aim.mojom | 13 chrome/browser/ui/webui/omnibox_popup/omnibox_popup_aim_handler.cc | 40 chrome/browser/ui/webui/omnibox_popup/omnibox_popup_aim_handler.h | 36 chrome/browser/ui/webui/omnibox_popup/omnibox_popup_aim_handler_unittest.cc | 144 chrome/browser/ui/webui/omnibox_popup/omnibox_popup_handler.cc | 8 chrome/browser/ui/webui/omnibox_popup/omnibox_popup_handler.h | 11 chrome/browser/ui/webui/omnibox_popup/omnibox_popup_handler_unittest.cc | 15 chrome/browser/ui/webui/omnibox_popup/omnibox_popup_ui.cc | 70 chrome/browser/ui/webui/omnibox_popup/omnibox_popup_ui.h | 46 chrome/browser/ui/webui/searchbox/contextual_searchbox_handler_unittest.cc | 60 chrome/browser/ui/webui/searchbox/contextual_searchbox_test_utils.h | 1 chrome/browser/ui/webui/searchbox/lens_searchbox_handler.cc | 4 chrome/browser/ui/webui/searchbox/omnibox_composebox_handler.cc | 8 chrome/browser/ui/webui/searchbox/omnibox_composebox_handler.h | 3 chrome/browser/ui/webui/searchbox/realbox_handler.cc | 4 chrome/browser/ui/webui/searchbox/searchbox_handler_unittest.cc | 3 chrome/browser/ui/webui/searchbox/webui_omnibox_handler.cc | 302 chrome/browser/ui/webui/searchbox/webui_omnibox_handler.h | 28 chrome/browser/ui/webui/searchbox/webui_omnibox_interactive_uitest.cc | 80 chrome/browser/ui/webui/top_chrome/BUILD.gn | 4 chrome/browser/ui/webui/top_chrome/top_chrome_web_ui_controller_test_support.cc | 28 chrome/browser/ui/webui/top_chrome/top_chrome_web_ui_controller_test_support.h | 54 chrome/browser/ui/webui/top_chrome/webui_contents_preload_manager.cc | 10 chrome/browser/ui/webui/top_chrome/webui_contents_preload_manager.h | 3 chrome/chrome_branch_deps.json | 31 chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb | 4 chrome/test/BUILD.gn | 6 chrome/test/data/webui/chromeos/settings/BUILD.gn | 1 chrome/test/data/webui/contextual_tasks/BUILD.gn | 1 chrome/test/data/webui/cr_components/composebox/BUILD.gn | 1 chromeos/CHROMEOS_LKGM | 2 chromeos/ash/experiences/camera/camera_save_handler.cc | 1 chromeos/ash/experiences/camera/camera_save_handler_unittest.cc | 5 chromeos/profiles/arm.afdo.newest.txt | 2 chromeos/profiles/atom.afdo.newest.txt | 2 chromeos/profiles/bigcore.afdo.newest.txt | 2 chromeos/strings/chromeos_strings_or.xtb | 2 chromeos/strings/chromeos_strings_sv.xtb | 2 chromeos/strings/chromeos_strings_te.xtb | 22 components/autofill/core/browser/metrics/payments/ai_amount_extraction_metrics.cc | 2 components/autofill/core/browser/payments/amount_extraction_manager_unittest.cc | 2 components/browser_ui/modaldialog/android/java/res/layout/modal_dialog_view.xml | 2 components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb | 2 components/browser_ui/strings/android/translations/browser_ui_strings_id.xtb | 4 components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb | 6 components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb | 18 components/certificate_transparency/data/log_list.json | 20 components/contextual_search/contextual_search_context_controller.h | 1 components/contextual_search/contextual_search_service.cc | 3 components/contextual_search/contextual_search_service_unittest.cc | 54 components/contextual_search/contextual_search_session_handle.cc | 31 components/contextual_search/contextual_search_types.h | 7 components/contextual_search/input_state_model.cc | 4 components/contextual_search/input_state_model.h | 3 components/contextual_search/internal/BUILD.gn | 1 components/contextual_search/internal/composebox_query_controller.cc | 296 components/contextual_search/internal/composebox_query_controller.h | 60 components/contextual_search/internal/composebox_query_controller_unittest.cc | 896 components/contextual_search/internal/test_composebox_query_controller.h | 2 components/contextual_tasks/public/features.cc | 4 components/cronet/android/cronet_library_loader.cc | 16 components/lens/contextual_input.h | 5 components/lens/lens_features.cc | 6 components/lens/lens_features.h | 11 components/lens/lens_overlay_request_id_generator.cc | 61 components/lens/lens_overlay_request_id_generator.h | 27 components/lens/lens_overlay_request_id_generator_unittest.cc | 48 components/omnibox/browser/aim_eligibility_service.cc | 77 components/omnibox/browser/aim_eligibility_service.h | 31 components/omnibox/browser/aim_eligibility_service_features.cc | 3 components/omnibox/browser/aim_eligibility_service_features.h | 3 components/omnibox/browser/aim_eligibility_service_unittest.cc | 38 components/omnibox/browser/local_history_zero_suggest_provider.cc | 7 components/omnibox/browser/local_history_zero_suggest_provider_unittest.cc | 4 components/omnibox/browser/mock_aim_eligibility_service.cc | 2 components/omnibox/browser/mock_aim_eligibility_service.h | 2 components/omnibox/browser/searchbox.mojom | 11 components/omnibox/composebox/BUILD.gn | 4 components/omnibox/composebox/composebox_query.mojom | 6 components/omnibox/composebox/contextual_search_mojom_traits.cc | 87 components/omnibox/composebox/contextual_search_mojom_traits.h | 12 components/omnibox/resources/translations/omnibox_pedal_synonyms_it.xtb | 4 components/omnibox/resources/translations/omnibox_pedal_synonyms_te.xtb | 2 components/policy/resources/policy_templates_de.xtb | 4 components/policy/resources/policy_templates_es.xtb | 24 components/policy/resources/policy_templates_it.xtb | 72 components/security_interstitials/content/insecure_form_navigation_throttle.cc | 45 components/signin/internal/identity_manager/primary_account_manager.cc | 12 components/signin/internal/identity_manager/primary_account_manager_unittest.cc | 297 components/signin/public/browser/web_signin_tracker.cc | 1 components/strings/components_chromium_strings_te.xtb | 2 components/strings/components_google_chrome_strings_te.xtb | 2 components/strings/components_strings_de.xtb | 8 components/strings/components_strings_es.xtb | 8 components/strings/components_strings_fa.xtb | 2 components/strings/components_strings_fr-CA.xtb | 12 components/strings/components_strings_hr.xtb | 4 components/strings/components_strings_it.xtb | 146 components/strings/components_strings_iw.xtb | 2 components/strings/components_strings_ne.xtb | 2 components/strings/components_strings_or.xtb | 2 components/strings/components_strings_sr-Latn.xtb | 2 components/strings/components_strings_sr.xtb | 2 components/strings/components_strings_te.xtb | 56 components/strings/components_strings_tr.xtb | 6 components/strings/privacy_sandbox_strings_it.xtb | 8 components/sync/base/features.cc | 5 components/sync/base/features.h | 6 components/sync/service/sync_prefs.cc | 12 components/sync/service/sync_prefs_unittest.cc | 35 components/update_client/update_client.cc | 5 content/browser/digital_credentials/cross_device_transaction_impl.cc | 4 content/browser/digital_credentials/cross_device_transaction_impl_unittest.cc | 65 content/browser/memory/scheduler_loop_quarantine_web_contents_observer_browsertest.cc | 21 content/browser/renderer_host/ipc_utils.cc | 16 content/browser/renderer_host/ipc_utils.h | 12 content/browser/renderer_host/navigation_request.cc | 11 content/browser/renderer_host/navigation_request.h | 6 content/browser/renderer_host/render_frame_host_impl.cc | 7 content/browser/renderer_host/render_frame_host_impl.h | 2 content/browser/scheduler/browser_ui_thread_scheduler_unittest.cc | 22 content/browser/security_exploit_browsertest.cc | 31 content/common/scheduler_loop_quarantine_task_observer.cc | 37 content/common/scheduler_loop_quarantine_task_observer.h | 27 content/common/scheduler_loop_quarantine_task_observer_unittest.cc | 154 content/public/browser/navigation_handle.h | 5 content/public/test/mock_navigation_handle.h | 1 content/public/test/mock_render_process_host.cc | 2 content/public/test/mock_render_process_host.h | 5 content/test/BUILD.gn | 1 debian/changelog | 53 debian/patches/disable/glic.patch | 38 debian/patches/series | 1 debian/patches/upstream/fix-boringssl-loong64.patch | 153 extensions/browser/api/declarative/rules_registry.cc | 21 extensions/browser/api/web_request/extension_web_request_event_router.cc | 4 extensions/browser/extension_web_contents_observer.cc | 19 extensions/browser/renderer_startup_helper.cc | 47 extensions/browser/renderer_startup_helper.h | 13 extensions/browser/renderer_startup_helper_unittest.cc | 39 extensions/strings/extensions_strings_es.xtb | 12 gpu/command_buffer/service/common_decoder.cc | 3 gpu/command_buffer/service/common_decoder_unittest.cc | 59 gpu/command_buffer/service/gles2_cmd_decoder.cc | 3 gpu/config/gpu_driver_bug_list.json | 11 gpu/config/gpu_lists_version.h | 2 gpu/config/gpu_workaround_list.txt | 1 gpu/webgpu/DAWN_VERSION | 2 gpu/webgpu/dawn_commit_hash.h | 2 net/http/transport_security_state_static.pins | 4 net/http/transport_security_state_static_pins.json | 2 remoting/resources/remoting_strings_es.xtb | 2 remoting/resources/remoting_strings_te.xtb | 6 services/network/shared_dictionary/shared_dictionary_on_disk.cc | 8 services/network/shared_dictionary/shared_dictionary_on_disk_unittest.cc | 54 skia/ext/skia_commit_hash.h | 2 testing/variations/fieldtrial_testing_config.json | 31 third_party/angle/include/GLSLANG/ShaderLang.h | 18 third_party/angle/include/platform/autogen/FeaturesGL_autogen.h | 6 third_party/angle/include/platform/gl_features.json | 8 third_party/angle/src/compiler/translator/Compiler.cpp | 9 third_party/angle/src/compiler/translator/ParseContext.cpp | 49 third_party/angle/src/compiler/translator/ParseContext.h | 6 third_party/angle/src/compiler/translator/ShaderLang.cpp | 7 third_party/angle/src/libANGLE/Compiler.cpp | 8 third_party/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 18 third_party/angle/src/libANGLE/renderer/gl/ShaderGL.cpp | 5 third_party/angle/src/libANGLE/renderer/gl/renderergl_utils.cpp | 4 third_party/angle/src/libANGLE/renderer/vulkan/TextureVk.cpp | 14 third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp | 7 third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.cpp | 15 third_party/angle/src/libANGLE/renderer/vulkan/vk_renderer.h | 8 third_party/angle/src/tests/gl_tests/GLSLValidationTest.cpp | 61 third_party/angle/src/tests/gl_tests/LineLoopTest.cpp | 40 third_party/angle/src/tests/gl_tests/TextureTest.cpp | 13 third_party/angle/util/autogen/angle_features_autogen.cpp | 1 third_party/angle/util/autogen/angle_features_autogen.h | 1 third_party/blink/renderer/core/css/document_style_environment_variables.cc | 26 third_party/blink/renderer/core/css/invalidation/pending_invalidations.cc | 11 third_party/blink/renderer/core/css/invalidation/pending_invalidations.h | 8 third_party/blink/renderer/core/css/invalidation/style_invalidator.cc | 2 third_party/blink/renderer/core/css/resolver/style_cascade.cc | 2 third_party/blink/renderer/core/css/rule_set.cc | 31 third_party/blink/renderer/core/css/rule_set.h | 2 third_party/blink/renderer/core/layout/scroll_anchor.cc | 8 third_party/blink/renderer/modules/webaudio/audio_param_handler.cc | 74 third_party/blink/renderer/modules/webaudio/realtime_analyser.cc | 7 third_party/blink/renderer/modules/webgl/webgl_context_object_support.cc | 7 third_party/blink/renderer/modules/webgl/webgl_context_object_support.h | 10 third_party/blink/renderer/modules/webgl/webgl_object.cc | 8 third_party/blink/renderer/modules/webgl/webgl_object.h | 6 third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h | 2 third_party/blink/renderer/platform/audio/audio_channel.h | 20 third_party/blink/renderer/platform/fonts/shaping/case_mapping_harfbuzz_buffer_filler.cc | 2 third_party/dawn/src/dawn/native/Limits.cpp | 17 third_party/dawn/src/dawn/native/metal/BufferMTL.mm | 12 third_party/dawn/src/dawn/native/metal/CommandBufferMTL.mm | 30 third_party/dawn/src/dawn/native/metal/PhysicalDeviceMTL.mm | 4 third_party/dawn/src/dawn/tests/BUILD.gn | 1 third_party/dawn/src/dawn/tests/end2end/ArchTierLimitsExhaustive.cpp | 16 third_party/dawn/src/dawn/tests/end2end/BufferRobustnessTests.cpp | 239 third_party/dawn/src/tint/lang/core/ir/transform/robustness.cc | 7 third_party/lens_server_proto/lens_overlay_request_id.proto | 13 third_party/lens_server_proto/lens_overlay_server.proto | 3 third_party/lens_server_proto/modality_chip_props.proto | 22 third_party/libaom/README.chromium | 2 third_party/libaom/source/config/config/aom_version.h | 6 third_party/libaom/source/libaom/av1/encoder/speed_features.c | 9 third_party/omnibox_proto/README.chromium | 4 third_party/omnibox_proto/aim_eligibility_response.proto | 8 third_party/omnibox_proto/chrome_aim_entry_point.proto | 6 third_party/pdfium/core/fxge/cfx_face.cpp | 2 third_party/skia/src/core/SkDescriptor.cpp | 9 third_party/skia/tests/DescriptorTest.cpp | 23 third_party/webrtc/media/engine/webrtc_voice_engine.cc | 26 third_party/webrtc/media/engine/webrtc_voice_engine_unittest.cc | 31 third_party/webrtc/modules/audio_coding/BUILD.gn | 2 third_party/webrtc/modules/audio_coding/DEPS | 1 third_party/webrtc/modules/audio_coding/acm2/acm_resampler.cc | 15 third_party/webrtc/modules/audio_coding/acm2/acm_resampler_unittest.cc | 79 third_party/webrtc/modules/video_coding/codecs/av1/dav1d_decoder.cc | 25 third_party/webrtc/modules/video_coding/codecs/av1/dav1d_decoder_unittest.cc | 59 tools/metrics/actions/actions.xml | 10 tools/metrics/histograms/enums.xml | 2 tools/metrics/histograms/metadata/autofill/histograms.xml | 11 tools/metrics/histograms/metadata/contextual_tasks/histograms.xml | 23 tools/metrics/histograms/metadata/glic/enums.xml | 46 tools/metrics/histograms/metadata/glic/histograms.xml | 254 tools/metrics/histograms/metadata/ui/histograms.xml | 20 tools/perf/benchmarks/omnibox_aim_perf_story.py | 3 ui/accessibility/extensions/strings/accessibility_extensions_strings_fa.xtb | 2 ui/events/ozone/evdev/BUILD.gn | 1 ui/events/ozone/evdev/tablet_event_converter_evdev.cc | 46 ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc | 140 ui/strings/translations/ax_strings_de.xtb | 4 ui/strings/translations/ui_strings_de.xtb | 2 ui/strings/translations/ui_strings_it.xtb | 10 ui/webui/resources/cr_components/composebox/BUILD.gn | 3 ui/webui/resources/cr_components/composebox/common.ts | 45 ui/webui/resources/cr_components/composebox/composebox.css | 39 ui/webui/resources/cr_components/composebox/composebox.html.ts | 52 ui/webui/resources/cr_components/composebox/composebox.ts | 295 ui/webui/resources/cr_components/composebox/composebox_file_inputs.ts | 14 ui/webui/resources/cr_components/composebox/composebox_tool_chip.css | 4 ui/webui/resources/cr_components/composebox/context_menu_entrypoint.css | 400 ui/webui/resources/cr_components/composebox/context_menu_entrypoint.html.ts | 107 ui/webui/resources/cr_components/composebox/context_menu_entrypoint.ts | 335 ui/webui/resources/cr_components/composebox/contextual_entrypoint_button.css | 4 ui/webui/resources/cr_components/composebox/contextual_entrypoint_button.ts | 3 ui/webui/resources/cr_components/composebox/file_thumbnail.css | 9 ui/webui/resources/cr_components/composebox/file_thumbnail.html.ts | 34 ui/webui/resources/cr_components/composebox/file_thumbnail.ts | 13 ui/webui/resources/cr_components/composebox/icons.html.ts | 23 ui/webui/resources/cr_components/composebox/window_proxy.ts | 8 ui/webui/resources/cr_components/searchbox/searchbox.css | 15 ui/webui/resources/cr_components/searchbox/searchbox.html.ts | 8 ui/webui/resources/cr_components/searchbox/searchbox.ts | 50 ui/webui/resources/cr_components/searchbox/searchbox_dropdown.css | 2 ui/webui/resources/cr_components/searchbox/utils.ts | 7 v8/include/v8-version.h | 4 v8/src/builtins/arm/builtins-arm.cc | 11 v8/src/builtins/arm64/builtins-arm64.cc | 11 v8/src/builtins/ia32/builtins-ia32.cc | 11 v8/src/builtins/loong64/builtins-loong64.cc | 13 v8/src/builtins/ppc/builtins-ppc.cc | 11 v8/src/builtins/s390/builtins-s390.cc | 11 v8/src/builtins/x64/builtins-x64.cc | 11 v8/src/codegen/bailout-reason.h | 4 v8/src/codegen/external-reference.cc | 3 v8/src/codegen/external-reference.h | 3 v8/src/codegen/loong64/macro-assembler-loong64.cc | 22 v8/src/common/globals.h | 8 v8/src/compiler/turboshaft/operations.cc | 7 v8/src/compiler/turboshaft/operations.h | 2 v8/src/compiler/turboshaft/turbolev-graph-builder.cc | 27 v8/src/interpreter/bytecode-flags-and-tokens.cc | 4 v8/src/interpreter/bytecode-flags-and-tokens.h | 1 v8/src/maglev/maglev-graph-builder.cc | 77 v8/src/maglev/maglev-graph-builder.h | 4 v8/src/maglev/maglev-graph-optimizer.cc | 9 v8/src/maglev/maglev-inlining.cc | 7 v8/src/maglev/maglev-interpreter-frame-state.cc | 12 v8/src/maglev/maglev-ir.cc | 119 v8/src/maglev/maglev-ir.h | 132 v8/src/maglev/maglev-phi-representation-selector.cc | 56 v8/src/maglev/maglev-phi-representation-selector.h | 3 v8/src/maglev/maglev-reducer-inl.h | 8 v8/src/maglev/maglev-reducer.h | 13 v8/src/objects/elements.cc | 48 v8/src/wasm/baseline/loong64/liftoff-assembler-loong64-inl.h | 37 v8/src/wasm/wasm-external-refs.cc | 19 v8/src/wasm/wasm-external-refs.h | 3 v8/tools/builtins-pgo/profiles/meta.json | 2 v8/tools/builtins-pgo/profiles/x64-rl.profile |12093 ++++----- v8/tools/builtins-pgo/profiles/x64.profile | 3737 +- v8/tools/builtins-pgo/profiles/x86-rl.profile | 3436 +- v8/tools/builtins-pgo/profiles/x86.profile |13149 ++++------ 623 files changed, 27737 insertions(+), 20162 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpi6mv3mqv/chromium_146.0.7680.80-1~deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpi6mv3mqv/chromium_146.0.7680.153-1~deb13u1.dsc: no acceptable signature found diff -Nru chromium-146.0.7680.80/DEPS chromium-146.0.7680.153/DEPS --- chromium-146.0.7680.80/DEPS 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/DEPS 2026-03-17 19:56:22.000000000 +0000 @@ -312,15 +312,15 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '248acd90d9a35ac46b2ec30201ae50f301b8a173', + 'skia_revision': '3c7c530c115124b415c1f4e0e35694fbaefd2177', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '70253f966a7c3936f5a5ff57c6a4a4face1f16ad', + 'v8_revision': 'abb5d7b829d60a5dae46fbcee0e9d0d554d3a946', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '1d3190bf5633327395d694d621258978d989dffd', + 'angle_revision': 'e05753c6d05b17b23d514038957469c70b75475c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -328,7 +328,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': '67cf48602b0c8aaa9807cd185212ee078eb30b21', + 'pdfium_revision': 'bccc616f83aaed08f65d4a707dfe00e24133772b', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. @@ -424,7 +424,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': 'c46c81b25577c40de6e7e510743ae0454e0c8351', + 'dawn_revision': '3d52cfc8dd0bc2cdbbecd9803cc08102de7e4597', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -1207,7 +1207,7 @@ 'packages': [ { 'package': 'chromium/chrome/android/orderfiles/arm64', - 'version': 'VQWzNB-EOSRig3g0YpUqXaqQLbskyeMJjoeEkdHGhywC', + 'version': 'f8v1ory1r6pdJPrPP2fO-qOWeBJUlI2Pw8RH1JQXhdkC', }, ], 'condition': 'checkout_android and non_git_source', @@ -1218,7 +1218,7 @@ 'packages': [ { 'package': 'chromium/android_webview/tools/orderfiles/arm', - 'version': 'matQR5r-xNzpStWv5IgB4xe9wKB4JFOGISFSQGsyT9IC', + 'version': 'XrPF5tLW_zCd1U5Q7zA6SWcfxJ663JjFwtAeU1NCMvMC', }, ], 'condition': 'checkout_android and non_git_source', @@ -1229,7 +1229,7 @@ 'packages': [ { 'package': 'chromium/android_webview/tools/orderfiles/arm64', - 'version': 'BtHI70_2lfmOBehZDgjOpYNmvN4GD_dZRnut-ELs5C8C', + 'version': 'FQugpOdVuUH6ucf4dRiuTJ5LgzbB0HygTxOfZxqigDEC', }, ], 'condition': 'checkout_android and non_git_source', @@ -2347,7 +2347,7 @@ Var('chromium_git') + '/external/libaddressinput.git' + '@' + 'e20690c8d5178bb282641d5eb06ef0298ff4cbc5', 'src/third_party/libaom/source/libaom': - Var('aomedia_git') + '/aom.git' + '@' + '4018d3b63456eb657475e66c352bfa86f321e0f5', + Var('aomedia_git') + '/aom.git' + '@' + '446588f90da2e3372a9352d3b2ba8ab3f342c8ce', 'src/third_party/crabbyavif/src': Var('chromium_git') + '/external/github.com/webmproject/CrabbyAvif.git' + '@' + Var('crabbyavif_revision'), @@ -3001,7 +3001,7 @@ Var('chromium_git') + '/webpagereplay.git' + '@' + Var('webpagereplay_revision'), 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'd1972add2a63b2a528a6471d447f82e0010b5215', + Var('webrtc_git') + '/src.git' + '@' + 'b2a90ac0037ee7187102ce2c40e5007216ca9a58', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -3773,7 +3773,7 @@ 'src/ios_internal': { 'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' + - '28dc4163fb8358c2de0ccb0fb34b3e81782d4083', + 'c5b000f4e300e019743d98232ddfcf01a30e0624', 'condition': 'checkout_ios and checkout_src_internal', }, diff -Nru chromium-146.0.7680.80/ash/constants/ash_features.cc chromium-146.0.7680.153/ash/constants/ash_features.cc --- chromium-146.0.7680.80/ash/constants/ash_features.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/constants/ash_features.cc 2026-03-17 19:56:22.000000000 +0000 @@ -59,6 +59,11 @@ BASE_FEATURE(kApnRevamp, base::FEATURE_ENABLED_BY_DEFAULT); +// Controls whether to enable ARC ADB sideloading support. +BASE_FEATURE(kArcAdbSideloadingFeature, + "ArcAdbSideloading", + base::FEATURE_DISABLED_BY_DEFAULT); + // Controls whether to defer loading of active tabs of background (occluded) // browser windows during session restore. BASE_FEATURE(kAshSessionRestoreDeferOccludedActiveTabLoad, diff -Nru chromium-146.0.7680.80/ash/constants/ash_features.h chromium-146.0.7680.153/ash/constants/ash_features.h --- chromium-146.0.7680.80/ash/constants/ash_features.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/constants/ash_features.h 2026-03-17 19:56:22.000000000 +0000 @@ -32,6 +32,7 @@ BASE_DECLARE_FEATURE(kAmbientModeDevUseProdFeature); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kAnnotatorMode); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kApnRevamp); +COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kArcAdbSideloadingFeature); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kAshSessionRestoreDeferOccludedActiveTabLoad); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kAssistMultiWord); diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_bn.xtb chromium-146.0.7680.153/ash/strings/ash_strings_bn.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_bn.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_bn.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ ডেস্ক ৬ আপনার অ্যাপ -কে আপনার ফোনের সাথে কানেক্ট করুন -হ্রাস +হ্রাস পেয়েছে সেশন থেকে প্রস্থান Google Tasks-এ সব টাস্ক দেখুন শুধু ৬টি টেমপ্লেটের অনুমতি আছে। নতুন টেমপ্লেট যোগ করতে কোনও একটি সরিয়ে দিন। @@ -2123,7 +2123,7 @@ সরজ্ঞামদণ্ড কোনও নেটওয়ার্ক নেই কার্সার থেকে লাইনের শুরুতে টেক্সট বেছে নিন -বৃদ্ধি +বৃদ্ধি হয়েছে ফোকাস মোড সেশন শুরু করুন টাস্ক এডিট করা যায়নি। সাজেস্ট করা ট্যাব গ্রুপ আবার চালু করুন diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_de.xtb chromium-146.0.7680.153/ash/strings/ash_strings_de.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_de.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_de.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -373,7 +373,7 @@ Zurück um einen Buchstaben Mehr Emojis anzeigen Auf deinem Chromebook oder Bluetooth-Gerät wird eine ältere Bluetooth-Version genutzt. Verwende für eine bessere Audioqualität das interne Mikrofon. -Tippe auf die Eingabestift-Schaltfläche in der Ablage, um Notizen oder Screenshots zu erstellen, den Laserpointer oder die Vergrößerungsfunktion zu verwenden. +Tippe auf den Eingabestift-Button in der Ablage, um Notizen oder Screenshots zu erstellen, den Laserpointer oder die Vergrößerungsfunktion zu verwenden. Vertikale Ausrichtung aktiv Eingabetaste oder Suchtaste + Leertaste drücken, um den zu bearbeitenden Text auszuwählen. Hotspot-Details anzeigen. Stelle eine Verbindung zu deinem Mobilfunknetz her, um den Hotspot zu verwenden. @@ -941,7 +941,7 @@ Öffne „Hilfe“ mit „“ in der App „Entdecken“. Aktuelle Version: () Zuletzt angesehene Seiten öffnen -Schaltfläche für automatische Klicks +Button für automatische Klicks Aus "" ist nicht verfügbar. Vorherigen Monat anzeigen @@ -2347,7 +2347,7 @@ Von links nach rechts wischen, um zurückzugehen Lesezeichenleiste ein- oder ausblenden Derzeit verbunden -Schaltfläche "Zurück" +Button „Zurück“ Rotationssperre an/aus. Hilfe aufrufen Temperatur in Fahrenheit anzeigen diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_et.xtb chromium-146.0.7680.153/ash/strings/ash_strings_et.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_et.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_et.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1494,7 +1494,7 @@ Ennista Toimivuse jälgimine on lubatud rak -Valvatav kasutaja +Järelevalvega kasutaja Lülita näoga juhtimine välja Vaadake oma telefoni hiljutisi fotosid ja meediat Tumeda teema oleku sisse-/väljalülitamine. . @@ -1825,7 +1825,7 @@ Töölaud 6 Teie rakendused Ühendage seade oma telefoniga -Vähenemine +Vähenda Välju seansist Vaadake kõiki ülesandeid Google Tasksis Lubatud on ainult kuus malli. Uue malli salvestamiseks peate mõne eemaldama. @@ -2123,7 +2123,7 @@ Tööriistariba Võrku pole Teksti valimine kursorist rea alguseni -Juurdekasv +Suurenda Käivita keskendumise seanss Ülesannet ei saanud muuta. Soovitatud grupi jätkamine diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_fa.xtb chromium-146.0.7680.153/ash/strings/ash_strings_fa.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_fa.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_fa.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -613,7 +613,7 @@ (بلوتوث) اعلان خوشامدگویی است برجسته کردن مورد قبلی در قفسه -بستن یادآوری خودکار +بستن یادآور خودکار دستگاه خاموش شود؟ صفحه لمسی داخلی غیرفعال شد زیرا موشواره متصل شده است. از موشواره یا صفحه‌کلید برای تأیید این تغییر استفاده کنید. diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_fi.xtb chromium-146.0.7680.153/ash/strings/ash_strings_fi.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_fi.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_fi.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ Työpöytä 6 Omat sovellukset Yhdistä puhelimeesi -Vähennä +Vähennys Sulje käyttökerta Katso kaikki tehtävät Google Tasksissa Vain kuusi mallia sallitaan. Poista malli tallentaaksesi uuden mallin. @@ -2122,7 +2122,7 @@ Työkalupalkki Ei verkkoa Valitse tekstiä kohdistimesta rivin alkuun -Lisää +Lisäys Aloita Keskittymisistunto Tehtävän muokkaaminen epäonnistui. Jatka ehdotettua ryhmää diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_fil.xtb chromium-146.0.7680.153/ash/strings/ash_strings_fil.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_fil.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_fil.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ Desk 6 Ang iyong mga app Ikonekta ang iyong sa telepono mo -Babaan +Bawas Lumabas sa session Tingnan ang lahat ng gawain sa Google Tasks 6 na template lang ang pinapayagan. Mag-alis ng template para mag-save ng bago. @@ -2121,7 +2121,7 @@ Toolbar Walang network I-highlight ang text mula sa cursor hanggang sa simula ng linya -Taasan +Dagdag Simulan ang session ng Pag-focus Hindi ma-edit ang gawain. Ipagpatuloy ang iminumungkahing grupo diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_it.xtb chromium-146.0.7680.153/ash/strings/ash_strings_it.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_it.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_it.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -268,7 +268,7 @@ Le modifiche verranno applicate al prossimo accesso. Aggiorna in qualsiasi momento in Impostazioni > Preferenze di sistema > Avvio. Riproduci i contenuti multimediali Non disponibile per questo gioco -Al momento le finestre di navigazione in incognito non sono supportate. Le altre app verranno salvate. +Al momento le finestre Incognito non sono supportate. Le altre app verranno salvate. Nessuna rete mobile Mirroring su Sblocca con l'impronta digitale @@ -1331,7 +1331,7 @@ Aggiornamento dell'elenco di profili in corso. Questa operazione può richiedere alcuni minuti. Menu Impostazioni chiuso Inizia la selezione -Al momento le finestre di navigazione in incognito non sono supportate +Al momento le finestre Incognito non sono supportate A colori Ingresso audio Puoi collegare fino a display esterni. @@ -1368,7 +1368,7 @@ Attiva/disattiva alta visibilità di Condivisione nelle vicinanze Creatività Pulsante -Apri nuova scheda in nuova finestra di navigazione in incognito +Apri nuova scheda in nuova finestra Incognito Bluetooth attivo Essenziali Paragrafo successivo @@ -1603,7 +1603,7 @@ L'indirizzo potrà essere aggiunto di nuovo in un secondo momento con l'autorizzazione di un genitore. Non in carica Personalizza questo dispositivo nell'app -Chiudi o riduci a icona le finestre di navigazione in incognito per cercare sullo schermo con Google Lens +Chiudi o riduci a icona le finestre Incognito per cercare sullo schermo con Google Lens Tocca o fai clic sulle icone 1-8 nella barra delle app Voce Spostati indietro tra l'angolo in basso a destra, Avvio app, la barra degli indirizzi, la barra dei preferiti, il sito web aperto e i download @@ -1642,7 +1642,7 @@ cpu , evento Ricarica in sospeso -Al momento le app Linux e le finestre di navigazione in incognito non sono supportate +Al momento le app Linux e le finestre Incognito non sono supportate La scorciatoia per fare clic con il tasto destro del mouse è attualmente disattivata Rifiuto La lingua è stata modificata @@ -1962,7 +1962,7 @@ L'opzione Mi piace invia un feedback che indica che ti piace questo gruppo suggerito Indirizzo IP: Aggiorna la finestra sinistra -Al momento le app Linux e le finestre di navigazione in incognito non sono supportate. Le altre app verranno salvate. +Al momento le app Linux e le finestre Incognito non sono supportate. Le altre app verranno salvate. La retroilluminazione della tastiera è attiva È ora di andare a letto Blocca sulla barra delle app diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_kn.xtb chromium-146.0.7680.153/ash/strings/ash_strings_kn.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_kn.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_kn.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -2122,7 +2122,7 @@ ಟೂಲ್‌ಬಾರ್ ನೆಟ್‌ವರ್ಕ್ ಇಲ್ಲ ಕರ್ಸರ್‌ನಿಂದ ಸಾಲಿನ ಆರಂಭಕ್ಕೆ ಪಠ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ -ಹೆಚ್ಚಿಕೆ +ಏರಿಕೆ ಫೋಕಸ್ ಸೆಶನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ ಕಾರ್ಯವನ್ನು ಎಡಿಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಸೂಚಿಸಲಾದ ಗುಂಪನ್ನು ಪುನರಾರಂಭಿಸಿ diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_ko.xtb chromium-146.0.7680.153/ash/strings/ash_strings_ko.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_ko.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_ko.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -2122,7 +2122,7 @@ 툴바 네트워크 없음 커서부터 첫 줄까지 텍스트 선택 -올리기 +늘리기 집중 모드 세션 시작 할 일을 수정할 수 없습니다. 추천 그룹 재개 diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_mk.xtb chromium-146.0.7680.153/ash/strings/ash_strings_mk.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_mk.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_mk.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -2422,7 +2422,7 @@ Не може да се вклучи пристапот до камерата далечински Wi-Fi: Камерата е поставена во горниот лев агол -Повлечете нагоре за да појдете на почетен екран +Повлечете нагоре за да одите на почетниот екран Се користи микрофонот. Верзија на OS Промени ја позицијата на менито diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_ml.xtb chromium-146.0.7680.153/ash/strings/ash_strings_ml.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_ml.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_ml.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ ഡെസ്ക് 6 നിങ്ങളുടെ ആപ്പുകൾ നിങ്ങളുടെ ഫോണുമായി കണക്‌റ്റ് ചെയ്യുക -കുറവ് +കുറയ്‌ക്കുക സെഷൻ എക്സിറ്റ് Google Tasks-ൽ എല്ലാ ടാസ്ക്കുകളും കാണുക 6 ടെംപ്ലേറ്റുകൾ മാത്രമേ അനുവദിക്കൂ. പുതിയൊരെണ്ണം സംരക്ഷിക്കാൻ ഒരു ടെംപ്ലേറ്റ് നീക്കം ചെയ്യുക. @@ -2123,7 +2123,7 @@ ഉപകരണബാര്‍ നെറ്റ്‌വര്‍ക്ക് ഇല്ല കഴ്‌സർ മുതൽ വരിയുടെ തുടക്കം വരെയുള്ള ടെക്‌സ്‌റ്റ് തിരഞ്ഞെടുക്കുക -വർദ്ധന +വർദ്ധിപ്പിക്കുക ഫോക്കസ് സെഷൻ ആരംഭിക്കുക ടാസ്‌ക് എഡിറ്റ് ചെയ്യാനായില്ല. നിർദ്ദേശിച്ച ഗ്രൂപ്പ് പുനരാരംഭിക്കുക diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_mr.xtb chromium-146.0.7680.153/ash/strings/ash_strings_mr.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_mr.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_mr.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ डेस्‍क ६ तुमची अ‍ॅप्‍स तुमचे तुमच्या फोनशी कनेक्ट करा -घट +कमी होणे सेशनमधून बाहेर पडा Google Tasks मधील सर्व टास्क पहा फक्त सहा टेंप्लेटना अनुमती आहे. नवीन टेंप्लेट सेव्ह करण्यासाठी एखादी काढून टाका. @@ -2122,7 +2122,7 @@ टूलबार कोणतेही नेटवर्क नाही कर्सरपासून ओळीच्या सुरुवातीपर्यंत मजकूर निवडा -बढती +वाढणे फोकस सेशन सुरू करा टास्क संपादित करता आली नाही. सुचवलेला गट पुन्हा सुरू करा diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_ms.xtb chromium-146.0.7680.153/ash/strings/ash_strings_ms.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_ms.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_ms.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ Meja 6 Apl anda Sambungkan anda dengan telefon anda -Susutan +Penyusutan Keluar dari sesi Lihat semua tugasan dalam Google Tasks 6 templat sahaja dibenarkan. Alih keluar templat untuk menyimpan yang baharu. diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_nl.xtb chromium-146.0.7680.153/ash/strings/ash_strings_nl.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_nl.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_nl.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ Bureau 6 Je apps Koppel je aan je telefoon -Lager +Verlaging Sessie sluiten Alle taken in Google Tasks bekijken Er zijn maar 6 templates toegestaan. Verwijder een template om een nieuwe op te slaan. @@ -2122,7 +2122,7 @@ Toolbar Geen netwerk Tekst vanaf cursor tot het begin van de regel selecteren -Hoger +Verhoging Focussessie starten Kan taak niet bewerken. Voorgestelde groep hervatten diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_sw.xtb chromium-146.0.7680.153/ash/strings/ash_strings_sw.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_sw.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_sw.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ Eneokazi la sita Programu zako Unganisha na simu yako -Punguzo +punguzo Toka kwenye kipindi Angalia majukumu yote kwenye Google Majukumu Vinaruhusiwa violezo sita tu. Ondoa kiolezo ili uhifadhi kipya. @@ -2123,7 +2123,7 @@ Upauzana Hakuna mtandao Chagua maandishi kuanzia kwenye kiteuzi hadi mwanzo wa mstari -Ongezeko +ongezeko Anzisha kipindi cha Kuangazia Imeshindwa kubadilisha jukumu. Endelea na kikundi kilichopendekezwa diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_ta.xtb chromium-146.0.7680.153/ash/strings/ash_strings_ta.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_ta.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_ta.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ டெஸ்க் 6 உங்கள் ஆப்ஸ் உங்கள் ஐ ஃபோனுடன் இணைக்கவும் -குறை +குறைக்கும் அமர்விலிருந்து வெளியேறவும் Google Tasksஸில் அனைத்து பணிகளையும் பார்க்கலாம் ஆறு டெம்ப்ளேட்டுகளை மட்டுமே சேமிக்க முடியும். புதிதாக ஒன்றைச் சேமிக்க, ஒரு டெம்ப்ளேட்டை அகற்றவும். @@ -2122,7 +2122,7 @@ Toolbar நெட்வொர்க் இல்லை கர்சரிலிருந்து வரியின் தொடக்கம் வரை தேர்ந்தெடுக்கும் -அதிகரி +அதிகரிகரிக்கும் ஃபோகஸ் நேரத்தைத் தொடங்கும் பணியைத் திருத்த முடியவில்லை. பரிந்துரைக்கப்பட்ட குழுவை மீண்டும் தொடங்கலாம் diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_te.xtb chromium-146.0.7680.153/ash/strings/ash_strings_te.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_te.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_te.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -133,7 +133,7 @@ , ఇన్‌స్టాల్ చేసిన యాప్ ప్రస్తుత విండోను మూసివేయండి నెట్‌వర్క్ లిస్ట్‌ను చూడండి. . -నోటిఫికేషన్ చర్యను మేనేజ్ చేయడానికి పరికరాన్ని అన్‌లాక్ చేయండి +నోటిఫికేషన్ చర్యను మేనేజ్ చేయడానికి డివైజ్‌ను అన్‌లాక్ చేయండి రాత్రి కాంతిని టోగుల్ చేయి. సూచించిన గ్రూప్ అవును @@ -171,7 +171,7 @@ పెద్ద మౌస్ కర్సర్ మీ ఫోన్‌లోని తాజా ఫోటోలను, మీడియాను, నోటిఫికేషన్‌లను చూడండి డెస్క్ 2 -Google అడ్మిన్ కన్సోల్‌లో ఈ పరికరాన్ని సెటప్ చేయమని మీ అడ్మినిస్ట్రేటర్‌ను అడగండి +Google అడ్మిన్ కన్సోల్‌లో ఈ డివైజ్‌ను సెటప్ చేయమని మీ అడ్మినిస్ట్రేటర్‌ను అడగండి స్టోరేజ్ మేనేజ్‌మెంట్ క్విక్ షేర్ సెట్టింగ్‌లను చూపండి. క్విక్ షేర్ డిజేబుల్ చేయబడింది పరికరాలు అందుబాటులో ఉన్నాయి @@ -348,7 +348,7 @@ గోప్యమైన కంటెంట్ కనిపించినప్పుడు స్క్రీన్ రికార్డింగ్ అనుమతించబడదు సూచనను తీసివేయండి కొత్త ట్యాబ్‌లో లింక్‌ను తెరిచి, ఈ కొత్త ట్యాబ్‌కు మారండి -ఈ పరికరాన్ని అనుకూలంగా మార్చడానికి యాప్‌ను ఇన్‌స్టాల్ చేయండి +ఈ డివైజ్‌ను అనుకూలంగా మార్చడానికి యాప్‌ను ఇన్‌స్టాల్ చేయండి పరికరాల కోసం స్కాన్ చేస్తోంది... ‌ను డౌన్‌లోడ్ చేస్తున్నప్పుడు ఏదో తప్పు జరిగింది సూచించిన ఫైల్స్ @@ -511,7 +511,7 @@ నుండి ctrl+search+s , ను మేనేజ్ చేస్తోంది -బిల్ట్-ఇన్ టచ్‌ప్యాడ్ డిజేబుల్ అయింది. మార్పును నిర్ధారించడానికి మీ కీబోర్డ్‌ను వేరొక కర్సర్‌ను నియంత్రించే పరికరాన్ని ఉపయోగించండి. +బిల్ట్-ఇన్ టచ్‌ప్యాడ్ డిజేబుల్ అయింది. మార్పును నిర్ధారించడానికి మీ కీబోర్డ్‌ను వేరొక కర్సర్‌ను కంట్రోల్ చేసే డివైజ్‌ను ఉపయోగించండి. లేదంటే, బిల్ట్-ఇన్ టచ్‌ప్యాడ్ సెకన్లలో మళ్లీ ఎనేబుల్ చేయబడుతుంది. క్యాప్చర్ మోడ్ నుండి నిష్క్రమించండి @@ -596,7 +596,7 @@ ఎంచుకున్న ఎగువ కుడి హ్యాండిల్‌ను జరపడానికి, బాణం గుర్తు కీలను ఉపయోగించండి ఇలా చెప్పి ట్రై చేయండి: కెమెరా యాక్సెస్‌ను ఆన్/ఆఫ్ చేయండి -మీరు ఈ పరికరాన్ని ఈ రోజు పాటు ఉపయోగించారు +మీరు ఈ డివైజ్‌ను ఈ రోజు పాటు ఉపయోగించారు సపోర్ట్ చేయనివి వెర్షన్ () అర ఎడమ వైపున ఉంది @@ -614,7 +614,7 @@ స్వాగత నోటిఫికేషన్ షెల్ఫ్‌లో మునుపటి ఐటెమ్‌ను హైలైట్ చేయండి ఆటోమేటిక్ రిమైండర్‌ను మూసివేయండి -పరికరాన్ని షట్ డౌన్ చేయాలా? +డివైజ్‌ను షట్ డౌన్ చేయాలా? మౌస్ కనెక్ట్ అయి ఉన్నందున బిల్ట్-ఇన్ టచ్‌ప్యాడ్ డిజేబుల్ చేయబడింది. మార్పును నిర్ధారించడానికి మౌస్ లేదా కీబోర్డ్‌ను ఉపయోగించండి. లేదంటే, బిల్ట్-ఇన్ టచ్‌ప్యాడ్ సెకన్లలో మళ్లీ ఎనేబుల్ చేయబడుతుంది. @@ -726,7 +726,7 @@ ద్వారా ఖాతా నిర్వహించబడుతోంది పై నుండి విండో టైల్ సైజ్ మార్చండి చివరిగా టాస్క్‌లు అప్‌డేట్ అయిన సమయం, తేదీ: , . -{0,plural, =1{1 నిమిషం లోపు పరికరాన్ని అప్‌డేట్ చేయండి}other{# నిమిషాల లోపు పరికరాన్ని అప్‌డేట్ చేయండి}} +{0,plural, =1{1 నిమిషం లోపు డివైజ్‌ను అప్‌డేట్ చేయండి}other{# నిమిషాల లోపు డివైజ్‌ను అప్‌డేట్ చేయండి}} అందుబాటులో ఉన్న ప్రొఫైల్స్ కోసం వెతుకుతోంది. దీనికి కొన్ని నిమిషాలు పట్టవచ్చు. కొత్త ట్యాబ్‌లో లింక్‌ను తెరిచి, ప్రస్తుత ట్యాబ్‌లోనే ఉండండి పరికరాలకు కనెక్ట్ చేయబడింది @@ -774,7 +774,7 @@ ముందు వైపు బటన్ ఆ‌ఫ్‌లో ఉంది కింది వాటి నుండి నోటిఫికేషన్‌లను అనుమతించండి -మీ పరికరాన్ని పెయిర్ చేయడానికి బ్లూటూత్ సెట్టింగ్‌లను తెరవండి +మీ డివైజ్‌ను పెయిర్ చేయడానికి బ్లూటూత్ సెట్టింగ్‌లను తెరవండి క్లిప్‌బోర్డ్‌ను తెరువు ఫోకస్ చేయడాన్ని ఆన్ చేయడానికి టాస్క్ సెట్ చేయబడింది: . టాస్క్‌ను ఎంటర్ చేయడానికి ఎంటర్‌ను నొక్కండి. గోప్యతా స్క్రీన్‌ను టోగుల్ చేస్తుంది. . @@ -787,7 +787,7 @@ (రోజు /) మీరు తర్వాత ఎప్పుడైనా మైక్ పనితీరును మార్చవచ్చు. సుమారు మిగిలింది (%). -మీ పరికరాన్ని పవర్‌కి కనెక్ట్ చేయండి. +మీ డివైజ్‌ను పవర్‌కు కనెక్ట్ చేయండి. అధిక విజిబిలిటీ టోగుల్ చేయండి మేనేజ్ చేయబడిన యూజర్ మీ ఫ్లోటింగ్ విండోను దాచడానికి స్వైప్ చేయండి @@ -843,7 +843,7 @@ ప్రారంభం యాప్‌లను స్ట్రీమ్ చేయడం సాధ్యపడదు ఫుల్ స్క్రీన్‌ను రికార్డ్ చేయడానికి enterను నొక్కండి -మీ పరికరాన్ని షట్ డౌన్ చేయడానికి ట్రై చేయండి. +మీ డివైజ్‌ను షట్ డౌన్ చేయడానికి ట్రై చేయండి. డౌన్‌లోడ్ మేనేజ‌ర్‌ USB పరిమితిని చేరుకున్నారు ఈ రోజు తెరిచారు @@ -888,7 +888,7 @@ లేజర్ పాయింటర్ మార్కర్ అందుబాటులో లేదు. స్క్రీన్‌కాస్ట్‌ను మళ్లీ తెరవండి. కిందికి స్క్రోల్ చేయి -పరికరాన్ని లాక్ చేయండి +డివైజ్‌ను లాక్ చేయండి మీరు మీ PIN, పాస్‌వర్డ్‌ను మరిచిపోతే లేదా ఇటీవల మీ Google ఖాతా పాస్‌వర్డ్‌ను మార్చినట్లయితే, ఈ యూజర్‌ను రికవర్ చేయడానికి ట్రై చేయండి. యాక్టివ్ విండోను డిస్‌ప్లేల మధ్య తరల్చండి మరింత సెక్యూరిటీ కోసం పాస్‌వర్డ్‌ కావాలి @@ -931,7 +931,7 @@ పూర్తయింది! డిస్‌ప్లేలను కేబుల్ సపోర్ట్ చేయకపోవచ్చు వివరాల కోసం చెక్ చేయడానికి క్లిక్ చేయండి -{0,plural, =1{ఒక రోజు లోపు పరికరాన్ని అప్‌డేట్ చేయండి}other{# రోజులలోపు పరికరాన్ని అప్‌డేట్ చేయండి}} +{0,plural, =1{ఒక రోజు లోపు డివైజ్‌ను అప్‌డేట్ చేయండి}other{# రోజులలోపు డివైజ్‌ను అప్‌డేట్ చేయండి}} భాషలు యాక్టివ్ విండోను కుడి వైపున ఉన్న డెస్క్‌కు తరలించండి ప్రస్తుతం విండోలో తెరిచి ఉన్న అన్ని పేజీలను బుక్‌మార్క్‌లుగా కొత్త ఫోల్డర్‌లో సేవ్ చేయండి @@ -971,7 +971,7 @@ విండో లేఅవుట్ ఆప్షన్‌లను తెరుస్తుంది మీడియా మిర్రరింగ్ -సెక్యూరిటీ అప్‌డేట్‌లు ముగిశాయి. మీ పరికరాన్ని అప్‌గ్రేడ్ చేయండి. +సెక్యూరిటీ అప్‌డేట్‌లు ముగిశాయి. మీ డివైజ్‌ను అప్‌గ్రేడ్ చేయండి. మరింత సెక్యూరిటీ కోసం పాస్‌వర్డ్‌ను ఎంటర్ చేయండి అన్‌పిన్ చేయి ప్రొఫైల్‌కు కనెక్ట్ చేస్తోంది. దీనికి కొన్ని నిమిషాలు పట్టవచ్చు. @@ -1030,7 +1030,7 @@ స్క్రీన్ రికార్డింగ్‌ను ఆపివేయి Wi-Fi నెట్‌వర్క్‌లో చేరండి స్పీచ్ రికగ్నిషన్ ఫైళ్లు డౌన్‌లోడ్ అవుతున్నాయి... % -{0,plural, =0{ఇప్పుడే పరికరాన్ని అప్‌డేట్ చేయండి}=1{1 సెకను లోపు పరికరాన్ని అప్‌డేట్ చేయండి}other{# సెకన్ల లోపు పరికరాన్ని అప్‌డేట్ చేయండి}} +{0,plural, =0{ఇప్పుడే డివైజ్‌ను అప్‌డేట్ చేయండి}=1{1 సెకను లోపు డివైజ్‌ను అప్‌డేట్ చేయండి}other{# సెకన్ల లోపు డివైజ్‌ను అప్‌డేట్ చేయండి}} ప్రారంభించండి Google Contacts తర్వాతి ట్రాక్ @@ -1080,7 +1080,7 @@ డివైజ్‌లు , నక్షత్ర రేటింగ్ తొలగించడానికి Ctrl + Wను నొక్కండి -{0,plural, =0{ఇప్పుడే పరికరాన్ని మునుపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}=1{1 సెకను లోపు పరికరాన్ని మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}other{# సెకన్ల లోపు పరికరాన్ని మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}} +{0,plural, =0{ఇప్పుడే డివైజ్‌ను మునుపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}=1{1 సెకను లోపు డివైజ్‌ను మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}other{# సెకన్ల లోపు డివైజ్‌ను మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}} పాక్షిక స్క్రీన్‌షాట్ తీయండి ప్రాంతం, కెమెరాలో చూపించలేనంత చిన్నదిగా ఉంది , యాప్ సిఫార్సు @@ -1099,7 +1099,7 @@ మీతో ఎవ్వరు షేర్ చేయలేరు మీ ఫోన్‌లోని యాప్‌లు అర కింది భాగంలో ఉంది -తల్లి/తండ్రి కోడ్‌తో పరికరాన్ని అన్‌లాక్ చేయండి +తల్లి/తండ్రి కోడ్‌తో డివైజ్‌ను అన్‌లాక్ చేయండి దీని విషయంలో సహాయం చేయలేము. మరొక రిక్వెస్ట్‌ను ట్రై చేయండి. గోప్యతా స్క్రీన్ ఆఫ్‌లో ఉంది మీ డౌన్‌లోడ్ తర్వాత మళ్లీ ప్రారంభమవుతుంది. ప్రస్తుతానికి, ప్రాసెసింగ్ కోసం స్పీచ్ Googleకు పంపబడుతుంది. @@ -1115,7 +1115,7 @@ మీ కనెక్షన్‌ను చెక్ చేసి, మళ్లీ ట్రై చేయండి. అప్‌డేట్‌ సేవ్ చేసిన డెస్క్‌ను తొలగించాలా? -{0,plural, =1{ఒక రోజు లోపు పరికరాన్ని మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}other{# రోజుల్లోపు పరికరాన్ని మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}} +{0,plural, =1{ఒక రోజు లోపు డివైజ్‌ను మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}other{# రోజుల్లోపు డివైజ్‌ను మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}} నోటిఫికేషన్‌లను చూడటానికి దయచేసి అన్‌లాక్ చేయండి 6 సేవ్ చేయబడిన డెస్క్‌లు మాత్రమే అనుమతించబడతాయి. కొత్తదాన్ని సేవ్ చేయడానికి డెస్క్‌ను తీసివేయండి. డౌన్‌లోడ్‌లు @@ -1128,7 +1128,7 @@ Play Store Google Assistant డెమో సెషన్‌లో అందుబాటులో లేదు. Google ఖాతాతో ఉన్న మీ కాంటాక్ట్‌లు మాత్రమే కనెక్ట్ అవుతాయి -స్పీచ్ ఫైల్స్‌ను ఇన్‌స్టాల్ చేయడం సాధ్యం కాదు. మీ పరికరాన్ని అప్‌డేట్ చేయాలి. మీ పరికరాన్ని రీస్టార్ట్ చేసి, ఆపై మళ్లీ ట్రై చేయండి. +స్పీచ్ ఫైల్స్‌ను ఇన్‌స్టాల్ చేయడం సాధ్యం కాదు. మీ డివైజ్‌ను అప్‌డేట్ చేయాలి. మీ డివైజ్‌ను రీస్టార్ట్ చేసి, ఆపై మళ్లీ ట్రై చేయండి. ప్రసారం చేస్తున్నాము మీరు తదుపరిసారి సైన్ ఇన్ చేసినప్పుడు గతంలో తెరిచిన విండోలు, యాప్‌లు మీకు కనిపిస్తాయి మీ మొబైల్ నెట్‌వర్క్ హాట్‌స్పాట్‌ను సపోర్ట్ చేయదు @@ -1170,7 +1170,7 @@ ఫోకస్ చేయమని సూచించిన టాస్క్ నిలువుగా ఉంది % బ్యాటరీ -పరికరాన్ని సెటప్ చేసిన తర్వాత ను యాక్టివేట్ చేయండి +డివైజ్‌ను సెటప్ చేసిన తర్వాత ను యాక్టివేట్ చేయండి బలమైన ఆమోదించు ప్రస్తుతం మీ కెమెరాను ఉపయోగిస్తోంది @@ -1606,7 +1606,7 @@ క్యాలెండర్‌కు జోడించండి మీ తల్లి/తండ్రి అనుమతితో ను తిరిగి యాడ్ చేయవచ్చు. ఛార్జ్ కావడం లేదు -యాప్‌లో ఈ పరికరాన్ని అనుకూలంగా మార్చండి +యాప్‌లో ఈ డివైజ్‌ను అనుకూలంగా మార్చండి Google Lensతో మీ స్క్రీన్‌ను సెర్చ్ చేయడానికి అజ్ఞాత విండోలను మూసివేయండి లేదా మినిమైజ్ చేయండి 1-8 షెల్ఫ్ చిహ్నాలను క్లిక్ లేదా ట్యాప్ చేయండి Voice @@ -1627,8 +1627,8 @@ బిల్ట్-ఇన్ టచ్‌ప్యాడ్ ఆన్ చేయబడింది బ్లూటూత్ ఆన్ చేయబడింది విండోను కుడి వైపునకు పిన్ చేయండి -పరికరాన్ని అన్‌లాక్ చేయడానికి, మీ పిన్‌ను ఎంటర్ చేయండి. -{0,plural, =1{ఒక గంట లోపు పరికరాన్ని మునుపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}other{# గంటల్లోపు పరికరాన్ని మునుపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}} +డివైజ్‌ను అన్‌లాక్ చేయడానికి, మీ పిన్‌ను ఎంటర్ చేయండి. +{0,plural, =1{ఒక గంట లోపు డివైజ్‌ను మునుపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}other{# గంటల్లోపు డివైజ్‌ను మునుపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}} కెమెరా యాక్సెస్‌ను ఆన్ చేయండి CAPS LOCK ఆపివేయబడింది టైమర్‌ను ఎడిట్ చేయండి. . @@ -1653,7 +1653,7 @@ పోర్ట్రెయిట్ మాత్రమే అందుబాటులో ఉంది ఇమేజ్‌లు ‌కు ఆన్‌లో ఉంది -{0,plural, =1{1 నిమిషం లోపు పరికరాన్ని మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}other{# నిమిషాల్లోపు పరికరాన్ని మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}} +{0,plural, =1{1 నిమిషం లోపు డివైజ్‌ను మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}other{# నిమిషాల్లోపు డివైజ్‌ను మునపటి వెర్షన్‌కు అప్‌డేట్ చేయండి}} హాట్‌స్పాట్‌ను టోగుల్ చేయండి ఫైల్‌ను డౌన్‌లోడ్ చేయలేకపోయింది కాంటాక్ట్‌ను క్రియేట్ చేయడం సాధ్యపడలేదు @@ -1686,7 +1686,7 @@ మరిన్ని యాప్‌లు, గేమ్‌లను అన్వేషించండి ఫోకస్‌ను పూర్తి చేయండి eSIM కనెక్షన్ అందుబాటులో లేదు -{0,plural, =1{ఒక గంట లోపు పరికరాన్ని అప్‌డేట్ చేయండి}other{# గంటల లోపు పరికరాన్ని అప్‌డేట్ చేయండి}} +{0,plural, =1{ఒక గంట లోపు డివైజ్‌ను అప్‌డేట్ చేయండి}other{# గంటల లోపు డివైజ్‌ను అప్‌డేట్ చేయండి}} USB ద్వారా ఛార్జ్ అవుతోంది Filesలో సెర్చ్ చేయండి వీక్షణ ప్రొటెక్షన్ ఆన్‌లో ఉంది కాబట్టి నోటిఫికేషన్ దాచబడింది @@ -1721,7 +1721,7 @@ పాస్‌వర్డ్ హైలైట్ చేసిన అంశం కోసం కుడి-క్లిక్ మెనూను తెరవండి స్థాన సేవలు, పరికర మైక్రోఫోన్, కెమెరా లేదా ఇతర ఫీచర్‌లను ఉపయోగించడానికి వెబ్‌సైట్‌లు, యాప్‌లు, ఎక్స్‌టెన్షన్‌లను అనుమతించండి -మీ ఫోన్ హాట్‌స్పాట్‌కు కనెక్ట్ చేసి, సైలెంట్‌లో పెట్టి, మీ పరికరాన్ని కనుగొని, మీ ఫోన్‌లో ప్రస్తుతం తెరిచి ఉన్న Chrome ట్యాబ్‌లను చూడండి +మీ ఫోన్ హాట్‌స్పాట్‌కు కనెక్ట్ చేసి, సైలెంట్‌లో పెట్టి, మీ డివైజ్‌ను కనుగొని, మీ ఫోన్‌లో ప్రస్తుతం తెరిచి ఉన్న Chrome ట్యాబ్‌లను చూడండి డెస్క్ 3 ఇమేజ్‌ను కాపీ చేయండి మీ Chromebookను అన్‌లాక్ చేయడం సాధ్యపడలేదు @@ -1789,7 +1789,7 @@ షార్ట్‌కట్ ఆఫ్ చేయబడింది {NUM_APPS,plural, =1{1 యాప్}other{# యాప్‌లు}} Caps Lockను ఆన్ చేయండి -కీ షార్ట్‌కట్‌లు, పరికరాన్ని ఉపయోగించడం కోసం చిట్కాలు, ఇంకా మరిన్ని +కీ షార్ట్‌కట్‌లు, డివైజ్‌ను ఉపయోగించడం కోసం చిట్కాలు, ఇంకా మరిన్ని ఈరోజుకు తిరిగి వెళ్లండి మీ తక్కువ పనితీరుకు లోనవ్వొచ్చు. సర్టిఫై చేయబడిన W లేదా అంతకంటే ఎక్కువ USB-C పవర్ అడాప్టర్‌ను ఉపయోగించండి. విండోలను మధ్య మారడానికి కింది వైపు బాణాన్ని నొక్కండి @@ -1799,7 +1799,7 @@ చివరిగా టాస్క్‌లు అప్‌డేట్ అయిన సమయం: . మీ స్మార్ట్ కార్డ్‌ను గుర్తించడం సాధ్యం కాలేదు. మళ్ళీ ప్రయత్నించండి. తొలగించండి -పరికరాన్ని అప్‌డేట్ చేయండి +డివైజ్‌ను అప్‌డేట్ చేయండి కంట్రోల్స్‌ను చూడండి దీనిలో సేవ్ చేయండి పోర్ట్రెయిట్ @@ -1825,7 +1825,7 @@ డెస్క్ 6 మీ యాప్‌లు మీ ని మీ ఫోన్‌కి కనెక్ట్ చేయండి -తరుగుదల +తగ్గించండి సెషన్ నిష్క్రమించండి Google Tasksలో అన్ని టాస్క్‌లను చూడండి కేవలం 6 టెంప్లేట్‌లకు మాత్రమే అనుమతి ఉంది. కొత్త టెంప్లేట్‌ను జోడించాలంటే ఒక పాత టెంప్లేట్‌ను తీసివేయాలి. @@ -1878,7 +1878,7 @@ మెమరీ | మొత్తం రెండు మౌస్ బటన్లు Google Sheet క్రియేట్ చేయబడింది -% బ్యాటరీ మిగిలి ఉంది. మీ పరికరాన్ని పవర్‌కు కనెక్ట్ చేయండి. +% బ్యాటరీ మిగిలి ఉంది. మీ డివైజ్‌ను పవర్‌కు కనెక్ట్ చేయండి. . ఒక అప్‌డేట్‌ను వర్తింపజేయడానికి ఈ Chromebookను రీస్టార్ట్ చేయాలి. దీనికి 1 నిమిషం వరకు పట్టవచ్చు. నా స్క్రీన్ సెర్చ్ చేయండి ExpressKey 2 @@ -1893,7 +1893,7 @@ EDGE ఫలితాలు ఏవీ కనుగొనబడలేదు మీ అడ్మినిస్ట్రేటర్ మీ eSIMను రీసెట్ చేస్తున్నారు. దీనికి కొన్ని నిమిషాలు పట్టవచ్చు. -పరికరాన్ని మునుపటి వెర్షన్‌కు అప్‌డేట్ చేయండి +డివైజ్‌ను మునుపటి వెర్షన్‌కు అప్‌డేట్ చేయండి కెమెరాను విస్తరించండి ఎంచుకోబడలేదు డిక్టేషన్‌ను ఉపయోగించడానికి టెక్స్ట్ ఫీల్డ్‌కు వెళ్లండి @@ -1923,7 +1923,7 @@ మీరు సెట్టింగ్‌ల నుండి తర్వాత ఎప్పుడైనా సెటప్ చేయవచ్చు. పూర్తి స్క్రీన్‌షాట్ తీయండి లేదా స్క్రీన్ రికార్డింగ్ చేయండి ఫోకస్ చేసినప్పుడు అంతరాయం కలిగించవద్దు -పరికరాన్ని అన్‌లాక్ చేయడానికి, మీ Family Link తల్లి/తండ్రి యాక్సెస్ కోడ్‌ను నమోదు చేయండి +డివైజ్‌ను అన్‌లాక్ చేయడానికి, మీ Family Link తల్లి/తండ్రి యాక్సెస్ కోడ్‌ను ఎంటర్ చేయండి మీ మొబైల్ నెట్‌వర్క్‌ను సెటప్ చేయడాన్ని పూర్తి చేయండి ‌ను నొక్కి, పట్టుకొని, మీరు తెరవాలనుకుంటున్న విండో వచ్చే వరకు ‌ను ట్యాప్ చేసి ఉంచి, ఆపై వదిలివేయండి యాప్ షార్ట్‌కట్‌లు @@ -1956,9 +1956,9 @@ Android పేజీ కింది వైపు కీ కెమెరా ఫ్రేమింగ్ ఆన్‌లో ఉంది. -షట్ డౌన్ అయిన తర్వాత, అడ్మినిస్ట్రేటర్ లాగ్ అవుట్ చేయబడతారు, ఇంకా మీ పరికరాన్ని కంట్రోల్ చేయలేరు. +షట్ డౌన్ అయిన తర్వాత, అడ్మినిస్ట్రేటర్ లాగ్ అవుట్ చేయబడతారు, ఇంకా మీ డివైజ్‌ను కంట్రోల్ చేయలేరు. -పరికరాన్ని షట్ డౌన్ చేయడానికి, పరికరంపై ఉన్న పవర్ బటన్‌ను మళ్లీ నొక్కి, పట్టుకోండి. +డివైజ్‌ను షట్ డౌన్ చేయడానికి, డివైజ్‌‌కు ఉన్న పవర్ బటన్‌ను మళ్లీ నొక్కి, పట్టుకోండి. ఫోకస్ చేసినప్పుడు అంతరాయం కలిగించవద్దు ఫీచర్‌ను ఎనేబుల్ చేయండి Google Tasks క్రియేట్ చేయండి @@ -2000,7 +2000,7 @@ కలర్ మార్పిడి మోడ్ సెట్టింగ్‌లను తెరవండి, (యజమాని) -మీ నోటిఫికేషన్‌లను చూడటానికి పరికరాన్ని అన్‌లాక్ చేయండి +మీ నోటిఫికేషన్‌లను చూడటానికి డివైజ్‌ను అన్‌లాక్ చేయండి సహాయం ప్రసంగ రూప ప్రతిస్పందనను నిలిపివేయడానికి ఒకేసారి రెండు వాల్యూమ్ కీలను ఐదు సెకన్ల పాటు నొక్కి, పట్టుకోండి. "" ( Hz) రిజల్యూషన్‌కు మార్చబడింది. పోర్ట్ బ్యాండ్‌విడ్త్ పరిమితుల కారణంగా, మీ డిస్‌ప్లే ( Hz) రిజల్యూషన్‌కు సపోర్ట్ చేయదు. నిర్ధారించకుండా, మునుపటి సెట్టింగ్‌లు ‌లో రీస్టోర్ చేయబడతాయి. @@ -2060,7 +2060,7 @@ డిస్టర్బ్ చేయవద్దు ఫోకస్‌ను పాప్-అప్‌లు, డైలాగ్‌లకు మార్చండి కెనరీ -పరికరాన్ని గెస్ట్ లాగా ఉపయోగించడానికి, మీరు సైన్ అవుట్ చేసి, ఆపై స్క్రీన్ దిగువున ఉన్న "గెస్ట్ లాగా బ్రౌజ్ చేయండి" ఆప్షన్‌ను ఎంచుకోవాలి. +డివైజ్‌ను గెస్ట్ లాగా ఉపయోగించడానికి, మీరు సైన్ అవుట్ చేసి, ఆపై స్క్రీన్ దిగువున ఉన్న "గెస్ట్ లాగా బ్రౌజ్ చేయండి" ఆప్షన్‌ను ఎంచుకోవాలి. ఆన్‌లో ఉంది ఆఫ్ మీ లో మీ బ్లూటూత్ ఆఫ్ చేయబడి ఉన్నట్లుగా అనిపిస్తోంది. ఫోన్ హబ్‌ను ఉపయోగించడానికి దయచేసి బ్లూటూత్‌ను ఆన్ చేయండి. @@ -2123,7 +2123,7 @@ ఉపకరణపట్టీ ఏ నెట్‌వర్క్ లేదు కర్సర్ నుండి లైన్ ప్రారంభం వరకు ఉన్న టెక్స్ట్‌ను ఎంచుకోండి -పెరుగుదల +పెంచండి ఫోకస్ సెషన్‌ను ప్రారంభించండి టాస్క్‌ను ఎడిట్ చేయడం సాధ్యం కాలేదు. సూచించిన గ్రూప్‌తో కొనసాగించండి @@ -2158,7 +2158,7 @@ నిర్ధారించు క్రమపద్ధతిలో అమర్చే ఆప్షన్‌ను మూసివేయమని చూపే టోస్ట్ కు కనెక్ట్ చేయబడింది -పరికరాన్ని సెటప్ చేసిన తర్వాత యాక్టివేట్ చేయండి +డివైజ్‌ సెటప్ చేసి యాక్టివేట్ చేయి ప్రారంభిస్తోంది... రెండు సార్లు క్లిక్ చేయండి ప్రైవే. నెట్‌వర్క్ @@ -2225,7 +2225,7 @@ Recapకు స్వాగతం Music Premiumను పొందండి చివరి డెస్క్‌ను తీసివేయలేరు. -మీ తల్లి/తండ్రి ఈ పరికరాన్ని లాక్ చేసి ఉంచారు +మీ తల్లి/తండ్రి ఈ డివైజ్‌ను లాక్ చేసి ఉంచారు భాష మెనూను తెరవండి ప్రదర్శన సెట్టింగ్‌లను చూపు రికార్డింగ్ 3, 2, 1లో ప్రారంభమవుతోంది @@ -2329,7 +2329,7 @@ VPN సెట్టింగ్‌లను చూపుతుంది మీరు ఈ వీక్షణ నుండి ఎగ్జిట్ అయిన తర్వాత మీ యాప్ లేఅవుట్‌ను అనుకూలీకరించడం ప్రారంభించవచ్చు. బహుళ సైన్-ఇన్‌ను సెటప్ చేయలేరు -పరికరాన్ని స్లీప్ మోడ్‌లో ఉంచండి +డివైజ్‌ను స్లీప్ మోడ్‌లో ఉంచండి , ఇన్‌స్టాల్ చేయబడిన యాప్, బ్లాక్ చేయబడింది కు కనెక్ట్ చేయండి . @@ -2366,7 +2366,7 @@ YouTube Musicకు కనెక్ట్ చేయడం సాధ్యం కాలేదు మీ పరికరం కోసం ఫర్మ్‌వేర్ అప్‌డేట్‌లు అందుబాటులో ఉన్నాయి. రివ్యూ చేసి, అప్‌డేట్ చేయడానికి క్లిక్ చేయండి. శాశ్వతంగా తొలగించబడుతుంది -% బ్యాటరీ మిగిలి ఉంది ( సమయం మిగిలి ఉంది). మీ పరికరాన్ని పవర్‌కు కనెక్ట్ చేయండి. +% బ్యాటరీ మిగిలి ఉంది ( సమయం మిగిలి ఉంది). మీ డివైజ్‌ను పవర్‌కు కనెక్ట్ చేయండి. దిగువ పేజీకి వెళుతుంది (టైటిల్ లేదు) మూలాధారాన్ని మార్చు @@ -2397,7 +2397,7 @@ HSPA ఉపయోగిస్తోంది రద్దు చేయడానికి fn + క్విక్ ఇన్సర్ట్ లేదా Shift నొక్కండి. -నోటిఫికేషన్ చర్యను మేనేజ్ చేయడానికి గా పరికరాన్ని అన్‌లాక్ చేయండి +నోటిఫికేషన్ చర్యను మేనేజ్ చేయడానికి గా డివైజ్‌ను అన్‌లాక్ చేయండి మీరు మాట్లాడుతున్నారా? మీ మైక్ ఆఫ్‌లో ఉంది. మైక్‌ను ఎంచుకొని దానిని ఆన్ చేయండి. స్టోరేజ్‌ను మేనేజ్ చేయండి ఎమోజీలు, ఇంకా మరిన్ని @@ -2463,7 +2463,7 @@ వాల్‌పేపర్‌ను సెట్ చేయండి విండోను రికార్డ్ చేయడానికి enterను నొక్కండి: ఇమేజ్‌లు -మీ తల్లి/తండ్రి ఈ రోజుకి మీ పరికరాన్ని లాక్ చేసి ఉంచారు +మీ తల్లి/తండ్రి ఈ రోజుకి మీ డివైజ్‌ను లాక్ చేసి ఉంచారు ఖాతాను తీసివేయండి సైన్ అవుట్ చేయడానికి Control Shift Qను రెండుసార్లు నొక్కండి. కలర్ మార్పిడి కోసం మీరు కీబోర్డ్ షార్ట్‌కట్‌ను నొక్కారు. మీరు దాన్ని ఆన్ చేయాలనుకుంటున్నారా? @@ -2473,7 +2473,7 @@ ‌లింక్‌ను బుక్‌మార్క్‌ల బార్ వద్దకు లాగండి ఫీడ్‌బ్యాక్ పంపండి తిరస్కరించు -పరికరాన్ని షట్ డౌన్ చేయాలా? +డివైజ్‌ను షట్ డౌన్ చేయాలా? కోసం తగినంత స్పేస్ లేదు. స్పేస్‌ను ఖాళీ చేయండి. 30 నిమి గేమ్ డ్యాష్‌బోర్డ్ సెట్టింగ్‌లు diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_th.xtb chromium-146.0.7680.153/ash/strings/ash_strings_th.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_th.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_th.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1819,7 +1819,7 @@ เดสก์ 6 แอปของคุณ เชื่อมต่อ กับโทรศัพท์ -การลด +ลดลง ออกจากเซสชัน ดูงานทั้งหมดใน Google Tasks อนุญาตเพียง 6 เทมเพลต นำเทมเพลตออกเพื่อบันทึกเทมเพลตใหม่ @@ -2117,7 +2117,7 @@ แถบเครื่องมือ ไม่มีเครือข่าย เลือกข้อความจากเคอร์เซอร์ไปจนถึงต้นบรรทัด -การเพิ่ม +เพิ่มขึ้น เริ่มเซสชันโฟกัส แก้ไขงานไม่ได้ กลับมาใช้กลุ่มที่แนะนำ diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_vi.xtb chromium-146.0.7680.153/ash/strings/ash_strings_vi.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_vi.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_vi.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1824,7 +1824,7 @@ Không gian làm việc 6 Ứng dụng của bạn Kết nối với điện thoại của bạn -Giảm dần +Giảm Thoát khỏi phiên Xem tất cả việc cần làm trong Google Tasks Chỉ cho phép 6 mẫu. Hãy xoá một mẫu nếu bạn muốn lưu mẫu mới. @@ -2122,7 +2122,7 @@ Thanh công cụ Không có mạng nào Chọn văn bản từ vị trí con trỏ đến đầu dòng -Tăng dần +Tăng Bắt đầu phiên Tập trung Không chỉnh sửa được việc cần làm. Tiếp tục với nhóm được đề xuất diff -Nru chromium-146.0.7680.80/ash/strings/ash_strings_zh-TW.xtb chromium-146.0.7680.153/ash/strings/ash_strings_zh-TW.xtb --- chromium-146.0.7680.80/ash/strings/ash_strings_zh-TW.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/strings/ash_strings_zh-TW.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1820,7 +1820,7 @@ 桌面 6 你的應用程式 連結到你的手機 -減少 +遞減 結束工作階段 查看 Google Tasks 中的所有工作 最多只能保存 6 個範本。如要儲存新範本,請先移除現有範本。 @@ -2118,7 +2118,7 @@ 工具列 沒有網路 選取從游標到該行開頭之間的文字 -增加 +遞增 啟動專注模式 無法編輯工作。 繼續使用建議的群組 diff -Nru chromium-146.0.7680.80/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb chromium-146.0.7680.153/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb --- chromium-146.0.7680.80/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/webui/camera_app_ui/resources/strings/camera_strings_fa.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -109,7 +109,7 @@ اسکن سند حالت کارشناس خاموش -جدولی +شبکه‌ای روشن دورنمایی کردن موارد دیگر diff -Nru chromium-146.0.7680.80/ash/webui/settings/public/constants/routes.mojom chromium-146.0.7680.153/ash/webui/settings/public/constants/routes.mojom --- chromium-146.0.7680.80/ash/webui/settings/public/constants/routes.mojom 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/webui/settings/public/constants/routes.mojom 2026-03-17 19:56:22.000000000 +0000 @@ -126,8 +126,7 @@ kCrostiniManageSharedFolders = 801, kCrostiniUsbPreferences = 802, kCrostiniBackupAndRestore = 803, - // Note: Value 804 was for deprecated kCrostiniDevelopAndroidApps. - // Do not reuse. + kCrostiniDevelopAndroidApps = 804, kCrostiniPortForwarding = 805, // Note: Value 806 was for deprecated. Do not reuse. kBruschettaDetails = 850, @@ -280,6 +279,7 @@ const string kCrostiniManageSharedFoldersSubpagePath = "crostini/sharedPaths"; const string kCrostiniUsbPreferencesSubpagePath = "crostini/sharedUsbDevices"; const string kCrostiniBackupAndRestoreSubpagePath = "crostini/exportImport"; +const string kCrostiniDevelopAndroidAppsSubpagePath = "crostini/androidAdb"; const string kCrostiniPortForwardingSubpagePath = "crostini/portForwarding"; const string kBruschettaDetailsSubpagePath = "bruschetta/details"; const string kBruschettaUsbPreferencesSubpagePath = diff -Nru chromium-146.0.7680.80/ash/webui/settings/public/constants/setting.mojom chromium-146.0.7680.153/ash/webui/settings/public/constants/setting.mojom --- chromium-146.0.7680.80/ash/webui/settings/public/constants/setting.mojom 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/ash/webui/settings/public/constants/setting.mojom 2026-03-17 19:56:22.000000000 +0000 @@ -204,7 +204,7 @@ kUninstallCrostini = 801, kBackupLinuxAppsAndFiles = 802, kRestoreLinuxAppsAndFiles = 803, - // Note: Value 804 was for deprecated kCrostiniAdbDebugging. Do not reuse. + kCrostiniAdbDebugging = 804, kCrostiniDiskResize = 805, kCrostiniMicAccess = 806, // Note: Value 807 was deprecated. Do not reuse. diff -Nru chromium-146.0.7680.80/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.cc chromium-146.0.7680.153/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.cc --- chromium-146.0.7680.80/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.cc 2026-03-17 19:56:22.000000000 +0000 @@ -128,7 +128,8 @@ void SchedulerLoopQuarantineBranch::Configure( SchedulerLoopQuarantineRoot& root, const SchedulerLoopQuarantineConfig& config) { - PA_CHECK(pause_quarantine_ == 0); + // Note the Quarantine could be paused here because scoped-opt outs are not + // aware of the feature being enabled or disabled. PA_CHECK(allocator_root_ == &root.allocator_root_); if constexpr (kThreadBound) { PA_CHECK(tcache_->GetRoot() == &root.allocator_root_); diff -Nru chromium-146.0.7680.80/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.h chromium-146.0.7680.153/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.h --- chromium-146.0.7680.80/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine.h 2026-03-17 19:56:22.000000000 +0000 @@ -187,6 +187,8 @@ } }; + int PausedCountForTesting() { return pause_quarantine_; } + private: // `ToBeFreedArray` is used in `Quarantine` and // `PurgeInternalWithDefferedFree`. See the function comment about the diff -Nru chromium-146.0.7680.80/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.cc chromium-146.0.7680.153/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.cc --- chromium-146.0.7680.80/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.cc 2026-03-17 19:56:22.000000000 +0000 @@ -107,5 +107,13 @@ std::get<1>(branch_)->Purge(); } } + +int ScopedSchedulerLoopQuarantineBranchAccessorForTesting::PausedCount() { + if (branch_.index() == 0) { + return std::get<0>(branch_)->PausedCountForTesting(); + } else { + return std::get<1>(branch_)->PausedCountForTesting(); + } +} } // namespace internal } // namespace partition_alloc diff -Nru chromium-146.0.7680.80/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.h chromium-146.0.7680.153/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.h --- chromium-146.0.7680.80/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/base/allocator/partition_allocator/src/partition_alloc/scheduler_loop_quarantine_support.h 2026-03-17 19:56:22.000000000 +0000 @@ -128,6 +128,7 @@ bool IsQuarantined(void* object); size_t GetCapacityInBytes(); void Purge(); + int PausedCount(); private: std::variant #include #include +#include #include "base/auto_reset.h" #include "base/base_export.h" @@ -16,7 +17,6 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/memory/weak_ptr.h" -#include "base/types/is_instantiation.h" // OVERVIEW: // @@ -240,17 +240,14 @@ // Any null callbacks remaining in the list were canceled due to // Subscription destruction during iteration, and can safely be erased now. - const size_t erased_callbacks = - std::erase_if(callbacks_, [](const auto& cb) { return cb.is_null(); }); + const bool any_callbacks_erased = static_cast(this) + ->CleanUpNullCallbacksPostIteration(); - // Run |removal_callback_| if any callbacks were canceled. Note that we - // cannot simply compare list sizes before and after iterating, since - // notification may result in Add()ing new callbacks as well as canceling - // them. Also note that if this is a OnceCallbackList, the OnceCallbacks - // that were executed above have all been removed regardless of whether - // they're counted in |erased_callbacks_|. - if (removal_callback_ && - (erased_callbacks || is_instantiation)) { + // Run |removal_callback_| if any callbacks were canceled or executed. Note + // that simply comparing list sizes before and after iterating cannot be + // done, since notification may result in Add()ing new callbacks as well as + // canceling them. + if (removal_callback_ && any_callbacks_erased) { removal_callback_.Run(); // May delete |this|! } } @@ -264,21 +261,9 @@ private: // Cancels the callback pointed to by |it|, which is guaranteed to be valid. void CancelCallback(const typename Callbacks::iterator& it) { - if (static_cast(this)->CancelNullCallback(it)) { - return; - } - - if (iterating_) { - // Calling erase() here is unsafe, since the loop in Notify() may be - // referencing this same iterator, e.g. if adjacent callbacks' - // Subscriptions are both destroyed when the first one is Run(). Just - // reset the callback and let Notify() clean it up at the end. - it->Reset(); - } else { - callbacks_.erase(it); - if (removal_callback_) { - removal_callback_.Run(); // May delete |this|! - } + if (static_cast(this)->CancelCallback(it, iterating_) && + removal_callback_) { + removal_callback_.Run(); // May delete |this|! } } @@ -304,23 +289,71 @@ // Runs the current callback, which may cancel it or any other callbacks. template void RunCallback(typename Traits::Callbacks::iterator it, RunArgs&&... args) { - // OnceCallbacks still have Subscriptions with outstanding iterators; - // splice() removes them from |callbacks_| without invalidating those. - null_callbacks_.splice(null_callbacks_.end(), this->callbacks_, it); + // Do not splice here. Splicing during iteration breaks re-entrant Notify() + // by invalidating the outer loop's iterator. Splicing is deferred to + // CleanUpNullCallbacksPostIteration(), which is called when the outermost + // Notify() finishes. // NOTE: Intentionally does not call std::forward(args)...; see // comments in Notify(). std::move(*it).Run(args...); } - // If |it| refers to an already-canceled callback, does any necessary cleanup - // and returns true. Otherwise returns false. - bool CancelNullCallback(const typename Traits::Callbacks::iterator& it) { + // Called during subscription destruction to cancel the callback. Returns true + // if the callback was removed from the active list and the generic removal + // callback should be executed. Returns false if the callback was already + // executed, or if the erasure is deferred due to active iteration. + bool CancelCallback(const typename Traits::Callbacks::iterator& it, + bool is_iterating) { + if (is_iterating) { + // During iteration, nodes cannot be safely erased from |callbacks_| + // without invalidating iterators. They also cannot be spliced into + // |null_callbacks_| right now. Thus, the node is reset and tracked for + // erasure in CleanUpNullCallbacksPostIteration(). + it->Reset(); + pending_erasures_.push_back(it); + return false; + } + if (it->is_null()) { + // The callback already ran, so it's safely sitting in |null_callbacks_|. null_callbacks_.erase(it); - return true; + return false; } - return false; + + // The callback hasn't run yet, so it's still in |callbacks_|. + this->callbacks_.erase(it); + return true; + } + + // Performs post-iteration cleanup. Successfully executed callbacks (which + // become null) are spliced into |null_callbacks_| to keep their + // Subscriptions' iterators valid. Callbacks explicitly canceled during + // iteration (tracked in |pending_erasures_|) are erased. Returns true if any + // callbacks were erased or spliced out. + bool CleanUpNullCallbacksPostIteration() { + bool any_spliced = false; + for (auto it = this->callbacks_.begin(); it != this->callbacks_.end();) { + if (it->is_null()) { + any_spliced = true; + auto next = std::next(it); + null_callbacks_.splice(null_callbacks_.end(), this->callbacks_, it); + it = next; + } else { + ++it; + } + } + + bool any_erased = !pending_erasures_.empty(); + for (auto pending_it : pending_erasures_) { + // Note: `pending_it` was originally an iterator into `callbacks_`, but + // the node it points to has just been spliced into `null_callbacks_`. The + // iterator itself remains valid and can now be used for erasure from + // `null_callbacks_`. + null_callbacks_.erase(pending_it); + } + pending_erasures_.clear(); + return any_spliced || any_erased; } // Holds null callbacks whose Subscriptions are still alive, so the @@ -328,6 +361,11 @@ // OnceCallbacks, since RepeatingCallbacks are not canceled except by // Subscription destruction. typename Traits::Callbacks null_callbacks_; + + // Holds iterators for callbacks canceled during iteration. + // Erasure is deferred to CleanUpNullCallbacksPostIteration() when iteration + // completes to prevent invalidating iterators that an outer loop might hold. + std::vector pending_erasures_; }; template @@ -344,14 +382,29 @@ it->Run(args...); } - // If |it| refers to an already-canceled callback, does any necessary cleanup - // and returns true. Otherwise returns false. - bool CancelNullCallback(const typename Traits::Callbacks::iterator& it) { - // Because at most one Subscription can point to a given callback, and - // RepeatingCallbacks are only reset by CancelCallback(), no one should be - // able to request cancellation of a canceled RepeatingCallback. - DCHECK(!it->is_null()); - return false; + // Called during subscription destruction to cancel the callback. Returns true + // if the callback was removed from the active list and the generic removal + // callback should be executed. Returns false if the callback was already + // executed, or if the erasure is deferred due to active iteration. + bool CancelCallback(const typename Traits::Callbacks::iterator& it, + bool is_iterating) { + if (is_iterating) { + // During iteration, nodes cannot be safely erased from |callbacks_| + // without invalidating iterators. The node is reset and will be swept up + // by CleanUpNullCallbacksPostIteration(). + it->Reset(); + return false; + } + + this->callbacks_.erase(it); + return true; + } + + // Performs post-iteration cleanup by erasing all canceled callbacks. Returns + // true if any callbacks were erased. + bool CleanUpNullCallbacksPostIteration() { + return std::erase_if(this->callbacks_, + [](const auto& cb) { return cb.is_null(); }) > 0; } }; diff -Nru chromium-146.0.7680.80/base/callback_list_unittest.cc chromium-146.0.7680.153/base/callback_list_unittest.cc --- chromium-146.0.7680.80/base/callback_list_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/base/callback_list_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -10,6 +10,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/memory/raw_ptr.h" +#include "base/test/bind.h" #include "base/test/test_future.h" #include "testing/gtest/include/gtest/gtest.h" @@ -577,6 +578,30 @@ EXPECT_EQ(1, d.total()); } +// Regression test for crbug.com/489381399: Verifies Notify() can be called +// reentrantly for OnceCallbackList even if a callback is canceled during the +// reentrant notification. +TEST(CallbackListTest, OnceCallbackListCancelDuringReentrantNotify) { + OnceClosureList cb_reg; + CallbackListSubscription sub_a, sub_b; + + auto cb_a = base::BindLambdaForTesting([&]() { + // Re-entrant notification. + cb_reg.Notify(); + // After re-entrant notification returns, sub_b has been run. Destroying it + // now should be a no-op. + sub_b = {}; + }); + + auto cb_b = base::DoNothing(); + + sub_a = cb_reg.Add(std::move(cb_a)); + sub_b = cb_reg.Add(std::move(cb_b)); + + // This should not crash. + cb_reg.Notify(); +} + TEST(CallbackListTest, ClearPreventsInvocation) { Listener listener; RepeatingClosureList cb_reg; diff -Nru chromium-146.0.7680.80/build/util/LASTCHANGE chromium-146.0.7680.153/build/util/LASTCHANGE --- chromium-146.0.7680.80/build/util/LASTCHANGE 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/build/util/LASTCHANGE 2026-03-17 19:56:22.000000000 +0000 @@ -1,2 +1,2 @@ -LASTCHANGE=f08938029c887ea624da7a1717059788ed95034d-refs/branch-heads/7680_65@{#34} +LASTCHANGE=85fd829a1b2049479ead5ed578f5ed105a094fe4-refs/branch-heads/7680@{#2745} LASTCHANGE_YEAR=2026 diff -Nru chromium-146.0.7680.80/build/util/LASTCHANGE.committime chromium-146.0.7680.153/build/util/LASTCHANGE.committime --- chromium-146.0.7680.80/build/util/LASTCHANGE.committime 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/build/util/LASTCHANGE.committime 2026-03-17 19:56:22.000000000 +0000 @@ -1 +1 @@ -1773420843 \ No newline at end of file +1773777382 \ No newline at end of file diff -Nru chromium-146.0.7680.80/chrome/VERSION chromium-146.0.7680.153/chrome/VERSION --- chromium-146.0.7680.80/chrome/VERSION 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/VERSION 2026-03-17 19:56:22.000000000 +0000 @@ -1,4 +1,4 @@ MAJOR=146 MINOR=0 BUILD=7680 -PATCH=80 +PATCH=153 diff -Nru chromium-146.0.7680.80/chrome/app/profiles_strings.grdp chromium-146.0.7680.153/chrome/app/profiles_strings.grdp --- chromium-146.0.7680.80/chrome/app/profiles_strings.grdp 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/profiles_strings.grdp 2026-03-17 19:56:22.000000000 +0000 @@ -1377,4 +1377,7 @@ While you're signed in, you can use the bookmarks, extensions, and more saved in your Google Account on all your devices + + While you're signed in, you can use the themes, settings, and more saved in your Google Account on all your devices + diff -Nru chromium-146.0.7680.80/chrome/app/profiles_strings_grdp/IDS_SIGN_IN_BENEFITS_WITHOUT_BOOKMARKS_AND_EXTENSIONS_IPH_TEXT.png.sha1 chromium-146.0.7680.153/chrome/app/profiles_strings_grdp/IDS_SIGN_IN_BENEFITS_WITHOUT_BOOKMARKS_AND_EXTENSIONS_IPH_TEXT.png.sha1 --- chromium-146.0.7680.80/chrome/app/profiles_strings_grdp/IDS_SIGN_IN_BENEFITS_WITHOUT_BOOKMARKS_AND_EXTENSIONS_IPH_TEXT.png.sha1 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/profiles_strings_grdp/IDS_SIGN_IN_BENEFITS_WITHOUT_BOOKMARKS_AND_EXTENSIONS_IPH_TEXT.png.sha1 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1 @@ +e6cf91e77c5b2d3698528ab094b00ad3c366714e \ No newline at end of file diff -Nru chromium-146.0.7680.80/chrome/app/resources/chromium_strings_da.xtb chromium-146.0.7680.153/chrome/app/resources/chromium_strings_da.xtb --- chromium-146.0.7680.80/chrome/app/resources/chromium_strings_da.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/chromium_strings_da.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -728,7 +728,7 @@ Markér den tekst, du vil søge efter Hvis du vil have fremtidige Chromium-opdateringer, skal du have Windows 10 eller nyere. Denne computer anvender Windows 8.1. Åbn linket på en ny Chromium-&fane -Slet også dine browserdata? +Slet også dine browserdata Lektiehjælp Afslut Fortsæt, hvor du slap: Chromium kan gendanne dine faner, hver gang du genstarter. For at aktivere dette skal du gå til diff -Nru chromium-146.0.7680.80/chrome/app/resources/chromium_strings_it.xtb chromium-146.0.7680.153/chrome/app/resources/chromium_strings_it.xtb --- chromium-146.0.7680.80/chrome/app/resources/chromium_strings_it.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/chromium_strings_it.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -5,7 +5,7 @@ Riavvia per aggiornare &Chromium OS Chromium ti consiglia di esaminare questa estensione Quando un sito chiede di precaricare privatamente i link nella sua pagina, Chromium usa i server di Google. In questo modo la tua identità rimane nascosta al sito precaricato, ma Google impara quali siti vengono precaricati. -Aiutaci a migliorare la modalità di navigazione in incognito partecipando a questo sondaggio di 1 minuto. +Aiutaci a migliorare la modalità Incognito partecipando a questo sondaggio di 1 minuto. Impossibile leggere le preferenze. Alcune funzioni potrebbero non essere disponibili e le modifiche alle preferenze non verranno salvate. Uno dei tuoi genitori ha disattivato l'impostazione "Autorizzazioni per siti, app ed estensioni" per Chromium Chromium vuole esportare le password. Per consentire l'esportazione, digita la tua password Windows. @@ -49,7 +49,7 @@ Fissa Chromium Strumenti per la sicurezza di Chromium Chromium vuole eliminare i tuoi dati del Gestore delle password. Digita la tua password di Windows per consentire l'operazione. -{COUNT,plural, =0{L'amministratore richiede il riavvio di Chromium per installare un aggiornamento}=1{L'amministratore richiede il riavvio di Chromium per installare un aggiornamento. La finestra di navigazione in incognito non verrà riaperta.}other{L'amministratore richiede il riavvio di Chromium per installare un aggiornamento. Le # finestre di navigazione in incognito non verranno riaperte.}} +{COUNT,plural, =0{L'amministratore richiede il riavvio di Chromium per installare un aggiornamento}=1{L'amministratore richiede il riavvio di Chromium per installare un aggiornamento. La finestra Incognito non verrà riaperta.}other{L'amministratore richiede il riavvio di Chromium per installare un aggiornamento. Le # finestre Incognito non verranno riaperte.}} Esamina i controlli per la privacy e la sicurezza più importanti in Chromium Download in corso... Chiedi alla Ricerca immagini informazioni su questa pagina @@ -243,12 +243,12 @@ Impossibile eseguire la configurazione con privilegi elevati. Accedi a Chromium I dati di navigazione di questa persona verranno eliminati dal dispositivo. Per recuperare i dati, accedi a Chromium con il nome utente . -{COUNT,plural, =0{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio.}=1{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio. La finestra di navigazione in incognito non verrà riaperta.}other{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio. Le # finestre di navigazione in incognito non verranno riaperte.}} +{COUNT,plural, =0{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio.}=1{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio. La finestra Incognito non verrà riaperta.}other{È disponibile un nuovo aggiornamento di Chromium che verrà installato appena eseguirai il riavvio. Le # finestre Incognito non verranno riaperte.}} Per inviare un numero da al tuo telefono Android, accedi a Chromium su entrambi i dispositivi. Impossibile installare l'applicazione. Applicazione sconosciuta al server. Usa la tua passphrase per criptare tutti i dati di Chromium nel tuo Account Google. I metodi di pagamento e gli indirizzi memorizzati su Google Pay non verranno criptati. La cronologia di navigazione di Chromium non verrà sincronizzata. Chromium non può controllare le tue password. Prova a controllare la connessione a Internet. -{COUNT,plural, =0{L'amministratore richiede il riavvio di Chromium per installare questo aggiornamento}=1{L'amministratore richiede il riavvio di Chromium per installare questo aggiornamento. La finestra di navigazione in incognito non verrà riaperta.}other{L'amministratore richiede il riavvio di Chromium per installare questo aggiornamento. Le # finestre di navigazione in incognito non verranno riaperte.}} +{COUNT,plural, =0{L'amministratore richiede il riavvio di Chromium per installare questo aggiornamento}=1{L'amministratore richiede il riavvio di Chromium per installare questo aggiornamento. La finestra Incognito non verrà riaperta.}other{L'amministratore richiede il riavvio di Chromium per installare questo aggiornamento. Le # finestre Incognito non verranno riaperte.}} Apri link in una nuova &scheda di Chromium Collega Chromium e altri servizi Google per la personalizzazione e altri scopi Approfondisci la ricerca aggiungendo più schede, file e strumenti utilizzando il pulsante "Aggiungi una scheda e altro". @@ -291,7 +291,7 @@ {COUNT,plural, =1{La tua organizzazione chiude automaticamente Chromium quando non viene utilizzato per 1 minuto. I dati di navigazione vengono eliminati. Potrebbero essere inclusi cronologia, compilazione automatica e download.}other{La tua organizzazione chiude automaticamente Chromium quando non viene utilizzato per # minuti. I dati di navigazione vengono eliminati. Potrebbero essere inclusi cronologia, compilazione automatica e download.}} -Modalità di navigazione in incognito di Chromium +Modalità Incognito di Chromium Vai alla pagina Informazioni su Chromium Personalizza Chromium per dare un nuovo look al tuo browser Personalizza Chromium @@ -342,7 +342,7 @@ Versione di Chromium OS Aggiornamento quasi completato. Riavvia Chromium per terminare l'aggiornamento. Consente di accelerare i siti con il motore V8 di Chromium, ma rende Chromium leggermente meno resistente agli attacchi -Avviso: Chromium non è in grado di impedire alle estensioni di registrare la tua cronologia di navigazione. Per disattivare questa estensione in modalità di navigazione in incognito, deseleziona questa opzione. +Avviso: Chromium non è in grado di impedire alle estensioni di registrare la tua cronologia di navigazione. Per disattivare questa estensione in modalità Incognito, deseleziona questa opzione. Se condividi anche report sull'utilizzo di Chromium, questi report includono gli URL visitati Sembra che il profilo sia in uso in un altro processo Chromium () su un altro computer (). Chromium ha bloccato il profilo affinché non venga danneggiato. Se sei sicuro che nessun altro processo stia utilizzando questo profilo, puoi sbloccare il profilo e riavviare Chromium. Annulla l'installazione @@ -380,7 +380,7 @@ Riavvia Chromium per applicare le modifiche Rilevata Scarica l'app Chromium -Quando navighi in modalità di navigazione in incognito, Chromium ti avvisa prima di caricare un sito utilizzando una connessione non sicura +Quando navighi in modalità Incognito, Chromium ti avvisa prima di caricare un sito utilizzando una connessione non sicura Servizio interno di Chromium Updater Approfondisci la ricerca aggiungendo più schede, file e strumenti Chromium ha trovato alcuni consigli per la sicurezza da farti esaminare @@ -620,7 +620,7 @@ Esiste già un profilo Chromium con questo account su questo dispositivo L'installazione è terminata. Dovrai riavviare il computer per poter utilizzare . Personalizza Chromium per dargli un nuovo aspetto -Quando digiti nella barra degli indirizzi o nella casella di ricerca, Chromium invia ciò che digiti al tuo motore di ricerca predefinito per ricevere suggerimenti migliori. Questa opzione è disattivata nella modalità di navigazione in incognito. +Quando digiti nella barra degli indirizzi o nella casella di ricerca, Chromium invia ciò che digiti al tuo motore di ricerca predefinito per ricevere suggerimenti migliori. Questa opzione è disattivata nella modalità Incognito. Non è stato possibile aggiornare Chromium alla versione più recente, quindi non potrai utilizzare le nuove funzioni e gli aggiornamenti di sicurezza. Download in corso… Secondi rimanenti: Se dimentichi la passphrase o vuoi modificare questa impostazione, elimina i dati di Chromium nel tuo account diff -Nru chromium-146.0.7680.80/chrome/app/resources/chromium_strings_te.xtb chromium-146.0.7680.153/chrome/app/resources/chromium_strings_te.xtb --- chromium-146.0.7680.80/chrome/app/resources/chromium_strings_te.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/chromium_strings_te.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -133,7 +133,7 @@ యాప్‌లకు సంబంధించి బ్యాక్‌గ్రౌండ్‌లో రన్ అవుతున్న Chromiumను డిజేబుల్ చేయండి ‌గా ఈ ఎక్స్‌టెన్షన్‌ను ఉపయోగించడానికి, Chromiumకు సైన్ ఇన్ చేయండి. మీ ఖాతా సైన్ ఇన్ వివరాల గడువు ముగిసినందున ChromiumOS మీ డేటాను సింక్ చేయలేకపోయింది. -{NUM_DEVICES,plural, =0{ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌లు 1 HID పరికరాన్ని యాక్సెస్ చేస్తున్నాయి}=1{1 HID పరికరం ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌ల ద్వారా యాక్సెస్ చేయబడుతోంది}other{ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌లు # HID పరికరాలను యాక్సెస్ చేస్తున్నాయి}} +{NUM_DEVICES,plural, =0{ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌లు 1 HID డివైజ్‌ను యాక్సెస్ చేస్తున్నాయి}=1{1 HID డివైజ్ ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌ల ద్వారా యాక్సెస్ చేయబడుతోంది}other{ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌లు # HID డివైజ్‌లను యాక్సెస్ చేస్తున్నాయి}} ఈ సైట్ కోసం Chromiumకు కెమెరా, ఇంకా మైక్రోఫోన్ అనుమతులు అవసరం స్టార్టప్ ఎర్రర్: ప్రస్తుతం వేరొక సెటప్ రన్ అవుతోంది, దయచేసి తర్వాత మళ్లీ ట్రై చేయండి. ఏదైనా యాప్ నుండి Chromiumలో లింక్‌లను తెరవండి, మీ టాస్క్‌బార్‌లో బ్రౌజర్‌ను యాక్సెస్ చేయండి @@ -156,7 +156,7 @@ మీ ఖాతా ‌లో Chromium డేటాను ఉపయోగించింది, సేవ్ చేసింది మీరేనని వెరిఫై చేయండి {COUNT,plural, =0{అప్‌డేట్‌ను వర్తింపజేయడానికి మీరు Chromiumను రీ-లాంచ్ చేయాలని అడ్వాన్స్‌డ్ ప్రొటెక్షన్ కోరుతోంది}=1{అడ్వాన్స్‌డ్ ప్రొటెక్షన్ కోసం, మీరు అప్‌డేట్‌ను వర్తింపజేయడానికి Chromiumను రీ-లాంచ్ చేయాలి. మీ అజ్ఞాత విండో మళ్లీ తెరవబడదు.}other{అడ్వాన్స్‌డ్ ప్రొటెక్షన్ కోసం, మీరు అప్‌డేట్‌ను వర్తింపజేయడానికి Chromiumను రీ-లాంచ్ చేయాలి. మీ # అజ్ఞాత విండోలు మళ్లీ తెరవబడవు.}} ఇన‌స్ట‌లేష‌న్‌ సమయంలో ఆపరేటింగ్ సిస్టమ్ ఎర్ర‌ర్‌ ఏర్పడింది. దయచేసి Chromiumను మళ్లీ డౌన్‌లోడ్ చేయండి. -మీరు ఒక పరికరాన్ని షేర్ చేస్తే, ఫ్రెండ్స్, ఫ్యామిలీ విడివిడిగా బ్రౌజ్ చేయవచ్చు, Chromiumను వారికి నచ్చిన విధంగా సెటప్ చేసుకోవచ్చు +మీరు ఒక డివైజ్‌ను షేర్ చేస్తే, ఫ్రెండ్స్, ఫ్యామిలీ విడివిడిగా బ్రౌజ్ చేయవచ్చు, Chromiumను వారికి నచ్చిన విధంగా సెటప్ చేసుకోవచ్చు Chromium ట్యాబ్ అదనపు భద్రత కోసం, Chromium మీ డేటాను ఎన్‌క్రిప్ట్ చేస్తుంది. Chromium నుండి మీ Google ఖాతాను తీసివేయడానికి, సైన్ అవుట్ చేయండి @@ -195,7 +195,7 @@ ఫీడ్‌బ్యాక్ డైలాగ్‌ను మూసివేయండి ఇతర Chromium ప్రొఫైల్స్ Googleకు వినియోగ గణాంకాలు, ను పంపడం ద్వారా Chromiumను మెరుగుపరచడంలో సహాయపడండి -{NUM_DEVICES,plural, =0{ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌లు 1 USB పరికరాన్ని యాక్సెస్ చేస్తున్నాయి}=1{1 USB పరికరం ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌ల ద్వారా యాక్సెస్ చేయబడుతోంది}other{ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌లు # USB పరికరాలను యాక్సెస్ చేస్తున్నాయి}} +{NUM_DEVICES,plural, =0{ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌లు 1 USB డివైజ్‌ను యాక్సెస్ చేస్తున్నాయి}=1{1 USB డివైజ్ ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌ల ద్వారా యాక్సెస్ చేయబడుతోంది}other{ఒకటి లేదా అంతకంటే ఎక్కువ Chromium ఎక్స్‌టెన్షన్‌లు # USB డివైజ్‌లను యాక్సెస్ చేస్తున్నాయి}} Chromium హిస్టరీ ఇన్‌స్టాలర్ ఆర్కైవ్‌ను వాస్తవ పరిమాణానికి తీసుకుని రావడంలో విఫలమైంది. దయచేసి Chromiumను మళ్లీ డౌన్‌లోడ్ చేయండి. టాస్క్(లు) ముగించడంలో విఫలమైంది. @@ -313,7 +313,7 @@ డౌన్‌లోడ్ పూర్తయింది. Windows ప్రారంభమైనప్పుడు Chromiumను ప్రారంభించండి Chromiumను మీ ఆటోమేటిక్ బ్రౌజర్‌గా సెట్ చేయడం ద్వారా మీకు తెలిసిన, మీరు ఇష్టపడే, విశ్వసించే ఫీచర్‌లకు యాక్సెస్‌ను సులభంగా పొందండి. క్విక్ యాక్సెస్ కోసం Chromium మీ టాస్క్‌బార్‌కు పిన్ చేయబడుతుంది. -మీరు ఈ పరికరాన్ని ఉపయోగించడానికి ముందు సర్వీస్ నియమాలను చదివి, అంగీకరించాలని కోరుతోంది. ఈ నియమాలు ChromiumOS నియమాలను విస్తరింపజేయవు, సవరించవు లేదా పరిమితం చేయవు. +మీరు ఈ డివైజ్‌ను ఉపయోగించడానికి ముందు సర్వీస్ నియమాలను చదివి, అంగీకరించాలని కోరుతోంది. ఈ నియమాలు ChromiumOS నియమాలను విస్తరింపజేయవు, సవరించవు లేదా పరిమితం చేయవు. ఏదేమైనా Chromium నుండి నిష్క్రమించాలా? ఇమేజ్ సెర్చ్ షార్ట్‌కట్‌ను ఎల్లప్పుడూ చూపించండి బ్యాక్‌గ్రౌండ్‌లో అమలయ్యేందుకు Chromiumని అనుమతించండి diff -Nru chromium-146.0.7680.80/chrome/app/resources/chromium_strings_zh-CN.xtb chromium-146.0.7680.153/chrome/app/resources/chromium_strings_zh-CN.xtb --- chromium-146.0.7680.80/chrome/app/resources/chromium_strings_zh-CN.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/chromium_strings_zh-CN.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -367,7 +367,7 @@ 访客使用Chromium不会留下任何痕迹。 设置 Chromium 账号 将您自己添加到Chromium -Chromium 中的 Gemini 会使用自动浏览功能在标签页中运行,完成您交代的各种任务。了解详情 +Chromium 中的 Gemini 利用“自动浏览”功能在标签页中操作,完成您交代的各种任务。了解详情 Chromium 需要获得权限,才能跟踪您的手部动作 您近期未访问过该网站,因此 Chromium 撤消了该网站的权限、权限和权限。 您通常会屏蔽通知。要允许此网站向您发送通知,请点击位置栏右侧的通知图标。 diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_af.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_af.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_af.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_af.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ Prentlêers Verander kanaal en Kragwas Veiligblaai beskerm jou teen aanvallers wat jou dalk kan mislei om iets gevaarlik te doen, soos om kwaadwillige sagteware te installeer of jou persoonlike inligting, soos wagwoorde, foonnommers of kredietkaartinligting, bekend te maak. As jy dit afskakel, moet jy versigtig wees wanneer jy op onbekende of nie-fatsoenlike werwe blaai. +Terwyl jy aangemeld is, kan jy die temas, instellings en meer wat in jou Google-rekening gestoor is, op al jou toestelle gebruik Druk en hou om die sleutel outomaties te herhaal Kies watter weergawe van om te installeer Instelleer opdaterings en programme @@ -11455,7 +11456,7 @@ Ignoreer vinnig herhaalde drukke van dieselfde sleutel op die sleutelbord Dateer wagwoord op? is verwyder -Kom meer te wete. +Meer inligting. Kon jou nie aanmeld nie, probeer asseblief weer Hierdie gebruiker bestaan reeds Jou moet opgedateer word diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_am.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_am.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_am.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_am.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7964,6 +7964,7 @@ የምስል ፋይሎች ሰርጥ ቀይር እና Powerwash የጥንቃቄ አሰሳ እንደ ተንኮል-አዘል ሶፍትዌር መጫን ያለ አደገኛ ነገር እንዲያደርጉ ወይም እንደ የይለፍ ቃላት፣ ስልክ ቁጥሮች ወይም ክሬዲት ካርዶች ያለ የግል መረጃን እንዲገልጡ እርስዎን ሊያታልሉዎ ከሚችሉ አጥቂዎች ይጠብቀዎታል። ካጠፉት ያልተለመደ ወይም ስማቸው ጥሩ ያልሆኑ ጣቢያዎችን ሲያስሱ ይጠንቀቁ። +በመለያ ገብተው ሳለ በGoogle መለያዎ ውስጥ የተቀመጡ ገጽታዎችን፣ ቅንብሮችን እና ሌሎችንም በሁሉም መሣሪያዎችዎ ላይ መጠቀም ይችላሉ ቁልፉን በራስ-ሰር ለመድገም ተጭነው ይያዙ የትኛው የ ስሪት እንደሚጫን ይምረጡ። ዝማኔዎችን እና መተግበሪያዎችን ይጫኑ diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ar.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ar.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ar.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ar.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7960,6 +7960,7 @@ ملفات الصور ‏تغيير القناة وPowerwash يحميك "التصفُّح الآمن" من المهاجمين الذين قد يحاولون خداعك لاتّخاذ إجراءات خطيرة، مثل تثبيت البرامج الضارة أو الكشف عن معلومات شخصية، مثل كلمات المرور أو أرقام الهواتف أو بطاقات الائتمان. وفي حال إيقاف "التصفُّح الآمن"، ننصحك بتوخّي الحذر عند تصفُّح مواقع إلكترونية غير مألوفة أو غير آمنة. +‏بعد تسجيل الدخول إلى حسابك، يمكنك استخدام المظاهر والإعدادات وغيرها من البيانات المحفوظة في حسابك على Google على جميع أجهزتك الضغط مع الاستمرار لتكرار المفتاح تلقائيًا اختَر إصدار "" الذي تريد تثبيته. تثبيت التطبيقات والتحديثات diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_as.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_as.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_as.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_as.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7967,6 +7967,7 @@ প্ৰতিচ্ছবিৰ ফাইল চেনেল আৰু পাৱাৰৱাশ্ব সলনি কৰক সুৰক্ষিত ব্ৰাউজিঙে আপোনাক এনে আক্ৰমণকাৰীসকলৰ পৰা সুৰক্ষা প্ৰদান কৰে, যিসকলে আপোনাৰ দ্বাৰা কিছুমান বিপজ্জনক কাম কৰাবলৈ চেষ্টা কৰিব পাৰে, যেনে কোনো ছফ্টৱেৰ ইনষ্টল কৰোৱা অথবা আপোনাৰ ব্যক্তিগত তথ্য (উদাহৰণস্বৰূপে, পাছৱর্ড, ফ’ন নম্বৰ অথবা ক্ৰেডিট কার্ড) ফাদিল কৰা। আপুনি যদি এইটো বন্ধ কৰি ৰাখে তেন্তে আপুনি অচিনাকী অথবা অখ্যাত ছাইটসমূহ ব্ৰাউজ কৰাৰ সময়ত সাবধান হওক। +আপুনি ছাইন ইন হৈ থকাৰ সময়ত, আপুনি আপোনাৰ আটাইবোৰ ডিভাইচত আপোনাৰ Google একাউণ্টত ছেভ কৰি থোৱা থীম, ছেটিং আৰু বহুতো বস্তু ব্যৱহাৰ কৰিব পাৰে কীটো স্বয়ংক্ৰিয়ভাৱে পুনৰাবৃত্তি কৰিবলৈ টিপি হেঁচি ৰাখক ৰ কোনটো সংস্কৰণ ইনষ্টল কৰিব লাগে, সেয়া বাছনি কৰক। আপডে’ট আৰু এপ্‌সমূহ ইনষ্টল কৰক diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_az.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_az.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_az.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_az.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7956,6 +7956,7 @@ Təsvir Faylları Kanal və Zavod sıfırlamasını dəyişin Təhlükəsiz Baxış sizi zərərli proqram təminatı quraşdırmaq və ya parol, telefon nömrəsi, kredit kartı kimi şəxsi məlumatlarınızı aşkar etmək kimi təhlükəli əməliyyatlara sövq etmək üçün aldada biləcək hücumlardan qoruyur. Bu xüsusiyyəti söndürsəniz, tanış və ya məşhur olmayan saytlara baxarkən ehtiyatlı olun. +Daxil olduğunuz müddətdə Google Hesabınızda yadda saxlanılmış mövzular, ayarlar və digər məlumatları bütün cihazlarınızda istifadə edə bilərsiniz Düyməni avtomatik təkrarlamaq üçün basıb saxlayın Quraşdırılacaq versiyasını seçin. Güncəlləmə və Tətbiqləri Quraşdırın diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_be.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_be.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_be.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_be.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7955,6 +7955,7 @@ Файлы відарысаў Змяніць версію і прымяніць Powerwash Функцыя "Бяспечны прагляд" абараняе ад зламыснікаў, якія могуць падмануць вас і прымусіць да небяспечных дзеянняў – напрыклад, усталяваць шкоднае праграмнае забеспячэнне або выдаць асабістую інфармацыю (паролі, нумары тэлефонаў або даныя крэдытных картак і падобнае). Калі вы выключыце гэту функцыю, будзьце асабліва ўважлівымі пры наведванні незнаёмых сайтаў і сайтаў з няпэўнай рэпутацыяй. +Пакуль выкананы ўваход, вы можаце выкарыстоўваць на ўсіх сваіх прыладах тэмы, налады і іншыя даныя, захаваныя ва Уліковым запісе Google Націсніце і ўтрымлівайце клавішу, каб аўтаматычна паўтарыць сімвал Выберыце версію , якую трэба ўсталяваць. Усталяванне абнаўленняў і праграм diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_bg.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_bg.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_bg.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_bg.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7968,6 +7968,7 @@ Графични файлове Промяна на канала и Powerwash Функцията „Безопасно сърфиране“ ви защитава от хакери, които могат да ви подведат да направите нещо опасно, като например да инсталирате софтуер или да разкриете лична информация (напр. пароли, телефонни номера или кредитни карти). Ако я изключите, внимавайте, когато посещавате непознати или ненадеждни сайтове. +Докато сте в профила си, можете да използвате темите, настройките и други неща, запазени в профила ви в Google, на всичките си устройства Натиснете и задръжте за автоматично повтаряне на клавиша Изберете коя версия на да инсталирате. Инсталиране на актуализации и приложения diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_bn.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_bn.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_bn.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_bn.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7972,6 +7972,7 @@ ছবি ফাইল চ্যানেল পরিবর্তন করুন এবং পাওয়ারওয়াশ করুন আক্রমণকারীরা হয়ত ক্ষতিকারক সফ্টওয়্যার ইনস্টল করা অথবা পাসওয়ার্ড, ফোন নম্বর বা ক্রেডিট কার্ডের মতো ব্যক্তিগত তথ্য প্রকাশ করার জন্য কৌশলে প্রতারণা করতে পারে। তার হাত থেকে Safe Browsing আপনাকে সুরক্ষিত রাখে। এটি বন্ধ করে রাখলে, অজানা বা পরিচিত নয় এমন সাইট ব্রাউজ করার সময়ে সতর্ক থাকুন। +সাইন-ইন করে থাকলে, আপনার সব ডিভাইসের Google অ্যাকাউন্টে সেভ থাকা থিম, সেটিংস এবং আরও অনেক কিছু ব্যবহার করতে পারবেন 'কী' অটোমেটিক রিপিট করতে প্রেস করে ধরে রাখুন -এর কোন ভার্সন ইনস্টল করতে হবে তা বেছে নিন। অ্যাপ ও আপডেটগুলি ইনস্টল করুন diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_bs.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_bs.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_bs.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_bs.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7969,6 +7969,7 @@ Fajlovi slike Promijeni kanal i pokreni Powerwash Sigurno pregledanje vas štiti od napadača koji vas mogu prevarom navesti da uradite nešto opasno, naprimjer, da instalirate zlonamjerni softver ili otkrijete lične informacije kao što su lozinke i brojevi telefona ili kreditne kartice. Ako ga isključite, budite oprezni prilikom pregledanja nepoznatih ili sumnjivih web lokacija. +Dok ste prijavljeni, na svim svojim uređajima možete koristiti teme, postavke i druge stavke sačuvane na Google računu Automatsko ponavljanje tipke pritiskom i zadržavanjem Odaberite verziju aplikacije koju ćete instalirati. Instaliranje ažuriranja i aplikacija diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ca.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ca.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ca.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ca.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7874,7 +7874,7 @@ Proporciona una descripció clara del problema i els passos per reproduir-lo (si és possible) Idiomes de les aplicacions Corba el·líptica secp256r1 d'SECG (també coneguda com a X9.62 prime256v1 d'ANSI o NIST P-256) -Vull assumir el control de la tasca +Pren el control de la tasca Mantén el dispositiu activat Serè Només els usuaris que sàpiguen la teva frase de contrasenya poden llegir les dades que encriptis. La frase de contrasenya no s'envia a Google, ni Google l'emmagatzema. Si l'oblides o vols canviar aquesta configuració, hauràs de restablir la sincronització. @@ -7951,6 +7951,7 @@ Fitxers d'imatge Canvia el canal i fes Powerwash Navegació segura et protegeix contra els atacants que et poden enganyar perquè facis alguna acció perillosa, com ara instal·lar programari maliciós o revelar informació personal (per exemple, contrasenyes, números de telèfon o targetes de crèdit). Si la desactives, ves amb compte quan naveguis per llocs web desconeguts o amb mala reputació. +Mentre tinguis la sessió iniciada, podràs utilitzar els temes, la configuració i altres elements desats al teu Compte de Google en tots els teus dispositius Mantén premuda la tecla perquè es repeteixi automàticament Selecciona quina versió de vols instal·lar. Instal·la actualitzacions i aplicacions diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_cs.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_cs.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_cs.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_cs.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7951,6 +7951,7 @@ Obrázkové soubory Změnit kanál a použít funkci Powerwash Bezpečné prohlížení vás chrání před útočníky, kteří se vás snaží přimět k nebezpečné akci, jako je instalace škodlivého softwaru nebo vyzrazení osobních údajů (například hesel, telefonních čísel nebo platebních karet). Pokud ji vypnete, budete si muset dávat pozor na neznámé a podezřelé weby. +Když jste přihlášeni, můžete motivy, nastavení a další položky uložené v účtu Google používat na všech svých zařízeních Při podržení klávesy automaticky opakovat Vyberte verzi virtuálního počítače , kterou chcete nainstalovat. Instalace aktualizací a aplikací diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_cy.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_cy.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_cy.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_cy.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7973,6 +7973,7 @@ Ffeiliau llun Newid sianel a defnyddio Powerwash Mae Pori'n Ddiogel yn eich amddiffyn rhag ymosodwyr a allai eich twyllo i wneud rhywbeth peryglus fel gosod meddalwedd maleisus neu ddatgelu gwybodaeth bersonol fel cyfrineiriau, rhifau ffôn neu gardiau credyd. Os byddwch yn ei ddiffodd, byddwch yn ofalus wrth bori gwefannau anghyfarwydd neu annibynadwy. +Tra byddwch wedi mewngofnodi, gallwch ddefnyddio'r themau, y gosodiadau, a rhagor sydd wedi'u cadw yn eich Cyfrif Google ar eich holl ddyfeisiau Pwyswch a daliwch i ailadrodd y fysell yn awtomatig Dewiswch pa fersiwn o i'w gosod. Gosod Diweddariadau ac Apiau diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_da.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_da.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_da.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_da.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -4856,7 +4856,7 @@ Find flere apps til styluspenne Yderligere kommentarer: Der er ikke tilsluttet noget kamera -Batterisparefunktion +Batterispare­funktion Venter på netværksforbindelse... Denne sides adgang til dit kamera og din mikrofon er blevet blokeret. Apps, der styrer et website, kan kun downloades fra det pågældende website @@ -7972,6 +7972,7 @@ Billedfiler Skift kanal og powerwash Beskyttet browsing beskytter dig mod hackere, som kan narre dig til at gøre uhensigtsmæssige ting, f.eks. at installere skadelig software eller afsløre personlige oplysninger som adgangskoder, telefonnumre eller kreditkortnumre. Hvis du deaktivere funktionen, skal du være ekstra forsigtig, når du besøger websites, du ikke kender eller har tillid til. +Når du er logget ind, kan du bruge de temaer, indstillinger m.m., der er gemt på din Google-konto, på alle dine enheder Hold fingeren nede for automatisk at gentage tasten Vælg, hvilken version af du vil installere. Installer opdateringer og apps @@ -10684,7 +10685,7 @@ Få adgang til din mikrofon og analysere din tale Tip til Chrome OEM-mappe -Batterisparefunktion +Batterispare­funktion Der er ikke mere lagerplads Opdater nu Parrer med diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_de.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_de.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_de.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_de.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1703,7 +1703,7 @@ &Fortsetzen Du hast eine ungültige Passphrase eingegeben Keine Benachrichtigungen von zulassen -Schaltfläche zum Einrichten +Button zum Einrichten Akkuzustand Link öffnen als Erstelle eine 6‑stellige Wiederherstellungs‑PIN für den Google Passwortmanager, PIN‑Ziffer  von 6 @@ -3546,7 +3546,7 @@ Chrome-Dokumentenanalyse PC verwendet eine kabelgebundene Verbindung für den Internetzugriff und Übertragungsgerät ist mit WLAN verbunden Darf Kennungen verwenden, um geschützte Inhalte wiederzugeben -Wenn du auf die Schaltfläche „Akzeptieren und fortfahren“ klickst, willigst du damit in die oben für diese Google-Dienste beschriebene Verarbeitung deiner Daten ein. +Wenn du auf den Button „Akzeptieren und fortfahren“ klickst, willigst du damit in die oben für diese Google-Dienste beschriebene Verarbeitung deiner Daten ein. Hängenbleiben Benachrichtigungen werden deaktiviert x ( Hertz) – Zeilensprung @@ -7947,6 +7947,7 @@ Bilddateien Kanaländerung und Powerwash Safe Browsing schützt dich gegen Angreifer, die dich dazu verleiten möchten, Risiken einzugehen, wie z. B. schädliche Software zu installieren oder personenbezogene Daten wie Passwörter, Telefonnummern oder Kreditkartendaten preiszugeben. Wenn du Safe Browsing deaktivierst, sei besonders vorsichtig, wenn du auf unbekannten oder zweifelhaften Websites surfst. +Solange du angemeldet bist, kannst du die in deinem Google-Konto gespeicherten Designs, Einstellungen und weitere Daten auf allen deinen Geräten verwenden Gedrückt halten, um den Tastendruck automatisch zu wiederholen Leg fest, welche Version von installiert werden soll. Updates und Apps installieren diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_el.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_el.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_el.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_el.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ Αρχεία εικόνας Αλλαγή καναλιού και Powerwash Η Ασφαλής περιήγηση σάς προστατεύει από υπευθύνους επίθεσης που μπορεί να σας εξαπατήσουν να κάνετε κάτι επικίνδυνο, όπως εγκατάσταση κακόβουλου λογισμικού ή αποκάλυψη προσωπικών στοιχείων όπως κωδικούς πρόσβασης, αριθμούς τηλεφώνου ή στοιχεία πιστωτικών καρτών. Εάν την απενεργοποιήσετε, να είστε προσεκτικοί κατά την περιήγηση σε άγνωστους ή μη αξιόπιστους ιστοτόπους. +Ενώ είστε συνδεδεμένοι, μπορείτε να χρησιμοποιήσετε τα θέματα, τις ρυθμίσεις και πολλά άλλα που είναι αποθηκευμένα στον Λογαριασμό σας Google σε όλες τις συσκευές σας Παρατεταμένο πάτημα για αυτόματη επανάληψη του πλήκτρου Επιλέξτε ποια έκδοση του θα εγκαταστήσετε. Εγκατάσταση ενημερώσεων και εφαρμογών diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_en-GB.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_en-GB.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_en-GB.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_en-GB.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7970,6 +7970,7 @@ Image Files Change channel and Powerwash Safe Browsing protects you against attackers who may trick you into doing something dangerous, like installing malicious software or revealing personal information such as passwords, phone numbers or credit cards. If you turn it off, be careful when browsing unfamiliar or unreputable sites. +While you're signed in, you can use the themes, settings and more saved in your Google Account on all your devices Press and hold to automatically repeat the key Select which version of to install. Install updates and apps diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_es-419.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_es-419.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_es-419.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_es-419.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7954,6 +7954,7 @@ Archivos de imagen Cambiar canal y Powerwash La Navegación segura te protege de los atacantes que pueden engañarte para que hagas algo peligroso, como instalar software o divulgar información personal (p. ej., contraseñas, números de teléfono o tarjetas de crédito). Si la desactivas, ten cuidado cuando navegues en sitios desconocidos o sospechosos. +Una vez que hayas accedido, puedes usar los temas, parámetros de configuración y otros elementos guardados en tu Cuenta de Google en todos tus dispositivos Mantener presionado para repetir automáticamente la tecla Selecciona qué versión de quieres instalar. Instalar actualizaciones y apps diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_es.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_es.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_es.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_es.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -4115,7 +4115,7 @@ Herramientas de búsqueda No se ha encontrado ningún sitio web Enfocar grupo -Descargando secuencia de comandos proxy... +Descargando script proxy... Nota: Mes de Para eliminar los datos de navegación de todos tus dispositivos sincronizados y de tu cuenta de Google, introduce tu frase de contraseña. @@ -7955,6 +7955,7 @@ Archivos de imagen Cambiar canal y Powerwash La función Navegación segura te protege frente a atacantes que pueden intentar engañarte para que realices alguna acción peligrosa, como instalar malware o revelar información personal, incluidas contraseñas, números de teléfono o tarjetas de crédito. Si desactivas esta función, debes tener cuidado al navegar por sitios desconocidos o que no sean de confianza. +Mientras tengas la sesión iniciada, puedes usar los temas, los ajustes y más cosas que hayas guardado en tu cuenta de Google en todos tus dispositivos Mantener pulsada una tecla para repetirla automáticamente Selecciona la versión de que quieres instalar. Instalar actualizaciones y aplicaciones @@ -8076,7 +8077,7 @@ Cambia el tamaño de la pantalla para ampliar o reducir el tamaño de los elementos que aparecen Desplazamiento inverso del ratón &Todos tus idiomas -Resolviendo host de la secuencia de comandos de proxy... +Resolviendo host del script de proxy... Reducir umbral Más visitado Botón izquierdo diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_et.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_et.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_et.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_et.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7961,6 +7961,7 @@ Pildifailid Muuda kanalit ja aktiveeri Powerwash Google'i ohutu sirvimine kaitseb teid ründajate eest, kes võivad teid meelitada ohtlikele tegevustele, nagu pahatahtliku tarkvara installimine või isiklike andmete (nt paroolid, telefoninumbrid või krediitkaarditeave) avaldamine. Kui lülitate selle välja, olge võõraste või halva mainega saitide külastamisel ettevaatlik. +Kui olete sisse logitud, saate kasutada oma Google’i kontole salvestatud teemasid, seadeid ja muid üksusi kõikides oma seadmetes. Klahvi automaatselt kordamiseks pikalt vajutamine Valige, milline VM-i versioon installida. Värskenduste ja rakenduste installimine diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_eu.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_eu.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_eu.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_eu.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1676,7 +1676,7 @@ &Kargatu markoa berriro Ez da sartu SIM txartelik Ez eman gailuko beste aplikazio eta zerbitzu batzuk erabiltzeko baimena webguneei -Webguneak Bluetooth bidezko gailuetara konektatu ohi dira kontsumo txikiko kokapen-adierazle bat, osasunaren edo fitnessaren jarraipen-gailu bat, edo bonbilla adimendun bat konfiguratzeko edo sinkronizatzeko, eta antzeko eginbideak eskaintzeko +Webguneak Bluetooth bidezko gailuetara konektatu ohi dira kontsumo txikiko kokapen-adierazle bat, osasunaren edo fitnessaren jarraipen-tresna bat, edo bonbilla adimendun bat konfiguratzeko edo sinkronizatzeko, eta antzeko eginbideak eskaintzeko Hurrengo diapositiba Segurtasun-eguneratze hedatuak berretsi nahi dituzu? Konpondu @@ -2823,7 +2823,7 @@ Webgune-bilaketa Zure gainerako kontuak ere gehi ditzakezu webgune eta aplikazioak atzitu ahal izateko. Gehitu sare mugikorra… -Atzitu Universal 2nd Factor gailuak +Atzitu 2 faktoreko autentifikazio unibertsaleko gailuak Luzapena sakatzen duzunean Omaha protokoloaren erantzuna berrabiarazi eta berrezarri egingo da @@ -7950,6 +7950,7 @@ Irudi-fitxategiak Aldatu kanala eta berrezarri fabrikako ezarpenak Powerwash bidez Arakatze seguruaren helburua zu balizko erasotzaileen aurrean babestea da, litekeena baita halakoek, azpikeriaz, zu zerbait arriskutsua egitera bultzatzea; esate baterako, software gaiztoa instalatu edo informazio pertsonala ezagutzera eman (adibidez, pasahitzak, telefono-zenbakiak edo kreditu-txartelak). Arakatze segurua desaktibatuz gero, tentuz ibili ezagunak edo izen onekoak ez diren webguneak arakatzean. +Saioa hasita daukazunean, Google-ko kontuan gordetako gaiak, ezarpenak eta abar gailu guztietan erabil ditzakezu Tekla automatikoki errepikatzeko, eduki sakatuta Hautatu zerbitzuaren zein bertsio instalatu nahi duzun. Instalatu eguneratzeak eta aplikazioak @@ -8751,7 +8752,7 @@ Linux eguneratu egin behar da Ezin izan dira deskargatu hizketa-fitxategiak (). Geroago saiatuko da deskargatzen berriro. Hizketa Google-ra bidaltzen da prozesatzeko, deskarga amaitu arte. gailuan gordeta zeuden erabiltzaile guztien fitxategi eta gailuko datu guztiak betiko ezabatu dira. -Webguneek Bluetooth bidezko gailuak bilatu ohi dituzte, kontsumo txikiko kokapen-adierazle bat, osasunaren edo fitnessaren jarraipena egiteko gailu bat, edo bonbilla adimendun bat konfiguratzeko edo sinkronizatzeko, eta antzeko eginbideak eskaintzeko +Webguneek Bluetooth bidezko gailuak bilatu ohi dituzte, kontsumo txikiko kokapen-adierazle bat, osasunaren edo fitnessaren jarraipen-tresna bat, edo bonbilla adimendun bat konfiguratzeko edo sinkronizatzeko, eta antzeko eginbideak eskaintzeko Ez da hauteman Testu-kurtsorea nabarmentzeko eginbidea gauza gehiago egiten laguntzen dizuten Chrome-rako gehigarriak dira diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_fa.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_fa.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_fa.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_fa.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -5528,7 +5528,7 @@ تصاویر و فایل‌های ذخیره‌شده در حافظه نهان (اجرای خودکار) خط ساحلی -ورود ولی به سیستم +وارد شدن ولی به سیستم دیروز مشاهده شده رو وارونگی رنگ @@ -7967,6 +7967,7 @@ فایل‌های تصویری تغییر کانال و پاکسازی «مرور ایمن» از شما دربرابر مهاجمانی محافظت می‌کند که ممکن است فریبتان دهند تا کارهای خطرناکی انجام دهید؛ ازجمله نصب نرم‌افزار مخرب یا افشای اطلاعات شخصی مثل گذرواژه‌ها، شماره‌های تماس، یا کارت‌های اعتباری. اگر «مرور ایمن» را خاموش می‌کنید، هنگام مرور کردن در سایت‌های ناآشنا یا نامعتبر احتیاط کنید. +‏اکنون که به سیستم وارد شده‌اید، می‌توانید از زمینه‌ها، تنظیمات و سایر موارد ذخیره‌شده در «حساب Google» خود در تمامی دستگاه‌هایتان استفاده کنید برای تکرار خودکار کلید، آن کلید فشرده و نگه داشته شود انتخاب کنید کدام نسخه نصب شود. نصب به‌روزرسانی‌ها و برنامه‌ها diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_fi.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_fi.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_fi.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_fi.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7966,6 +7966,7 @@ Kuvatiedostot Vaihda kanavaa ja tee Powerwash Selaussuoja parantaa suojaustasi, jos hyökkääjä yrittää huijata sinua tekemään jotain vaarallista, kuten asentamaan haittaohjelmia tai paljastamaan henkilötietoja (esimerkiksi salasanoja, puhelinnumeroita tai credit-kortin tietoja). Jos laitat sen pois päältä, ole varovainen tuntemattomilla tai huonomaineisilla sivustoilla. +Kun olet kirjautunut sisään, voit käyttää esimerkiksi Google-tilille tallennettuja teemoja ja asetuksia kaikilla laitteillasi Toista näppäin automaattisesti painamalla pitkään Valitse asennettava versio (). Päivitysten ja sovellusten asentaminen diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_fil.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_fil.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_fil.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_fil.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ Mga File ng Larawan Baguhin ang channel at Powerwash Pinoprotektahan ka ng Ligtas na Pag-browse laban sa mga attacker na posibleng manlinlang sa iyong gumawa ng anumang mapanganib na bagay tulad ng pag-install ng nakakapinsalang software o paghahayag ng personal na impormasyon tulad ng mga password, numero ng telepono, o credit card. Kung io-off mo ito, maging maingat kapag nagba-browse sa mga hindi pamilyar o hindi mapagkakatiwalaang site. +Habang naka-sign in ka, magagamit mo ang mga tema, setting, at higit pang naka-save sa iyong Google Account sa lahat ng device mo Pindutin nang matagal para awtomatikong ulitin ang key Piliin kung aling bersyon ng ang ii-install. Mag-install ng Mga Update at App diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_fr-CA.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_fr-CA.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_fr-CA.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_fr-CA.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7958,6 +7958,7 @@ Fichiers image Changement de version et réinitialisation « Powerwash » La navigation sécurisée vous protège contre les pirates qui pourraient vous inciter à faire quelque chose de dangereux comme installer un logiciel malveillant ou révéler vos renseignements personnels (par exemple, des mots de passe, des numéros de téléphone ou des numéros de carte de crédit). Si vous la désactivez, faites attention lorsque vous naviguez sur des sites inconnus ou de mauvaise réputation. +Pendant votre connexion, vous pouvez utiliser des éléments enregistrés dans votre compte Google, comme les thèmes, les paramètres et plus encore, sur tous vos appareils Appuyez et maintenez le doigt sur la touche pour la répéter automatiquement Sélectionnez la version de à installer. Installer les mises à jour et les applications diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_fr.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_fr.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_fr.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_fr.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -2835,7 +2835,7 @@ L'opération peut prendre jusqu'à 30 minutes. et  autres -Discutez avec Gemini dans Chrome pour obtenir des réponses, les points principaux et plus encore pendant que vous naviguez +Discutez avec Gemini dans Chrome pour obtenir des réponses, identifier les points principaux et plus pendant que vous naviguez Aucun problème détecté Ouvrir le lien avec... Aucun site disponible actuellement. Accédez à un site pour l'ajouter à cette liste. @@ -7955,6 +7955,7 @@ Fichiers image Changer de version et Powerwash La fonctionnalité Navigation sécurisée vous protège contre les pirates informatiques qui pourraient vous inciter à effectuer des opérations dangereuses, comme installer des logiciels malveillants ou divulguer des informations personnelles (mots de passe, numéros de téléphone ou numéros de carte de crédit, par exemple). Si vous la désactivez, faites preuve de vigilance lorsque vous consultez des sites Web inconnus ou peu fiables. +Lorsque vous êtes connecté, vous pouvez utiliser les thèmes, les paramètres et d'autres éléments enregistrés dans votre compte Google sur tous vos appareils Appuyer de manière prolongée pour répéter automatiquement la touche Sélectionnez la version de à installer. Installer des mises à jour et des applications diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_gl.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_gl.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_gl.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_gl.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7956,6 +7956,7 @@ Ficheiros de imaxe Cambiar canle e Powerwash A función Navegación segura protéxete contra os piratas informáticos que poden enganarte para que realices accións perigosas, como instalar un software malicioso ou revelar información persoal (por exemplo, contrasinais, números de teléfono ou tarxetas de crédito). Se a desactivas, ten coidado ao consultar sitios descoñecidos ou con mala reputación. +Mentres teñas a sesión iniciada, poderás usar os temas e as opcións de configuración, ademais doutros datos gardados na túa Conta de Google, en todos os teus dispositivos Manter premida unha tecla para que se repita automaticamente Selecciona que versión de queres instalar. Instalar actualizacións e aplicacións diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_gu.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_gu.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_gu.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_gu.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7958,6 +7958,7 @@ છબી ફાઇલો ચેનલ બદલો અને Powerwash કરો Safe Browsing એવા હુમલાખોરોથી તમારું રક્ષણ કરી શકે છે જે તમને દુર્ભાવનાપૂર્ણ સૉફ્ટવેર ઇન્સ્ટૉલ કરવા અથવા પાસવર્ડ, ફોન નંબર અથવા ક્રેડિટ કાર્ડ જેવી વ્યક્તિગત માહિતી જાહેર કરવા જેવી જોખમી બાબતો કરવા ગેરમાર્ગે દોરી શકે છે. જો તમે આ બંધ કરો, તો અજાણી અથવા ભરોસાપાત્ર ન હોય એવી સાઇટ બ્રાઉઝ કરતી વખતે સાવધાન રહેજો. +જ્યારે તમે સાઇન ઇન કરેલું હોય, ત્યારે તમે તમારા બધા ડિવાઇસ પર તમારા Google એકાઉન્ટમાં સાચવેલી થીમ, સેટિંગ અને બીજી ઘણી બાબતોનો ઉપયોગ કરી શકો છો કીને ઑટોમેટિક રીતે રિપીટ કરવા માટે દબાવી રાખો નું કયું વર્ઝન ઇન્સ્ટૉલ કરવું છે તે પસંદ કરો. અપડેટ અને ઍપ ઇન્સ્ટૉલ કરો diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_hi.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_hi.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_hi.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_hi.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7968,6 +7968,7 @@ इमेज फ़ाइल चैनल बदलें और पावरवॉश करें सुरक्षित ब्राउज़िंग की सुविधा आपको ऐसे हमलावरों से बचाती है जो धोखे से आपसे नुकसान पहुंचाने वाले सॉफ़्टवेयर इंस्टॉल करा सकते हैं या फिर आपकी व्यक्तिगत जानकारी चुरा सकते हैं जैसे कि पासवर्ड, फ़ोन नंबर या क्रेडिट कार्ड की जानकारी. अगर आप इस सुविधा को बंद करते हैं, तो ऐसी साइटें ब्राउज़ करते समय सावधान रहें जिनसे आप अनजान हैं या जो जानी-मानी नहीं हैं. +साइन इन होने के दौरान, अपने सभी डिवाइसों पर Google खाते में सेव की गई थीम, सेटिंग वगैरह इस्तेमाल की जा सकती हैं किसी बटन के वर्ण को अपने-आप दोहराने के लिए, उसे दबाकर रखें चुनें कि का कौनसा वर्शन इंस्टॉल करना है. अपडेट और ऐप्लिकेशन इंस्टॉल करें diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_hr.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_hr.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_hr.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_hr.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7954,6 +7954,7 @@ Slikovne datoteke Promijeni kanal i pokreni Powerwash Sigurno pregledavanje štiti vas od napadača koji vas mogu na prijevaru pokušati navesti da napravite nešto opasno kao što je instaliranje zlonamjernog softvera ili otkrivanje osobnih podataka kao što su zaporke, telefonski brojevi ili kreditne kartice. Ako ga isključite, pripazite kada pregledavate nepoznate ili nepouzdane web-lokacije. +Dok ste prijavljeni, možete upotrebljavati teme, postavke i druge podatke spremljene na vašem Google računu na svim svojim uređajima Pritisnite i zadržite za automatsko ponavljanje tipke Odaberite verziju VM-a koju želite instalirati. Instaliranje ažuriranja i aplikacija @@ -11007,7 +11008,7 @@ {COUNT,plural, =0{Vaše su zaporke jedinstvene}=1{{COUNT} višestruko korištena zaporka}one{{COUNT} višestruko korištena zaporka}few{{COUNT} višestruko korištene zaporke}other{{COUNT} višestruko korištenih zaporki}} s hardverskom podlogom Izgovori tekst ispod pokazivača miša -Adrese i više +Adrese i drugo Pregledajte na različitim uređajima Dopusti obavijesti Pomaže vam da usporedno vidite slične proizvode i jednostavno usporedite pojedinosti koje su vam važne diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_hu.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_hu.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_hu.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_hu.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7969,6 +7969,7 @@ Képfájlok Csatorna módosítása és Powerwash A Biztonságos Böngészés megvédi azoktól a támadóktól, akik megpróbálják csellel rávenni Önt valamilyen kockázatos dologra, például arra, hogy rosszindulatú szoftvert telepítsen, vagy felfedje személyes adatait (jelszavakat, telefonszámokat, bankkártyaadatokat stb). Ha kikapcsolja, legyen óvatos, amikor ismeretlen vagy kétes hírű webhelyeket keres fel. +Amikor be van jelentkezve, az összes eszközén használhatja a Google-fiókjába mentett témákat, beállításokat és egyebeket. A billentyű automatikus újbóli bevitele nyomva tartás esetén Válassza ki a(z) telepíteni kívánt verzióját. Frissítések és alkalmazások telepítése diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_hy.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_hy.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_hy.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_hy.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -4175,7 +4175,7 @@ alt + վերև սլաք , աջ սլաքի միջոցով լսեք ձայնը Ընտրյալ ցանցեր՝ -Ձեր սարքը կառավարվում է ձեր կազմակերպության կողմից +Ձեր -ը կառավարվում է ձեր կազմակերպության կողմից &Որոնել «»-ը -ում Անջատել ակնթարթային թեժ կետը Տարբերակ @@ -7951,6 +7951,7 @@ Պատկերների ֆայլեր Վարկածի փոփոխում և Powerwash Ապահով դիտարկումը պաշտպանում է ձեզ հարձակվողներից, ովքեր կարող են խաբեությամբ ձեր սարքում տեղադրել վնասարար ծրագրեր կամ բացահայտել ձեր անձնական տեղեկությունները (օրինակ՝ գաղտնաբառերը, հեռախոսահամարները կամ վարկային քարտերի տվյալները)։ Եթե անջատեք այն, զգո՛ւյշ եղեք անծանոթ կամ ոչ վստահելի կայքեր այցելելիս։ +Հաշիվ մուտք գործած ժամանակ դուք կարող եք օգտագործել թեմաները, կարգավորումները և ձեր Google հաշվում պահված այլ տեղեկություններ ձեր բոլոր սարքերում Սեղմել և պահել՝ ստեղնը ավտոմատ կրկնելու համար Ընտրեք, թե -ի որ տարբերակը տեղադրել Թարմացումների և հավելվածների տեղադրում diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_id.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_id.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_id.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_id.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -5194,7 +5194,7 @@ Mendownload file pengenalan ucapan ... % Kelompokkan tab dengan AI Anda dapat menggunakan bahasa Akun Google pilihan () -Bantu sempurnakan fitur dan performa Chrome +Bantu tingkatkan fitur dan performa Chrome Gambar yang dihasilkan , dalam gaya Memulai Klik kanan tab dan pilih "Tambahkan Tab ke Grup Baru" @@ -7213,7 +7213,7 @@ Tab Baru di Sebelah Kanan Saluran diubah. Mulai ulang perangkat Anda untuk menerapkan perubahan. Printer yang dipilih tidak tersedia atau tidak terinstal dengan benar. Periksa printer atau coba pilih printer lain. -Blokir perintah login dari layanan identitas +Blokir dialog login dari layanan identitas Jika ya, edit sandi tersimpan Anda di agar cocok dengan sandi baru Anda. Jaringan yang Dikenal Otomatis memblokir , @@ -7970,6 +7970,7 @@ File Gambar Ganti saluran dan Powerwash Safe Browsing akan melindungi Anda dari penyerang yang dapat mengelabui Anda agar melakukan sesuatu yang berbahaya, misalnya menginstal software berbahaya atau mengungkap informasi pribadi seperti sandi, nomor telepon, atau kartu kredit. Jika dinonaktifkan, harap berhati-hati saat mengakses situs tidak dikenal atau tidak tepercaya. +Saat Anda login, Anda dapat menggunakan tema, setelan, dan info lainnya yang disimpan di Akun Google Anda di semua perangkat Anda Tekan lama untuk otomatis mengulangi penekanan tombol Pilih versi yang akan diinstal. Instal Update dan Aplikasi @@ -8218,7 +8219,7 @@ Sesuaikan ukuran dan font teks untuk browser web Penjelajahan tamu Akses Asisten saat Anda mengucapkan "Ok Google". -Tukar tombol mouse utama +Tukar tombol utama mouse Gunakan DNS aman Panna cotta Tab saat ini dibagikan kepada Gemini saat Anda memulai percakapan baru. Data Anda tidak digunakan untuk meningkatkan kualitas model AI generatif. Pelajari lebih lanjut AI dan privasi @@ -11838,7 +11839,7 @@ Mentransmisikan tab ini Catatan rilis Gemini tidak tersedia untuk saat ini. Coba lagi nanti. -Pindahkan layar secara terus-menerus saat mouse berpindah +Terus gerakkan layar saat mouse berpindah Melindungi dari situs, download, dan ekstensi yang diketahui berbahaya. Jika halaman melakukan hal yang mencurigakan, URL dan contoh kecil konten halaman akan dikirim ke Google Safe Browsing. Perlu ruang kosong sebesar untuk menginstal Linux. Untuk menambah ruang kosong, hapus file dari perangkat Anda. Tutorial ChromeVox diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_is.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_is.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_is.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_is.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ Myndaskrár Skipta um rás og djúphreinsa Örugg vefnotkun verndar þig fyrir tölvuþrjótum sem gætu platað þig til að gera eitthvað hættulegt eins og að setja upp skaðlegan hugbúnað eða gefa upp persónuupplýsingar á borð við aðgangsorð, símanúmer eða kreditkortaupplýsingar. Ef þú slekkur á henni skaltu fara varlega þegar þú skoðar ókunnug eða óáreiðanleg vefsvæði. +Á meðan þú ert innskráð(ur) geturðu notað bókamerkin, viðbæturnar og fleira sem er vistað á Google-reikningnum þínum í öllum tækjunum þínum Halda inni til að endurtaka lykil sjálfkrafa Veldu hvaða útgáfu þú vilt setja upp. Setja upp uppfærslur og forrit diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_it.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_it.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_it.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_it.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -204,7 +204,7 @@ Visualizza foto e contenuti multimediali del tuo telefono Gestire app Crea visualizzazione divisa -{0,plural, =1{Chiudi finestre di navigazione in incognito}other{Chiudi finestre di navigazione in incognito (# finestre)}} +{0,plural, =1{Chiudi finestre Incognito}other{Chiudi finestre Incognito (# finestre)}} Scegli un nome e un tema a colori per riconoscere i profili - Parte del gruppo Livello della batteria dell'auricolare destro a %. @@ -815,7 +815,7 @@ Modalità kiosk automatica Scansiona codice QR Tema "" installato -{COUNT,plural, =1{La finestra di navigazione in incognito non verrà riaperta.}other{# finestre di navigazione in incognito non verranno riaperte.}} +{COUNT,plural, =1{La finestra Incognito non verrà riaperta.}other{# finestre Incognito non verranno riaperte.}} vuole installare un' che può: Sono consentiti i cookie di terze parti Sono consapevole che i profili eSIM installati non verranno rimossi eseguendo il Powerwash @@ -1026,7 +1026,7 @@ Scegli account Drive Identificatori di contenuti protetti consentiti vuole accedere a marca e modello del token di sicurezza -Apri tutti gli URL () nella finestra di navigazione in incognito +Apri tutti gli URL () nella finestra Incognito Gestore delle password di Google può aggiornare il tuo account con una password efficace e salvarla per te nel tuo account . Disattiva automaticamente gli strumenti di ottimizzazione JavaScript sui siti sconosciuti Impossibile aggiungere @@ -1038,7 +1038,7 @@ Il servizio di gestione ha inviato un errore HTTP. Impostazioni voce per sintesi vocale Prova ora -Nuova finestra di navigazione in incognito +Nuova finestra Incognito Puntatore del mouse grande Attivare navigazione con cursore? Attiva digitazione a scorrimento @@ -1231,7 +1231,7 @@ Ripristino file Microsoft Caricamento del log in corso. La configurazione potrebbe richiedere più tempo del previsto… -Apri tutti gli URL nella finestra di navigazione in incognito +Apri tutti gli URL nella finestra Incognito Tocca Notifiche app > Google Play Services. Grigio Mostra la cronologia dei download completa in una nuova scheda @@ -1594,7 +1594,7 @@ Rimuovi profilo eSIM Nulla da mostrare Se Chromium rileva che una delle tue password è stata compromessa nell'ambito di una violazione dei dati pubblici, Gestore delle password di Google può offrirti di cambiarla automaticamente se hai eseguito l'accesso. Scopri di più sulla modifica automatica delle password -Apri una finestra di navigazione in incognito per esplorare il Web senza salvare la tua cronologia di navigazione +Apri una finestra Incognito per esplorare il web senza salvare la tua cronologia di navigazione Elimina i dati alla chiusura di tutte le finestre. I dati vengono trattati allo stesso modo del sito che stai visualizzando Microfono beamforming per un audio nitido della persona che utilizza Chromebook. Usa i preferiti su più dispositivi @@ -1765,7 +1765,7 @@ Utilizza tasti principali Impossibile aggiungere la stampante. Controlla la configurazione della stampante e riprova. Codice QR -Scheda di navigazione in incognito: +Scheda Incognito: Microsoft 365 Seleziona password Stai per attivare le funzionalità di debug di ChromeOS Flex, che comporteranno la configurazione del daemon sshd e l'attivazione dell'avvio da unità USB. @@ -1871,7 +1871,7 @@ Questa scheda utilizza la videocamera o il microfono Apri con visualizzatore di sistema Aggiorna reti -Nuova finestra di navigazione in incognito +Nuova finestra Incognito Visualizzazione protetta (beta) Impossibile recuperare il file PPD di . Scopri di più sulle ricerche nella cronologia @@ -2759,7 +2759,7 @@ Se ripeti la configurazione della scansione, tutte le assegnazioni verranno reimpostate, compresi eventuali sensori assegnati e le preferenze di velocità per la scansione automatica. Servizio di riconoscimento vocale Lettura e modifica delle voci nell'elenco di lettura -Per eliminare i dati, chiudi tutte le finestre di navigazione in incognito +Per eliminare i dati, chiudi tutte le finestre Incognito Interruzione anomala Per poter utilizzare la rete devi completare la connessione a Internet sotto. {NUM_GROUPS,plural, =1{Elimina gruppo}other{Elimina gruppi}} @@ -2847,7 +2847,7 @@ Nuova scheda nel gruppo Promemoria: i tuoi gruppi di schede ID chiave: -Questa impostazione personalizzata verrà rimossa quando chiuderai tutte le finestre di navigazione in incognito +Questa impostazione personalizzata verrà rimossa quando chiuderai tutte le finestre Incognito Aprire schede? Documenti, Fogli e Presentazioni Google richiedono l'archiviazione dei file su Google Drive. I file locali verranno spostati e i file in altre posizioni verranno copiati. Puoi trovare i tuoi file nella cartella di Google Drive dell'app File. Il file utilizza funzioni non supportate @@ -3164,7 +3164,7 @@ Dimensioni app: Ha aggiunto questa scheda Non consentire ai siti di modificare file o cartelle sul dispositivo -Pulsante sbloccato +Pulsante non fissato In attesa di elaborazione cache... Comprimi tutto Gestisci la lingua dell'Account Google @@ -3772,7 +3772,7 @@ Processo di Updater Aggiornamento non riuscito (errore: ) Firma X9.62 ECDSA con SHA-512 -Una società può definire un gruppo di siti che possono utilizzare i cookie per condividere la tua attività nel gruppo. Questa opzione è disattivata nella modalità di navigazione in incognito. +Una società può definire un gruppo di siti che possono utilizzare i cookie per condividere la tua attività nel gruppo. Questa opzione è disattivata nella modalità Incognito. Nome utente (facoltativo) Impostazioni proxy Consente di regolare il colore dello schermo per adattarlo all'ambiente circostante @@ -4786,7 +4786,7 @@ Alieno Report di feedback Autorizzate a mostrare richieste -Cripta le richieste di navigazione in modo che i malintenzionati sulla stessa rete non possano vedere il tuo traffico +Cripta le richieste di navigazione in modo che gli attaccanti sulla stessa rete non possano vedere il tuo traffico Autorizzazione richiesta, premi F6 per rispondere Grande Nessun aggiornamento @@ -5349,7 +5349,7 @@ Accelerazione di scorrimento Scopri di più e sembrano correlati. Assicurati di considerare attendibile prima di utilizzare la password. Log scritti nella directory Download. -Per eliminare la cronologia di navigazione in incognito dal tuo dispositivo, chiudi tutte le schede di navigazione in incognito. +Per eliminare la cronologia Incognito dal tuo dispositivo, chiudi tutte le schede Incognito. Nessun dispositivo salvato in App di disegno con stilo Vai alla pa&gina @@ -5424,7 +5424,7 @@ Steam per Chromebook (beta) è disponibile soltanto per il primo account a cui è stato eseguito l'accesso su questo Chromebook. &Apri video in un'altra scheda Il tuo dispositivo Chromebook usa un sensore integrato per rilevare la presenza di persone davanti allo schermo. Tutti i dati vengono subito elaborati sul dispositivo e poi eliminati. I dati del sensore non vengono mai inviati a Google. -Consenti modalità di navigazione in incognito +Consenti modalità Incognito {GROUP_COUNT,plural, =1{Vuoi eliminare il gruppo di schede?}other{Vuoi eliminare i gruppi di schede?}} Gestito da un genitore &Conserva @@ -5708,7 +5708,7 @@ Password aggiornata Sal&va video come... Controlla il dispositivo -Vuoi uscire comunque dalla modalità di navigazione in incognito? +Vuoi uscire comunque dalla modalità Incognito? Questo dispositivo può connettersi solo a una rete mobile specifica. Scopri di più Non esiste una macchina virtuale obbligatoria. Prova a configurare per continuare. Questa pagina sta tentando di caricare script da fonti non autenticate. @@ -6221,7 +6221,7 @@ * Il campo è obbligatorio Verrà rimosso l'accesso a Google Drive su questo Chromebook, incluso l'accesso a tutti i file resi disponibili offline Copiata nei tuoi appunti -L'azione viene applicata soltanto per le finestre di navigazione in incognito +L'azione viene applicata soltanto per le finestre Incognito Gli URL corrispondenti a queste regole non attiveranno un cambio di browser e potranno essere aperti in o . Il servizio di geolocalizzazione di Google utilizza fonti quali le reti Wi-Fi e mobili o i sensori per stabilire la posizione approssimativa del dispositivo. Puoi disattivare la posizione del dispositivo in qualsiasi momento tramite Impostazioni > App > Google Play Store > Gestisci le preferenze Android > Sicurezza e posizione > Posizione. Puoi anche disattivare l'uso delle reti Wi-Fi e mobili e dei sensori per la posizione del dispositivo Android disabilitando "Precisione della geolocalizzazione di Google" nello stesso menu. @@ -6425,7 +6425,7 @@ Disattiva evidenziazione Installata da una terza parte. Il nome attuale del dispositivo è -Puoi navigare in privato usando una finestra di navigazione in incognito +Puoi navigare in privato usando una finestra Incognito Archiviazione locale &Trova e modifica Invia dati diagnostici e sull'utilizzo @@ -7064,7 +7064,7 @@ Apri sempre con visualizzatore di sistema Cartelle condivise di Linux Chiudi tutte le app di Chrome -Nuova scheda di navigazione in incognito +Nuova scheda Incognito L'URL del dispositivo remoto non è supportato I siti possono installare gestori dei pagamenti Inserisci il codice di conferma @@ -7231,7 +7231,7 @@ Passa alla scheda in fase di acquisizione Sportello della stampante aperto Giallo -Visualizza gli avvisi prima di visitare siti non sicuri in modalità di navigazione in incognito +Visualizza gli avvisi prima di visitare siti non sicuri in modalità Incognito Impossibile installare a causa di un problema di configurazione. Contatta l'amministratore. Codice di errore: . Continua a consentire a questo sito di usare identificatori per riprodurre contenuti protetti Aggiornamento quasi completato. Riavvia il dispositivo per terminare l'aggiornamento. @@ -7522,7 +7522,7 @@ Account Google Gestisci le impostazioni audio di ChromeOS La coda della stampante è piena -Riquadro laterale sbloccato +Riquadro laterale staccato Utilizza il tasto Ricerca per modificare il comportamento dei tasti funzione Se hai anche scelto di inviare dati diagnostici e sull'utilizzo nel passaggio precedente, questi dati verranno raccolti per le app installate. Crea con l'AI @@ -7759,7 +7759,7 @@ Chiedi prima di copiare o spostare i file Microsoft su Microsoft OneDrive Rimuovi porta Connessione a in corso… -Personalizza profilo +Personalizza il profilo Seleziona un certificato per autenticarti a Apri con Copia meno recente conservata quando chiudi i duplicati @@ -7952,7 +7952,8 @@ Leggere e modificare i tuoi dati su , e File di immagine Cambia canale ed esegui Powerwash -La Navigazione sicura ti protegge da utenti malintenzionati che potrebbero indurti con l'inganno a effettuare operazioni pericolose, come installare software dannosi o rivelare informazioni personali (ad esempio password, numeri di telefono o carte di credito). Se la disattivi, fai attenzione quando navighi in siti sconosciuti o sospetti. +La Navigazione sicura ti protegge da attaccanti che potrebbero indurti con l'inganno a effettuare operazioni pericolose, come installare software dannosi o rivelare informazioni personali (ad esempio password, numeri di telefono o carte di credito). Se la disattivi, fai attenzione quando navighi in siti sconosciuti o sospetti. +Se hai eseguito l'accesso, puoi usare i temi, le impostazioni e altri dati salvati nel tuo Account Google su tutti i tuoi dispositivi Tieni premuto per ripetere automaticamente il tasto Seleziona la versione di da installare. Installa aggiornamenti e app @@ -8236,7 +8237,7 @@ Reimposta eSIM Tasti del mouse Per configurare l'impronta, chiedi a tuo figlio di toccare il sensore di impronte digitali sul lato destro di questo . I dati relativi all'impronta di tuo figlio vengono memorizzati in modo sicuro e non possono essere trasferiti in alcun modo da questo . -I dati di accesso verranno memorizzati su questo dispositivo quando uscirai dalla modalità di navigazione in incognito. Potrai accedere di nuovo a questo sito web con il tuo dispositivo in un secondo momento. +I dati di accesso verranno memorizzati su questo dispositivo quando uscirai dalla modalità Incognito. Potrai accedere di nuovo a questo sito web con il tuo dispositivo in un secondo momento. Opzioni di Traduttore Gestisci le app web isolate scheda @@ -8325,7 +8326,7 @@ Impostazione della gestione da parte di in corso… Inserisci la passphrase Aggiungi -La modalità di navigazione in incognito mantiene la navigazione nascosta agli altri utenti che utilizzano il tuo dispositivo +La modalità Incognito mantiene la navigazione nascosta agli altri utenti che utilizzano il tuo dispositivo (USB) Consente di prolungare la durata della batteria riducendo la luminosità, limitando l'attività in background e gli effetti visivi, ritardando le notifiche e attivando il Risparmio energetico di Chrome. aumenta la luminosità della tastiera @@ -8532,7 +8533,7 @@ ChromeOS Flex System Image Writer Volpe Blocca se il sito non è familiare (impostazione predefinita) -Apri nella finestra di navigazione in incognito +Apri nella finestra Incognito Accedi automaticamente ai siti web utilizzando credenziali memorizzate. Quando la funzione non è attiva, ti viene chiesta la conferma prima di ogni accesso ai siti web. La pagina è pronta per essere visualizzata Decisa @@ -8790,7 +8791,7 @@ Sì, mantieni i miei dati separati da quelli di lavoro Dall'inizio inserisci -Per navigare in privato, fai clic sul menu con l'icona con tre puntini per aprire una finestra di navigazione in incognito +Per navigare in privato, fai clic sul menu con l'icona con tre puntini per aprire una finestra Incognito Accessibilità Disconnetti rete con tethering istantaneo OID registrato @@ -8899,7 +8900,7 @@ Blocca Reindirizzamento bloccato: Impossibile annullare la condivisione perché questa cartella è in uso in un'applicazione. La condivisione della cartella verrà annullata quando verrà arrestato Parallels Desktop. -{0,plural, =1{In incognito}other{# finestre di navigazione in incognito aperte}} +{0,plural, =1{Incognito}other{# finestre Incognito aperte}} &Ispeziona dispositivi Descrivi la tua immagine Utilizza questa password su tutti i tuoi dispositivi @@ -9570,7 +9571,7 @@ Usa la crittografia predefinita di Google per le password nel tuo Account Google Al momento il tuo membro del gruppo Famiglia non può ricevere password. Chiedi di aggiornare Chrome e sincronizzare le sue password. Questa opzione non è al momento disponibile. -Portale in modalità di navigazione in incognito: +Portale in modalità Incognito: Mostra scorciatoie File di Microsoft 365 Durante la lettura delle lettere maiuscole @@ -9629,7 +9630,7 @@ Personalizza e controlla . È disponibile un aggiornamento. Apri finestra del browser Termina processo -Puoi gestire gli Account Google a cui hai eseguito l'accesso dalle Impostazioni. Le autorizzazioni concesse ai siti web e alle app potrebbero essere applicate a tutti gli account. Se non vuoi consentire a siti o app di accedere alle informazioni del tuo account, puoi accedere a come ospite oppure navigare sul Web in una finestra di navigazione in incognito. +Puoi gestire gli Account Google a cui hai eseguito l'accesso dalle Impostazioni. Le autorizzazioni concesse ai siti web e alle app potrebbero essere applicate a tutti gli account. Se non vuoi consentire a siti o app di accedere alle informazioni del tuo account, puoi accedere a come ospite oppure navigare sul web in una finestra Incognito. Gestisci i link dell'app Play F12 Crea combinazione di tasti @@ -9765,7 +9766,7 @@ Altri tipi di attività potrebbero essere salvati nel tuo Account Google se hai eseguito l'accesso. Puoi eliminarli in qualsiasi momento. Annulla Alcune password sono salvate solo su questo dispositivo. Per usarle anche sugli altri tuoi dispositivi, salvale nel tuo Account Google . -Vuoi uscire comunque dalla modalità di navigazione in incognito? +Vuoi uscire comunque dalla modalità Incognito? Ottieni la Guida alla privacy Non sei autorizzato a utilizzare questo dispositivo. Per ottenere l'autorizzazione di accesso contatta l'amministratore. Segui le istruzioni sullo smartphone @@ -10224,7 +10225,7 @@ Visualizzazione di informazioni del dispositivo, ad esempio numero di serie o ID asset Aumenta dimensioni carattere Se vuoi creare una passkey per su un token di sicurezza USB, inserisci il token e toccalo ora -Nuova scheda di navigazione in incognito +Nuova scheda Incognito Apri la panoramica delle finestre Mai Accelerazione del touchpad @@ -10689,7 +10690,7 @@ Sono visualizzati solo i dispositivi supportati. I dispositivi USB non saranno più disponibili per le app native finché non vengono disconnessi. Solo su questo dispositivo Modalità panoramica finestre attivata. Scorri per spostarti oppure premi Tab se usi una tastiera. -{COUNT,plural, =1{La finestra di navigazione in incognito non verrà aperta dopo il riavvio}other{Le {COUNT} finestre di navigazione in incognito non verranno riaperte dopo il riavvio}} +{COUNT,plural, =1{La finestra Incognito non verrà aperta dopo il riavvio}other{Le {COUNT} finestre Incognito non verranno riaperte dopo il riavvio}} Devi verificare la tua identità prima di poter accedere alle tue password Tutti i metodi di immissione Aggiungere una stampante @@ -10813,7 +10814,7 @@ Programma di aggiornamento di Chrome Mostra scorciatoie per la ricerca Non ho provato -Le installazioni di app web non sono supportate in modalità di navigazione in incognito +Le installazioni di app web non sono supportate in modalità Incognito Seleziona una raccolta Ora puoi visualizzare le foto recenti, i contenuti multimediali, le notifiche e le app del tuo telefono Processi di stampa @@ -10859,7 +10860,7 @@ Le estensioni installate dall'amministratore possono comunque leggere e modificare questo sito Riquadro laterale della Ricerca Google Avviso di problemi di prestazioni -La passkey verrà salvata solo su questo dispositivo. Rimarrà su questo dispositivo dopo la chiusura di tutte le finestre di navigazione in incognito. +La passkey verrà salvata solo su questo dispositivo. Rimarrà su questo dispositivo dopo la chiusura di tutte le finestre Incognito. La trasmissione dell'audio della scheda non è supportata su questo dispositivo Gestito dalla tua organizzazione È obbligatorio inserire il nome @@ -11585,7 +11586,7 @@ Condivisione di con La password è stata salvata L'account è stato rimosso da questo dispositivo -Condividi il computer con altre persone? Prova ad aprire una finestra di navigazione in incognito. +Condividi il computer con altre persone? Prova ad aprire una finestra Incognito. Cerca tra le schede… Copia dettagli build negli appunti Avvio della modalità demo @@ -11666,7 +11667,7 @@ Fai clic con il tasto destro del mouse su una scheda e seleziona "Aggiungi scheda a gruppo", quindi seleziona "Nuovo gruppo" Caricamento suggerimento Chiudi tutte -Frame secondario modalità di navigazione in incognito: +Frame secondario modalità Incognito: Sì, accetto di Installazione dell'app in corso… @@ -11931,7 +11932,7 @@ Disabilita tethering istantaneo Nome utente: A breve questa opzione non sarà più supportata. Per presentare una scheda, utilizza . -I siti che visiti non vengono salvati in modalità di navigazione in incognito +I siti che visiti non vengono salvati in modalità Incognito Applicazione: Apri in una finestra Le app web isolate possono chiedere di controllare i lettori di smart card @@ -12003,7 +12004,7 @@ Scarica Chrome per iOS per accedere a schede, preferiti e password sul tuo smartphone. Apri in una scheda fissata {MULTI_GROUP_TAB_COUNT,plural, =0{Chiudere scheda ed eliminare gruppo?}=1{Chiudere scheda ed eliminare gruppo?}other{Chiudere le schede ed eliminare i gruppi?}} -Salvare la passkey al di fuori della modalità di navigazione in incognito? +Salvare la passkey al di fuori della modalità Incognito? Il dispositivo non è aggiornato {MEMBERS,plural, =1{1 sito nel gruppo di }other{{MEMBERS} siti nel gruppo di }} Rimuovi dalle lingue tradotte automaticamente diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_iw.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_iw.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_iw.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_iw.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -4946,7 +4946,7 @@ שמות של התקני אחסון נשלפים חלון &אנונימי חדש פתיחת האפליקציה -שינוי הסיסמה בשבילי +אני רוצה לשנות את הסיסמה לדף הזה יש הרשאה לערוך קבצים {COUNT,plural, =1{‏איש קשר אחד לא זמין. כדי להשתמש ב‘' עם איש הקשר הזה, צריך להוסיף לאנשי הקשר שלך את כתובת האימייל שמשויכת לחשבון Google שלו.}one{‏# אנשי קשר לא זמינים. כדי להשתמש ב‘' עם אנשי הקשר האלה, צריך להוסיף לאנשי הקשר שלך את כתובות האימייל שמשויכות לחשבונות Google שלהם.}two{‏# אנשי קשר לא זמינים. כדי להשתמש ב‘' עם אנשי הקשר האלה, צריך להוסיף לאנשי הקשר שלך את כתובות האימייל שמשויכות לחשבונות Google שלהם.}other{‏# אנשי קשר לא זמינים. כדי להשתמש ב‘' עם אנשי הקשר האלה, צריך להוסיף לאנשי הקשר שלך את כתובות האימייל שמשויכות לחשבונות Google שלהם.}} הגדרת קוד אימות חדש למפתח האבטחה @@ -7970,6 +7970,7 @@ קובצי תמונה ‏מעבר לערוץ אחר וביצוע Powerwash גלישה בטוחה מגינה עליך מפני תוקפים שעשויים להטעות אותך כדי לגרום לך לבצע פעולה מסוכנת. למשל, התקנה של תוכנה זדונית או חשיפת מידע אישי, כמו סיסמאות, מספרי טלפון או כרטיסי אשראי. אם תשביתו את הגלישה הבטוחה, יש לנקוט זהירות בעת הגלישה באתרים לא מוכרים או בעלי מוניטין בעייתי. +‏אחרי הכניסה לחשבון, אפשר להשתמש בעיצובים, בהגדרות ובנתונים נוספים ששמורים בחשבון Google בכל המכשירים צריך ללחוץ לחיצה ארוכה כדי לחזור על המקש באופן אוטומטי עליך לבחור את הגרסה של שברצונך להתקין. התקנת עדכונים ואפליקציות @@ -9564,7 +9565,7 @@ ניתן לגלול ולשנות את מרחק התצוגה בכרטיסיות המשותפות התמקדות בשורה ‏סוג אישור Netscape -שינוי הסיסמה בשבילי +אני רוצה לשנות את הסיסמה תיעוד של ביקורך באתר יישמר במפתח האבטחה שלך. האודיו בכרטיסייה הזו מושתק פתיחת תיקיית ההורדות @@ -11847,7 +11848,7 @@ הכרטיסייה הזו מועברת נתוני גרסה ‏אין גישה אל Gemini כרגע. אפשר לנסות שוב אחר כך. -הזזת המסך ברצף כשהעכבר זז +המסך יזוז ברצף כשהעכבר זז ‏הגנה מפני אתרים, הורדות ותוספים שידועים כמסוכנים. אם בדף כלשהו מתבצעת פעולה חשודה, כתובות URL וקטעים מהתוכן בדף נשלחים אל הגלישה הבטוחה של Google. ‏נדרש שטח אחסון פנוי של כדי להתקין את Linux. כדי לפנות שטח אחסון, יש למחוק קבצים מהמכשיר. ‏מדריך של ChromeVox diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ja.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ja.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ja.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ja.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7942,6 +7942,7 @@ 画像ファイル チャンネルを変更して Powerwash セーフ ブラウジングは、不正なソフトウェアのインストールや個人情報(パスワード、電話番号、クレジット カードなど)の入力といった危険な操作を行うよう誘導する悪意のあるユーザーから保護します。オフにする場合、なじみのないサイトや評判の悪いサイトを閲覧する際は十分に注意してください。 +ログイン中は、Google アカウントに保存されているテーマや設定などをすべてのデバイスで使用できます 長押ししてキーを自動で繰り返す インストールする のバージョンを選択してください。 アップデートとアプリのインストール diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ka.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ka.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ka.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ka.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7957,6 +7957,7 @@ გამოსახულების ფაილები არხის შეცვლა და განახლება Safe Browsing დაგიცავთ თავდამსხმელებისგან, რომლებმაც შეიძლება მოტყუებით ჩაგადენინონ ისეთი სახიფათო ქმედება, როგორიცაა პროგრამული უზრუნველყოფის ინსტალაცია ან თქვენი პერსონალური ინფორმაციის (მაგალითად, პაროლების, ტელეფონის ნომრების ან საკრედიტო ბარათების მონაცემების) გამჟღავნება. გამორთვის შემთხვევაში გამოიჩინეთ სიფრთხილე უცნობი საიტების დათვალიერებისას. +როცა შესული ხართ, შეგიძლიათ თქვენს ყველა მოწყობილობაში გამოიყენოთ თქვენს Google ანგარიშში შენახული თემები, პარამეტრები და სხვა მონაცემები ხანგრძლივად დაჭერა კლავიშის ავტომატურად გასამეორებლად აირჩიეთ, -ის რომელი ვერსია დაინსტალირდეს. განახლებებისა და აპების ინსტალაცია diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_kk.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_kk.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_kk.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_kk.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7947,6 +7947,7 @@ Кескін файлдары Арнаны өзгерту және Powerwash орындау "Қауіпсіз шолу" функциясы сізді алдап, зиянды бағдарламалық құрал орнаттыратын немесе құпия сөздер, телефон нөмірлері мен несиелік карталар сияқты жеке ақпаратты біліп алатын шабуылдаушылардан қорғайды. Оны өшірсеңіз, таныс емес немесе сенімсіз сайттарды ашқанда абайлаңыз. +Аккаунтқа кірсеңіз, Google аккаунтыңызда сақталған тақырыптарды, параметрлерді және т.б. барлық құрылғыңызда пайдалана аласыз. Пернені автоматты түрде қайталау үшін басып тұрыңыз Орнататын нұсқасын таңдаңыз. Жаңартылған нұсқалар мен қолданбаларды орнату diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_km.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_km.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_km.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_km.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7967,6 +7967,7 @@ ឯកសាររូបភាព ប្តូរបណ្តាញ និង Powerwash ការរុករកដោយ​សុវត្ថិភាព​ការពារអ្នក​ពី​អ្នកវាយប្រហារ ដែលអាច​បញ្ឆោតឱ្យអ្នក​ធ្វើអ្វីមួយ​គ្រោះថ្នាក់ដូចជា ដំឡើង​កម្មវិធីគ្រោះថ្នាក់ ឬបង្ហាញព័ត៌មាន​ផ្ទាល់ខ្លួនដូចជា ពាក្យសម្ងាត់ លេខទូរសព្ទ ឬបណ្ណឥណទាន​ជាដើម។ ប្រសិនបើអ្នក​បិទការរុករក​ដោយសុវត្ថិភាព សូមប្រុងប្រយ័ត្ន នៅពេលរុករក​គេហទំព័រ​ដែលមិនគួរ​ឱ្យ​ទុកចិត្ត ឬមិនស្គាល់។ +នៅពេល​អ្នក​ចូលគណនី អ្នកអាច​ប្រើទម្រង់រចនា ការកំណត់ និង​អ្វីៗជា​ច្រើនទៀត​ដែលបាន​រក្សាទុក​នៅក្នុង​គណនី Google របស់អ្នក​នៅលើ​ឧបករណ៍​ទាំងអស់​របស់អ្នក ចុចឱ្យជាប់ ដើម្បី​ចុចគ្រាប់ចុច​ឡើងវិញ​ដោយស្វ័យប្រវត្តិ ជ្រើសរើស​កំណែ សម្រាប់​ដំឡើង។ ដំឡើង​កំណែថ្មី និងកម្មវិធី diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_kn.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_kn.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_kn.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_kn.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -6798,7 +6798,7 @@ () ಪುಟದಲ್ಲಿ ಸೈಟ್‌ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ... -ಸಾಧನದ ಪ್ರಾರಂಭದಲ್ಲಿ ಧ್ವನಿಯನ್ನು ಪ್ಲೇ ಮಾಡಿ +ಸಾಧನದ ಪ್ರಾರಂಭದಲ್ಲಿ ಸೌಂಡ್ ಅನ್ನು ಪ್ಲೇ ಮಾಡಿ ಅಕ್ಷರಗಳ ನಡುವೆ ಹೆಚ್ಚಿನ ಅಂತರ ಇನ್ನೂ ಸಾಕಷ್ಟು ಡೇಟಾ ಲಭ್ಯವಿಲ್ಲ. fn ಕೀ @@ -7962,6 +7962,7 @@ ಇಮೇಜ್ ಫೈಲ್‌ಗಳು ಚಾನಲ್ ಬದಲಿಸಿ ಮತ್ತು ಪವರ್‌ವಾಷ್ ಮಾಡಿ ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ನಿಮ್ಮನ್ನು ಅಪಾಯಕಾರಿ ಕೆಲಸ ಮಾಡಲು ಪ್ರಚೋದಿಸುವ ದಾಳಿಕೋರರಿಂದ ರಕ್ಷಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್‌ವೇರ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವುದು ಹಾಗೂ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಫೋನ್ ಸಂಖ್ಯೆಗಳು ಅಥವಾ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್‌ಗಳಂತಹ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು ಬಹಿರಂಗಪಡಿಸುವುದು. ನೀವು ಅದನ್ನು ಆಫ್ ಮಾಡಿದರೆ, ಪರಿಚಯವಿಲ್ಲದ ಅಥವಾ ಜನಪ್ರಿಯವಲ್ಲದ ಸೈಟ್‌ಗಳನ್ನು ಬ್ರೌಸ್ ಮಾಡುವಾಗ ಬಹಳ ಜಾಗರೂಕರಾಗಿರಿ. +ನೀವು ಸೈನ್ ಇನ್ ಆಗಿರುವಾಗ, ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಸೇವ್ ಮಾಡಲಾದ ಥೀಮ್‌ಗಳು, ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಇನ್ನಷ್ಟನ್ನು ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿ ಬಳಸಬಹುದು ಕೀ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪುನರಾವರ್ತಿಸಲು ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ ನ ಯಾವ ಆವೃತ್ತಿಯನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬೇಕೆಂದು ಆಯ್ಕೆಮಾಡಿ. ಅಪ್‌ಡೇಟ್‌ಗಳು ಮತ್ತು ಆ್ಯಪ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ko.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ko.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ko.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ko.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -3858,7 +3858,7 @@ 프로필 잠금 해제 및 다시 시작 관리 세션을 시작합니다. 유지 -{NUM_TASKS,plural, =1{할 일 확인}other{할 일 확인}} +{NUM_TASKS,plural, =1{작업 확인하기}other{작업 확인하기}} USB 기기 정보 자세히 알아보기(&L) 기기로 탭 전송 중 @@ -6433,7 +6433,7 @@ 앱을 삭제하려면 설정 > 앱 > Google Play 스토어 > Android 환경설정 관리 > 앱 또는 애플리케이션 관리자로 이동합니다. 그런 다음 제거하려는 앱을 탭합니다(앱을 찾으려면 오른쪽이나 왼쪽으로 스와이프해야 할 수 있음). 그런 다음 제거 또는 사용 중지를 탭합니다. 마이크 액세스 스크립트 캐시 -Gemini를 신중하고 안전하게 사용하세요. 작업을 수행하는 동안 Gemini의 작업에 대한 책임은 사용자에게 있으며, 여기에는 실수 및 예상치 못한 결과(예: 구매)가 포함됩니다. +Gemini를 신중하고 안전하게 사용하세요. 실수 및 예상치 못한 결과(예: 구매)를 포함해 작업을 수행하는 동안 Gemini의 동작에 대한 책임은 사용자에게 있습니다. 이 페이지도 방문 기록 및 활동에서 삭제됩니다. 커서 및 터치패드 실제 크기 @@ -6836,7 +6836,7 @@ 비밀번호를 저장하시겠습니까? iCloud 키체인 탐색하면서 다른 사이트에 광고를 추천할 수 있는 최근 방문한 사이트 목록 -가장 오래됨 +오래된 순 용량 예약 Firefox 닫기 북마크바에 그룹 고정 @@ -7683,7 +7683,7 @@ 열려 있는 탭을 포함하여 표시된 사이트에서 로그아웃됩니다. 이미지 복사(&Y) 기본 확대/축소 수준으로 재설정 -도움을 기다리는 중 +작업을 확인해 주세요 국가/지역 모바일 데이터가 활성화됨 에 저장할 수 없음() @@ -7894,7 +7894,7 @@ 가능한 경우 문제를 명확하게 설명하고 문제를 재현하기 위한 단계를 제공합니다. 앱 언어 SECG 타원 곡선 secp256r1(또는 ANSI X9.62 prime256v1, NIST P-256) -작업 인계 받기 +작업 인계받기 기기를 계속 켜두세요. 고요하게 암호를 아는 사람만 암호화된 데이터를 읽을 수 있습니다. 암호는 Google로 전송되거나 Google에 저장되지 않습니다. 암호가 기억나지 않거나 이 설정을 변경하려면 동기화를 재설정해야 합니다. @@ -7971,6 +7971,7 @@ 이미지 파일 채널 변경 및 Powerwash 세이프 브라우징을 사용하면 악성 소프트웨어를 설치하거나 개인정보(예: 비밀번호, 전화번호, 신용카드 정보)를 공개하는 등의 위험한 행동을 하도록 사용자를 속이는 공격자를 차단합니다. 이 기능을 사용 중지하는 경우 익숙하지 않거나 평판이 좋지 않은 사이트를 탐색할 때 주의하시기 바랍니다. +로그인한 상태에서는 Google 계정에 저장된 테마, 설정 등을 모든 기기에서 사용할 수 있습니다. 키를 길게 누르면 자동 반복 설치할 버전을 선택합니다. 업데이트 및 앱 설치 diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ky.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ky.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ky.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ky.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7970,6 +7970,7 @@ Сүрөт файлдары Нуктарды жана жууп салуу аракетин өзгөртүү Коопсуз серептөө сизди кесепеттүү программаны орнотуудан же сырсөздөр, телефон номерлери жана насыя карталарынын дайындары сыяктуу маалыматыңыздын чабуулчулар тарабынан уурдалышынан коргойт. Эгер аны өчүрсөңүз, бейтааныш же ишенимсиз сайттарды карап чыгууда өзгөчө этият болуңуз. +Кирип турганыңызда Google аккаунтуңузда сакталган темаларды, параметрлерди жана башка нерселерди бардык түзмөктөрүңүздө колдоно аласыз Баскычты автоматтык түрдө кайталоо үчүн коё бербей басып туруңуз кызматынын кайсы версиясы орнотуларын тандаңыз. Жаңыртууларды жана колдонмолорду орнотуу diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_lo.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_lo.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_lo.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_lo.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7968,6 +7968,7 @@ ໄຟລ​໌​ຮູບ​ ປ່ຽນ​​ຊ່ອງ ​ແລະ Powerwash Safe Browsing ປົກປ້ອງທ່ານຈາກຜູ້ໂຈມຕີທີ່ອາດຈະຫຼອກໃຫ້ທ່ານເຮັດບາງຢ່າງທີ່ອັນຕະລາຍ ເຊັ່ນ: ຕິດຕັ້ງຊອບແວອັນຕະລາຍ ຫຼື ເປີດເຜີຍຂໍ້ມູນສ່ວນຕົວ ເຊັ່ນ: ລະຫັດຜ່ານ, ເບີໂທລະສັບ ຫຼື ບັດເຄຣດິດ. ຖ້າທ່ານປິດມັນ, ກະລຸນາລະມັດລະວັງໃນເວລາເຂົ້າເບິ່ງເວັບໄຊທີ່ບໍ່ຄຸ້ນເຄີຍ ຫຼື ບໍ່ເປັນທີ່ຮູ້ຈັກ. +ໃນລະຫວ່າງທີ່ທ່ານເຂົ້າສູ່ລະບົບ, ທ່ານສາມາດໃຊ້ຮູບແບບສີສັນ, ການຕັ້ງຄ່າ ແລະ ຂໍ້ມູນອື່ນໆທີ່ບັນທຶກໄວ້ໃນບັນຊີ Google ຂອງທ່ານຢູ່ອຸປະກອນທຸກເຄື່ອງຂອງທ່ານໄດ້ ກົດຄ້າງໄວ້ເພື່ອກົດປຸ່ມຊ້ຳໂດຍອັດຕະໂນມັດ ເລືອກເວີຊັນຂອງ ທີ່ຈະຕິດຕັ້ງ. ຕິດຕັ້ງການອັບເດດ ແລະ ແອັບ diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_lt.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_lt.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_lt.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_lt.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7974,6 +7974,7 @@ Vaizdo failai Pakeisti kanalą ir paleisti „Powerwash“ Saugaus naršymo funkcija apsaugo jus nuo atakų vykdytojų, kurie gali bandyti apgaule priversti jus atlikti pavojingus veiksmus, pvz., įdiegti kenkėjišką programinę įrangą ar atskleisti asmens informaciją (pvz., slaptažodžius, telefono numerius ar kredito kortelių duomenis). Jei ją išjungsite, būkite atsargūs naršydami nežinomose ar nepatikimose svetainėse. +Kai esate prisijungę, galite naudoti temas, nustatymus ir kitus duomenis, išsaugotus „Google“ paskyroje, visuose savo įrenginiuose Paspauskite ir palaikykite, kad klavišas būtų kartojamas automatiškai Pasirinkite, kurią „“ versiją norite įdiegti. Naujinių ir programų diegimas diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_lv.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_lv.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_lv.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_lv.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7953,6 +7953,7 @@ Attēlu faili Mainīt kanālu un Powerwash Izmantojot drošu pārlūkošanu, jūs iegūstat aizsardzību pret uzbrucējiem, kuri varētu mudināt jūs veikt bīstamas darbības, piemēram, instalēt ļaunprātīgu programmatūru vai atklāt personas informāciju — paroles, tālruņa numurus, kredītkaršu datus u.tml. Ja izslēgsiet drošu pārlūkošanu, ievērojiet piesardzību, pārlūkojot nepazīstamas vietnes vai vietnes ar sliktu reputāciju. +Kamēr ir aktīva pierakstīšanās, varat izmantot savā Google kontā saglabātos motīvus, iestatījumus un citu saturu visās savās ierīcēs. Nospiežot un turot, automātiski atkārtot taustiņa nospiešanu Atlasiet instalējamo versiju. Atjauninājumu un lietotņu saglabāšana diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_mk.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_mk.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_mk.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_mk.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ Датотеки со слики Промени канал и ресетирај до фабрички вредности „Безбедно прелистување“ ве заштитува од напаѓачи што може да ве измамат да направите нешто опасно, како што е инсталирањето злонамерен софтвер или откривањето лични податоци, како што се лозинки, телефонски броеви или кредитни картички. Ако го исклучите, бидете внимателни при прелистувањето на непознати сајтови или сајтови со лоша репутација. +Додека сте најавени, може да ги користите темите, поставките и друго што се зачувани во вашата сметка на Google на сите ваши уреди Притиснете и задржете за автоматско повторување на копчето Изберете ја верзијата на за инсталирање. Инсталирајте ажурирања и апликации diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ml.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ml.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ml.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ml.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7953,6 +7953,7 @@ ചിത്ര ഫയലുകള്‍ ചാനലും പവർവാഷും മാറ്റുക ക്ഷുദ്രകരമായ സോഫ്റ്റ്‌വെയറുകൾ ഇൻസ്‌റ്റാൾ ചെയ്യുന്നതോ പാസ്‌വേഡുകൾ, ഫോൺ നമ്പറുകൾ അല്ലെങ്കിൽ ക്രെഡിറ്റ് ‌കാർഡുകൾ പോലുള്ള നിങ്ങളുടെ വ്യക്തിപരമായ വിവരങ്ങൾ വെളിപ്പെടുത്തുന്നതോ പോലെ അപകടകരമായ കാര്യങ്ങൾ ചെയ്യിപ്പിക്കുന്ന രീതിയിൽ നിങ്ങളെ കബളിപ്പിച്ചേക്കാവുന്ന അക്രമകാരികളിൽ നിന്നും സുരക്ഷിത ബ്രൗസിംഗ് നിങ്ങളെ പരിരക്ഷിക്കുന്നു. നിങ്ങൾ ഇത് ഓഫാക്കുകയാണെങ്കിൽ, അപരിചിതമായതോ നിന്ദ്യമായതോ ആയ സൈറ്റുകൾ ബ്രൗസ് ചെയ്യുമ്പോൾ ശ്രദ്ധിക്കുക. +സൈൻ ഇൻ ചെയ്‌തിരിക്കുമ്പോൾ, എല്ലാ ഉപകരണങ്ങളിലും നിങ്ങളുടെ Google Account-ൽ സംരക്ഷിച്ചിരിക്കുന്ന തീമുകളും ക്രമീകരണങ്ങളും മറ്റും ഉപയോഗിക്കാനാകും കീയുടെ ഫംഗ്‌ഷൻ സ്വയമേവ ആവർത്തിക്കാൻ അമർത്തിപ്പിടിക്കുക എന്നതിന്റെ ഏത് പതിപ്പാണ് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതെന്ന് തിരഞ്ഞെടുക്കുക. അപ്‌ഡേറ്റുകളും ആപ്പുകളും ഇൻസ്‌റ്റാൾ ചെയ്യൽ diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_mn.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_mn.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_mn.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_mn.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7966,6 +7966,7 @@ Зургийн файлууд Сувгийг өөрчилж, үйлдвэрийн тохиргоонд нь оруулах Аюулгүй үзэх онцлог нь хортой программ хангамж суулгах эсвэл нууц үг, утасны дугаар эсвэл кредит карт зэрэг хувийн мэдээллийг ил болгох зэрэг аюултай үйлдлийг хийлгүүлэхээр таныг хуурч болзошгүй халдагч нараас таныг хамгаалдаг. Хэрэв түүнийг унтраасан бол танихгүй эсвэл баталгаагүй сайт үзэж байхдаа болгоомжтой байна уу. +Та нэвтэрсэн байхдаа бүх төхөөрөмж дээрээ Google Бүртгэлдээ хадгалсан загвар, тохиргоо болон бусад зүйлийг ашиглах боломжтой Товчийг автоматаар давтахын тулд удаан дарна уу -н аль хувилбарыг суулгахаа сонгоно уу Шинэчлэлтүүд болон аппууд суулгах diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_mr.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_mr.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_mr.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_mr.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ इमेज फाइल चॅनल बदला आणि Powerwash करा तुम्हाला फसवून द्वेषयुक्त सॉफ्टवेअर इंस्टॉल करणे किंवा पासवर्ड, फोन नंबर किंवा क्रेडिट कार्डसारखी वैयक्तिक माहिती उघड करणे यांसारखी एखादी धोकादायक गोष्ट करायला लावणार्‍या हल्लेखोरांपासून सुरक्षित ब्राउझिंग तुमचे संरक्षण करते. तुम्ही ते बंद केल्यास, अनोळखी किंवा अप्रतिष्ठित साइट ब्राउझ करताना सावध रहा. +तुम्ही साइन इन केलेले असताना, तुमच्या सर्व डिव्हाइसवर तुमच्या Google खाते मध्ये सेव्ह केलेल्या थीम, सेटिंग्ज आणि आणखी बरेच काही वापरू शकता की आपोआप रिपीट करण्यासाठी प्रेस करून धरून ठेवा ची कोणती आवृत्ती इंस्टॉल करायची हे निवडा. अपडेट आणि अ‍ॅप्स इंस्टॉल करा diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ms.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ms.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ms.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ms.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7970,6 +7970,7 @@ Fail Imej Tukar saluran dan Powerwash Penyemakan Imbas Selamat melindungi anda daripada penyerang yang mungkin memperdaya anda agar melakukan sesuatu yang berbahaya seperti memasang perisian hasad atau mendedahkan maklumat peribadi, seperti kata laluan, nombor telefon atau kad kredit. Jika anda mematikan ciri ini, sila berhati-hati semasa menyemak imbas laman web yang tidak biasa dilawati atau tidak bereputasi baik. +Ketika anda dilog masuk, anda boleh menggunakan tema, tetapan dan pelbagai lagi yang disimpan dalam Google Account anda pada semua peranti anda Tekan dan tahan untuk mengulangi kekunci secara automatik Pilih versi untuk dipasang. Pasang Kemas Kini dan Apl diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_my.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_my.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_my.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_my.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7968,6 +7968,7 @@ ပုံ ဖိုင်များ ချာနယ် နှင့် တအားဆေးကြောမှု ပြောင်းလဲရန် တိုက်ခိုက်သူများက သင့်ကို လှည့်စား၍ အန္တရာယ်ရှိသည့် ဆော့ဖ်ဝဲကို ထည့်သွင်းစေခြင်း သို့မဟုတ် စကားဝှက်၊ ဖုန်းနံပါတ် သို့မဟုတ် ခရက်ဒစ်ကတ်ကဲ့သို့သော ကိုယ်ရေးကိုယ်တာအချက်အလက်များကို ဖော်ပြစေခြင်းကဲ့သို့သော အန္တရာယ်ရှိသည့်အရာများ လုပ်ဆောင်စေခြင်းမှ 'ဘေးကင်းစွာ အသုံးပြုခြင်း' က ကာကွယ်ပေးသည်။ ၎င်းကို ပိတ်ထားလျှင် မရင်းနှီးသည့် သို့မဟုတ် မယုံကြည်ရသည့် ဝဘ်ဆိုက်များကို ဖွင့်သည့်အခါ သတိပြုပါ။ +လက်မှတ်ထိုးဝင်ထားစဉ် သင့်စက်ပစ္စည်းအားလုံးရှိ Google Account တွင် သိမ်းထားသော အပြင်အဆင်၊ ဆက်တင် စသည်တို့ကို သုံးနိုင်သည် နှိပ်ထားခြင်းဖြင့် အလိုအလျောက် ကီးပြန်ကျော့ရန် ထည့်သွင်းမည့် ဗားရှင်းကို ရွေးပါ။ 'အပ်ဒိတ်နှင့် အက်ပ်များ' ထည့်သွင်းခြင်း diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ne.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ne.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ne.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ne.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -539,7 +539,7 @@ माउससम्बन्धी एस्सेसिबिलिटी सेटिङ "" डकुमेन्ट स्क्यानरहरू भेट्टाउन र प्रयोग गर्न चाहन्छ। यो बन्डल काम नलाग्ने वा चोरी भएको हुन सक्छ। कृपया यो विन्डो बन्द गर्नुहोस् र यसलाई फेरि डाउनलोड गर्नुहोस् -एप अनुमोदन गर्ने तथा यन्त्र चलाएर बिताउने समय सीमा तोक्ने जस्ता अभिभावकीय कन्ट्रोल प्रयोग गर्न बच्चासँग अनिवार्य रूपमा कुनै अभिभावकले सुपरिवेक्षण गर्ने Google खाता हुनु पर्छ। तपाईं पछि Google Classroom जस्ता संयन्त्र प्रयोग गर्नका निम्ति विद्यालयको खाता थप्न सक्नुहुन्छ। +एप अनुमोदन गर्ने तथा यन्त्र चलाएर बिताउने समय सीमा तोक्ने जस्ता अभिभावकीय नियन्त्रण प्रयोग गर्न बच्चासँग अनिवार्य रूपमा कुनै अभिभावकले सुपरिवेक्षण गर्ने Google खाता हुनु पर्छ। तपाईं पछि Google Classroom जस्ता टुलहरू प्रयोग गर्न विद्यालयको खाता हाल्न सक्नुहुन्छ। अफलाइन हुँदा पनि प्रयोग गर्न मिल्छ PPD फेला पार्न सकिएन। आफ्नो Chromebook अनलाइन भएको सुनिश्चित गरी फेरि प्रयास गर्नुहोस्। लाई तपाईंको डिभाइसको क्यामेरा प्रयोग गर्ने तथा क्यामेरा यताउता घुमाउने अनुमति दिइराख्नुहोस् @@ -7955,6 +7955,7 @@ फोटो फाइलहरू च्यानल र पावरवाशलाई परिवर्तन गर्नुहोस् सुरक्षित ब्राउजिङले तपाईंलाई झुक्याएर हानिकारक सफ्टवेयर स्थापना गर्न लगाउने, तपाईंका पासवर्ड, फोन नम्बर वा क्रेडिट कार्डको विवरण जस्ता तपाईंका व्यक्तिगत जानकारी खुलासा गर्न लगाउने वा यस्तै अन्य जोखिमपूर्ण कार्यहरू गर्न लगाउने आक्रमणकारीहरूबाट सुरक्षित राख्छ। तपाईंले यो सेवा निष्क्रिय पार्नुभएका खण्डमा अपरिचित वा नाम नसुनेका साइटहरू चलाउँदा सतर्क रहनुहोला। +तपाईं साइन इन अवस्थामा भएका बेला आफ्नो Google खातामा सेभ गरिएका थिम, सेटिङ र अन्य कुराहरू आफ्ना सबै डिभाइसहरूमा प्रयोग गर्न सक्नुहुन्छ की थिचिराख्दा त्यसको वर्ण स्वतः दोहोरिने पारियोस् को जुन संस्करण इन्स्टल गर्ने हो सोही संस्करण चयन गर्नुहोस्। अपडेट र एप इन्स्टल गर्नुहोस् @@ -8271,7 +8272,7 @@ {NUM_GROUPS,plural, =1{समूह छाड्नुहोस्}other{समूहहरू छाड्नुहोस्}} तपाईंको डिभाइसका सेटिङमा देखियोस् भन्ने विकल्प अन नगर्दासम्म कसैले पनि तपाईंसँग सामग्री सेयर गर्न सक्दैन।आफ्नो यन्त्र स्थायी रूपमा देखाउने बनाउन वस्तुस्थिति क्षेत्र खोल्नुहोस् अनि 'नजिकैका यन्त्रमा फेला पर्ने' सुविधा अन गर्नुहोस्। इन्टरनेटमा कनेक्ट गर्न सकिएन। आफ्नो इन्टरनेट कनेक्सन जाँच्नुहोस् र फेरि प्रयास गर्नुहोस्। -एक्स्टेन्सनहरूले के-के हेर्न सक्छन् भन्ने कुरा हेर्नुहोस् वा साइट परिवर्तन गर्नुहोस् +एक्स्टेन्सनहरूले के-के हेर्न सक्छन् हेर्नुहोस् वा साइट परिवर्तन गर्नुहोस् मालिक सेटिङ > उन्नत > निदान र प्रयोगसम्बन्धी डेटा स्वतः Google लाई पठाउनुहोस् नामक सेटिङमा गएर यो सुविधा नियन्त्रण गर्न सक्छन्। हिस्ट्री तल दिइएका अन्य सेटिङ मिलाउनुहोस् वा समीक्षा गर्ने कार्य अहिले नै पूरा गर्नुहोस् diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_nl.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_nl.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_nl.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_nl.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -3059,7 +3059,7 @@ Mag de informatie gebruiken die over jou is opgeslagen Zonsondergang tot zonsopkomst Agente X -Het touchpad en toetsenbord gebruiken om met de rechtermuisknop te klikken +De touchpad en het toetsenbord gebruiken om met de rechtermuisknop te klikken Selecteer items die je wilt importeren: Automatische ondertiteling Recent AI-thema @@ -7949,6 +7949,7 @@ Afbeeldingsbestanden Kanaal wijzigen en Powerwash uitvoeren Safe Browsing beschermt je tegen aanvallers die je proberen te misleiden zodat je iets gevaarlijks doet, zoals schadelijke software installeren of persoonlijke informatie zoals wachtwoorden, telefoonnummers of creditcards openbaar maken. Als je deze functie uitzet, moet je voorzichtig zijn als je op onbekende of onbetrouwbare sites browst. +Als je bent ingelogd, kun je onder andere de thema's en instellingen die zijn opgeslagen in je Google-account gebruiken op al je apparaten Ingedrukt houden om de toets automatisch te herhalen Selecteer welke versie van je wilt installeren. Updates en apps installeren diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_no.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_no.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_no.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_no.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7959,6 +7959,7 @@ Bildefiler Bytt kanal og bruk Powerwash Safe Browsing beskytter deg mot angripere som kan prøve å lure deg til å gjøre farlige ting, som å installere skadelig programvare eller avsløre personopplysninger, for eksempel passord, telefonnumre eller kredittkortinformasjon. Hvis du slår det av, må du være forsiktig når du surfer på ukjente eller useriøse nettsteder. +Når du er logget på, kan du bruke temaene, innstillingene og mer som er lagret i Google-kontoen din, på alle enhetene dine Trykk og hold inne for å gjenta tasten automatisk Velg hvilken versjon av du vil installere. Installer oppdateringer og apper diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_or.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_or.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_or.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_or.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7950,6 +7950,7 @@ ଛବି ଫାଇଲ୍‌ଗୁଡ଼ିକ ଚ୍ୟାନେଲ୍ ଏବଂ ପାୱର୍‌ୱାଶ୍‌କୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ ସେଫ୍ ବ୍ରାଉଜିଂ ଆପଣଙ୍କୁ ଆକ୍ରମଣକାରୀଙ୍କ ଠାରୁ ରକ୍ଷା କରିଥାଏ, ଯେଉଁମାନେ ଆପଣଙ୍କୁ କିଛି ବିପଦଜନକ କାର୍ଯ୍ୟ ଯେପରି, କ୍ଷତିକାରକ ସଫ୍ଟୱେୟାର୍ ଇନଷ୍ଟଲ୍ କରିବା କିମ୍ବା ଆପଣଙ୍କ ପାସୱାର୍ଡ, ଫୋନ୍ ନମ୍ବର ବା କ୍ରେଡିଟ୍ କାର୍ଡ ପରି ବ୍ୟକ୍ତିଗତ ସୂଚନା ପ୍ରକାଶ କରିବାକୁ ପ୍ରତାରଣା କରିପାରନ୍ତି। ଯଦି ଆପଣ ଏହାକୁ ବନ୍ଦ କରନ୍ତି, ତେବେ ଅପରିଚିତ ଏବଂ ଅସୁରକ୍ଷିତ ସାଇଟଗୁଡ଼ିକୁ ବ୍ରାଉଜ୍ କରିବା ବେଳେ ସତର୍କ ରୁହନ୍ତୁ। +ଆପଣ ସାଇନ ଇନ ଥିବା ସମୟରେ, ଆପଣ ଆପଣଙ୍କର ସମସ୍ତ ଡିଭାଇସରେ ଥିବା ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ସେଭ ହୋଇଥିବା ଥିମ, ସେଟିଂସ ଏବଂ ଆହୁରି ଅନେକ କିଛିକୁ ବ୍ୟବହାର କରିପାରିବେ କୀ ସ୍ୱତଃ ରିପିଟ ହେବାକୁ ଦବାଇ ଧରନ୍ତୁ ର କେଉଁ ଭର୍ସନ ଇନଷ୍ଟଲ କରିବେ ତାହା ଚୟନ କରନ୍ତୁ। ଅପଡେଟ୍ ଏବଂ ଆପଗୁଡ଼ିକ ଇନଷ୍ଟଲ୍ କରନ୍ତୁ @@ -11039,7 +11040,7 @@ ୱିଣ୍ଡୋକୁ ଉପର ଆଡ଼କୁ ମୁଭ କରାଯାଇଛି ଆପ ଅପଡେଟ ଉପଲବ୍ଧ Google Playରୁ ଆପ୍ସ ବ୍ୟବହାର କରିବା ପାଇଁ, ଆପଣ ପ୍ରଥମେ ଆପଣଙ୍କର ଆପ୍‌ଗୁଡ଼ିକୁ ରିଷ୍ଟୋର୍ କରନ୍ତୁ। କିଛି ଡାଟା ହୁଏତ ହରାଇବାକୁ ପଡ଼ିବ। -ଉପଯୋଗକର୍ତ୍ତାନାମ +ୟୁଜରନେମ ଆଜି ଦେଖାଯାଇଛି ଶବ୍ଦକୋଷ ଲେଖିବାରେ ମୋତେ ସହାୟତା କରନ୍ତୁ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_pa.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_pa.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_pa.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_pa.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ ਚਿੱਤਰ ਫਾਈਲਾਂ ਚੈਨਲ ਅਤੇ ਪਾਵਰਵਾਸ਼ ਬਦਲੋ ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ ਅਜਿਹੇ ਹਮਲਾਵਾਰਾਂ ਤੋਂ ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਕਰਦੀ ਹੈ ਜੋ ਖਰਾਬ ਸਾਫ਼ਟਵੇਅਰ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਜਾਂ ਪਾਸਵਰਡ, ਫ਼ੋਨ ਨੰਬਰ, ਜਾਂ ਕ੍ਰੈਡਿਟ ਕਾਰਡਾਂ ਵਰਗੀ ਨਿੱਜੀ ਜਾਣਕਾਰੀ ਦਾ ਖੁਲਾਸਾ ਕਰਨ ਵਰਗੇ ਖਤਰਨਾਕ ਕੰਮ ਕਰਕੇ ਤੁਹਾਡੇ ਨਾਲ ਚਾਲਬਾਜ਼ੀ ਕਰ ਸਕਦੇ ਹਨ। ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ਅਣਪਛਾਤੀਆਂ ਅਤੇ ਅਪ੍ਰਸਿੱਧ ਸਾਈਟਾਂ 'ਤੇ ਬ੍ਰਾਊਜ਼ ਕਰਦੇ ਸਮੇਂ ਸਾਵਧਾਨ ਰਹੋ। +ਸਾਈਨ-ਇਨ ਕਰਨ 'ਤੇ, ਤੁਸੀਂ ਆਪਣੇ ਸਾਰੇ ਡੀਵਾਈਸਾਂ 'ਤੇ ਆਪਣੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਥੀਮ, ਸੈਟਿੰਗਾਂ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ ਵਰਤ ਸਕਦੇ ਹੋ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਦੁਹਰਾਉਣ ਲਈ ਕੁੰਜੀ ਨੂੰ ਦਬਾਈ ਰੱਖੋ ਚੁਣੋ ਕਿ ਦਾ ਕਿਹੜਾ ਵਰਜਨ ਸਥਾਪਤ ਕਰਨਾ ਹੈ। ਅੱਪਡੇਟ ਅਤੇ ਐਪਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰੋ diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_pl.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_pl.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_pl.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_pl.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7934,6 +7934,7 @@ Pliki graficzne Zmień kanał i wykonaj Powerwash Bezpieczne przeglądanie chroni Cię przed osobami przeprowadzającymi ataki, które mogą podstępem nakłonić Cię do wykonania niebezpiecznych czynności, takich jak zainstalowanie oprogramowania czy ujawnienie danych osobowych (na przykład haseł, numerów telefonów lub danych kart kredytowych). Gdy wyłączasz tę funkcję, zachowaj ostrożność, przeglądając nieznane lub cieszące się złą sławą strony. +Po zalogowaniu się możesz używać motywów, ustawień i innych danych zapisanych na koncie Google na wszystkich Twoich urządzeniach Naciśnij i przytrzymaj, aby automatycznie powtarzać znak Wybierz wersję elementu , którą chcesz zainstalować. Instalowanie aktualizacji i aplikacji diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_pt-BR.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_pt-BR.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_pt-BR.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_pt-BR.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -841,7 +841,7 @@ Permite que apps, sites com essa permissão e serviços do sistema acessem a localização Essa ação fará com que o contato seja lembrado no próximo compartilhamento Sua organização, , exige um perfil gerenciado e poderá ver algumas informações, incluindo -O conteúdo da página e os URLs que o Gemini usa durante uma tarefa são compartilhados com o Google. +O conteúdo da página e os URLs que o Gemini usa durante uma atividade são compartilhados com o Google. Website A impressora selecionada não está disponível ou não foi instalada corretamente. Verifique a impressora ou selecione outra. Enquanto o dispositivo estiver inativo e conectado à energia @@ -3857,7 +3857,7 @@ Desbloquear perfil e reiniciar Entrando em uma sessão gerenciada. Manter -{NUM_TASKS,plural, =1{Verifique sua tarefa}one{Verifique sua tarefa}other{Verifique suas tarefas}} +{NUM_TASKS,plural, =1{Verifique sua atividade}one{Verifique sua atividade}other{Verifique suas atividades}} Sobre dispositivos USB &Saiba mais Transmitindo uma guia para o dispositivo @@ -6433,7 +6433,7 @@ Para remover apps, acesse "Configurações" > "Apps" > "Google Play Store" > "Gerenciar preferências do Android" > "Apps" ou "Gerenciador de aplicativos". Depois, toque no app que você quer desinstalar (talvez seja necessário deslizar para a direita ou esquerda a fim de encontrar o app). Em seguida, toque em "Desinstalar" ou "Desativar". Acesso ao microfone Cache de script -Use o Gemini com cuidado e segurança. Você é responsável pelas ações do Gemini durante uma tarefa, incluindo erros e resultados inesperados, como compras. +Use o Gemini com cuidado e segurança. Você é responsável pelas ações do Gemini durante uma atividade, incluindo erros e resultados inesperados, como compras. Esta página também será removida do seu histórico e da atividade do . Cursor e touchpad Tamanho real @@ -7895,7 +7895,7 @@ Forneça uma descrição clara do problema e as etapas necessárias para reproduzi-lo (se possível) Idiomas do app Curva elíptica SECG secp256r1 (também conhecida como ANSI X9.62 prime256v1, NIST P-256) -Assumir tarefa +Assumir atividade Mantenha o dispositivo ligado Tranquilo Somente uma pessoa que tenha sua senha longa pode ler seus dados criptografados. A senha longa não é enviada para o Google ou armazenada por ele. Se você esquecer sua senha longa ou quiser alterar essa configuração, será necessário redefinir a sincronização. @@ -7972,6 +7972,7 @@ Arquivos de imagem Mudar de canal e executar PowerWash O "Navegação segura" protege contra invasores que podem levar você a fazer algo perigoso, como instalar um software malicioso ou revelar informações pessoais como senhas, números de telefone ou cartões de crédito. Se desativá-lo, tenha cuidado ao navegar em sites desconhecidos ou com má reputação. +Ao fazer login, você pode usar os temas, configurações e outros dados salvos na Conta do Google em todos os seus dispositivos Toque e mantenha pressionada para repetir a tecla automaticamente Selecione qual versão do será instalada. Instalar atualizações e apps diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_pt-PT.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_pt-PT.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_pt-PT.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_pt-PT.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7959,6 +7959,7 @@ Ficheiros de imagem Alterar canal e Powerwash A Navegação segura permite-lhe proteger-se contra os atacantes que o podem enganar no sentido de fazer algo perigoso, como instalar software malicioso, ou revelar informações pessoais, como palavras-passe, números de telefone ou cartões de crédito. Se a desativar, tenha cuidado ao navegar em sites desconhecidos ou pouco credíveis. +Enquanto tiver sessão iniciada, pode usar os temas, as definições e outros itens guardados na sua Conta Google em todos os seus dispositivos Premir sem soltar para repetir automaticamente a tecla Selecione a versão de a instalar. Instale atualizações e apps diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ro.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ro.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ro.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ro.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7955,6 +7955,7 @@ Fișiere imagine Schimbați canalul și folosiți Powerwash Navigarea sigură te protejează împotriva atacatorilor care ar putea să te păcălească să faci lucruri periculoase, cum ar fi să instalezi software rău intenționat sau să dezvălui informații cu caracter personal, cum ar fi parole, numere de telefon sau carduri de credit. Dacă o dezactivezi, ai grijă atunci când navighezi pe site-uri nefamiliare sau nelegitime. +Când te conectezi, poți folosi temele, setările și multe altele salvate în Contul Google pe toate dispozitivele Apasă lung pentru a repeta automat apăsarea tastei Selectează versiunea de pe care dorești să o instalezi. Instalează actualizări și aplicații diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ru.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ru.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ru.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ru.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -1189,7 +1189,7 @@ Свободное пространство заканчивается {NUM_SUB_APPS,plural, =1{С приложением "" будет удалено ещё одно:}one{С приложением "" также будут удалены:}few{С приложением "" также будут удалены:}many{С приложением "" также будут удалены:}other{С приложением "" также будут удалены:}} Запрос на чтение и изменение -Запретить доступ +Закрыть доступ Установлено Дополнительный монитор Скрыть пароль для @@ -7958,6 +7958,7 @@ Файлы изображений Выбрать другой канал и выполнить Powerwash Безопасный просмотр помогает предотвратить установку вредоносного ПО и защищает от злоумышленников, которые могут попытаться обманным путем завладеть вашей персональной информацией, например паролями, номерами телефонов и данными банковских карт. Если вы решите отключить эту функцию, будьте особенно осторожны при просмотре незнакомых сайтов. +Когда выполнен вход, вы можете использовать темы, настройки и другую информацию, сохраненную в аккаунте Google, на всех устройствах. Удерживание клавиши для автоматического повтора символа или действия Укажите, какую версию вы хотите установить. Установка обновлений и приложений diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_si.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_si.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_si.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_si.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7958,6 +7958,7 @@ පින්තූර ගොනු නාලිකාව සහ පවර්වොෂ් වෙනස් කරන්න ආරක්ෂිත බ්‍රවුස් කිරීම දුෂ්ට මෘදුකාංග ස්ථාපිත කිරීම හෝ මුරපද, දුරකථන අංක, හෝ ණය කාඩ්පත් අංක වැනි පුද්ගලික තොරතුරු හෙළි කිරීම වැනි යම් අනතුරුදායක දේ කිරීමට ඔබට උපාය කළ හැකි ප්‍රහාරකයින්ට එරෙහිව ඔබව ආරක්‍ෂා කරයි. ඔබ එය අක්‍රිය කරන්නේ නම්, නුපුරුදු හෝ අසම්භාවනීය වෙබ් අඩවි බ්‍රවුස් කරන විට පරීක්‍ෂාකාරී වන්න. +ඔබ පුරනය වී සිටින අතරේ, ඔබේ සියලු උපාංගවල ඔබේ Google ගිණුමේ සුරකින ලද තේමාවන්, සැකසීම්, සහ තවත් දේ ඔබට භාවිතා කළ හැක යතුර ස්වයංක්‍රීයව නැවත කිරීමට ඔබා අල්ලාගෙන සිටින්න ස්ථාපනය කිරීමට අවශ්‍ය හි කුමන අනුවාදය දැයි තෝරන්න. යාවත්කාලීන සහ යෙදුම් ස්ථාපන කරන්න diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_sk.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_sk.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_sk.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_sk.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -250,7 +250,7 @@ Ak chcete exportovať certifikát klienta, prihláste sa do . Váš správca nastavil predvolený motív, ktorý sa nedá zmeniť. Skryť panel s názvom -Aktivovať pre spustení +Aktivovať pri spustení &Zobraziť zdrojový kód rámu alt + kliknutie Zadané na klamlivom webe @@ -7957,6 +7957,7 @@ Súbory obrázkov Zmeniť kanál a použiť funkciu Powerwash Bezpečné prehliadanie vás chráni pred útočníkmi, ktorí vás môžu oklamať, aby ste urobili niečo nebezpečné, napríklad nainštalovali škodlivý softvér alebo odhalili osobné údaje, ako sú heslá, telefónne čísla alebo kreditné karty. Ak ho vypnete, pri prehliadaní neznámych alebo pochybných webov postupujte opatrne. +Kým máte aktívne prihlásenie, môžete používať motívy, nastavenia a ďalší obsah uložený vo vašom účte Google vo všetkých svojich zariadeniach Pridržaním znak klávesa automaticky opakovať Vyberte, ktorú verziu virtuálneho počítača chcete nainštalovať. Inštalácia aktualizácií a aplikácií @@ -8931,7 +8932,7 @@ a niekoľko ďalších aplikácií bolo zablokovaných vo vašom zariadení Otvorí stránku s nastaveniami zabezpečenia na novej karte {NUM_PASSWORDS,plural, =1{Nové heslo tohto webu}few{Nové heslá tohto webu}many{Nové heslá tohto webu}other{Nové heslá tohto webu}} -Môže čítať údaje o webe a meniť ich +Môže čítať dáta webu a meniť ich Názov skratky Aplikácie a weby s povoleným prístupom k polohe a systémové služby môžu používať vašu polohu. Ďalšie informácie skupina diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_sl.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_sl.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_sl.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_sl.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7975,6 +7975,7 @@ Slikovne datoteke Sprememba različice in Powerwash Varno brskanje vas ščiti pred napadalci, ki vas lahko z zavajanjem morda pripravijo do tega, da storite kaj nevarnega – denimo, da namestite zlonamerno programsko opremo ali razkrijete osebne podatke, na primer gesla, telefonske številke ali podatke kreditnih kartic. Če ga izklopite, bodite previdni pri brskanju po neznanih ali razvpitih spletnih mestih. +Ko ste prijavljeni, lahko v vseh napravah uporabljate teme, nastavitve in drugo, shranjeno v računu Google Pridržite za samodejno ponavljanje tipke Izberite, katero različico aplikacije želite namestiti. Namestitev posodobitev in aplikacij diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_sq.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_sq.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_sq.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_sq.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -2328,7 +2328,7 @@ U vendos orari i ri i gjumit Cakton nivelin e korrigjimit për menaxherin e lidhjes së rrjetit dhe shërbimet e tjera duke përdorur ff_debug. Rezultati i përditësimit: -{NUM_SUB_APP_INSTALLS,plural, =1{Lejet që lejon për do të lejohen edhe për këtë aplikacion. }other{Lejet që lejon për do të lejohen edhe për këto aplikacione. }} +{NUM_SUB_APP_INSTALLS,plural, =1{Lejet që jep për do të jepen edhe për këtë aplikacion. }other{Lejet që jep për do të jepen edhe për këto aplikacione. }} Kjo skedë Skedat e reja Mos lejo që sajtet të përdorin identifikuesit për të luajtur përmbajtjet e mbrojtura @@ -4528,7 +4528,7 @@ Të riparohet ""? Ke shtesa? Menaxho shtesat e tua në një vend me lehtësi. Shtyp për të fokusuar këtë flluskë dhe më pas shtype përsëri për të fokusuar elementin të cilit i drejtohet. -Lejet që lejon për do të lejohen edhe për këtë aplikacion. Menaxho +Lejet që jep për do të jepen edhe për këtë aplikacion. Menaxho Krijo një kod QR për këtë lidhje Kjo veçori duhet të aktivizohet vetëm nga zhvilluesit e uebit dhe duhet të përdoret vetëm me aplikacione të besuara. Modifiko listën e faqeshënuesve @@ -7953,6 +7953,7 @@ Skedarët e imazheve Ndërro kanalin dhe zbato Powerwash "Shfletimi i sigurt" të mbron kundër sulmuesve që mund të të mashtrojnë që të bësh diçka të rrezikshme si instalimi i softuerëve keqdashës ose të zbulosh informacion personal si fjalëkalime, numra telefoni ose karta krediti. Nëse e çaktivizon, ki kujdes kur shfleton sajte të panjohura ose pa reputacion. +Kur je i identifikuar, mund të përdorësh temat, cilësimet etj. të ruajtura në "Llogarinë tënde të Google" në të gjitha pajisjet e tua Shtyp dhe mbaj shtypur për të përsëritur automatikisht tastin Zgjidh se cilin version të do të instalosh. Instalo përditësimet dhe aplikacionet diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_sr-Latn.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_sr-Latn.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_sr-Latn.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_sr-Latn.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7954,6 +7954,7 @@ Datoteke slika Promeni kanal i obavi Powerwash Bezbedno pregledanje vas štiti od napadača koji mogu da vas navedu da uradite nešto opasno, na primer, da instalirate zlonamerni softver ili otkrijete lične podatke poput lozinki, brojeva telefona ili brojeva kreditnih kartica. Ako ga isključite, budite oprezni pri pregledanju nepoznatih ili nebezbednih sajtova. +Dok ste prijavljeni, možete da koristite teme, podešavanja i drugo sačuvano na Google nalogu na svim uređajima Pritisnite i zadržite da biste automatski ponovili taster Izaberite verziju sistema koja će se instalirati. Instalirajte ažuriranja i aplikacije diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_sr.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_sr.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_sr.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_sr.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7954,6 +7954,7 @@ Датотеке слика Промени канал и обави Powerwash Безбедно прегледање вас штити од нападача који могу да вас наведу да урадите нешто опасно, на пример, да инсталирате злонамерни софтвер или откријете личне податке попут лозинки, бројева телефона или бројева кредитних картица. Ако га искључите, будите опрезни при прегледању непознатих или небезбедних сајтова. +Док сте пријављени, можете да користите теме, подешавања и друго сачувано на Google налогу на свим уређајима Притисните и задржите да бисте аутоматски поновили тастер Изаберите верзију система која ће се инсталирати. Инсталирајте ажурирања и апликације diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_sv.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_sv.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_sv.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_sv.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7970,6 +7970,7 @@ Bildfiler Byt kanal och Powerwash Säker webbsökning skyddar dig mot angripare som kan försöka lura dig att göra något riskfyllt, till exempel installera skadlig kod eller avslöja personliga uppgifter som lösenord, telefonnummer eller kreditkortsuppgifter. Om du inaktiverar detta bör du vara försiktig när du besöker okända webbplatser. +När du är inloggad kan du använda teman, inställningar med mera som har sparats i ditt Google-konto på alla dina enheter Håll tangenten nedtryckt för att upprepa den automatiskt Välj vilken version av som ska installeras. Installera uppdateringar och appar @@ -8251,7 +8252,7 @@ Fler verkt&yg hanteras redan av . Om du vill använda föräldrakontroller med ett annat Google-konto loggar du ut efter konfigureringen och väljer Lägg till person på inloggningsskärmen. Återställ eSIM-kortet -Musknappar +Mustangenter Låt ditt barn trycka på fingeravtryckssensorn på höger sida av för att ställa in fingeravtryck. Ditt barns fingeravtrycksdata lagras på ett säkert sätt och lämnar aldrig denna . Inloggningsuppgifterna sparas på enheten när du har avslutat inkognitoläget. Du kan logga in på den här webbplatsen med enheten igen senare. Översättningsalternativ diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_sw.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_sw.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_sw.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_sw.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7965,6 +7965,7 @@ Faili za Picha Badilisha kituo na Powerwash Kipengele cha Kuvinjari Salama hukulinda dhidi ya washambulizi ambao wanaweza kukulaghai ufanye kitu hatari kama vile kusakinisha programu hasidi au kufichua taarifa binafsi kama vile manenosiri, namba za simu au kadi za mikopo. Ukikizima, kuwa makini unapovinjari tovuti zisizo za kawaida au zisizo na sifa nzuri. +Wakati umeingia katika akaunti, unaweza kutumia mandhari, mipangilio na maudhui mengine uliyohifadhi kwenye Akaunti yako ya Google katika vifaa vyako vyote Bonyeza na ushikilie ili urudie kitufe kiotomatiki Chagua toleo la la kusakinisha. Weka Programu na Masasisho diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ta.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ta.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ta.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ta.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ பட ஃபைல்கள் சேனல் மற்றும் பவர்வாஷை மாற்று தீங்கிழைக்கும் மென்பொருளை நிறுவச் செய்வது, கடவுச்சொற்கள், ஃபோன் எண்கள், கிரெடிட் கார்டு எண்கள் போன்ற தனிப்பட்ட தகவல்களைத் வெளியிடச் செய்வது உள்ளிட்ட ஆபத்தான செயல்களைச் செய்ய வைக்கக்கூடிய தீங்கிழைப்பவர்களிடமிருந்து ’பாதுகாப்பு உலாவல்’ அம்சம் உங்களைப் பாதுகாக்கும். அதை முடக்கினால், பரிச்சயமற்ற/நம்பகமற்ற தளங்களை உலாவும்போது கவனமாக இருக்கவும். +நீங்கள் உள்நுழைந்திருக்கும்போது, உங்கள் Google கணக்கில் சேமிக்கப்பட்டுள்ள தீம்கள், அமைப்புகள் மற்றும் பலவற்றை உங்கள் சாதனங்கள் எல்லாவற்றிலும் பயன்படுத்தலாம் பட்டனை அழுத்திப் பிடித்திருக்கும்போது அதை மீண்டும் மீண்டும் தானாகப் பயன்படுத்து இன் எந்தப் பதிப்பை நிறுவ வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும். புதுப்பிப்புகளையும் ஆப்ஸையும் நிறுவுதல் diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_te.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_te.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_te.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_te.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -49,7 +49,7 @@ పాస్-కీ జూమ్ చేయి: క్లిక్ కోసం ట్యాప్ చేయండి -కొత్త ఫీచర్‌లు అందుబాటులోకి వచ్చినప్పుడు, వాటిని చేర్చడం జరుగుతుంది, ఫీచర్‌లు పరికరాన్ని బట్టి మారవచ్చు. +కొత్త ఫీచర్‌లు అందుబాటులోకి వచ్చినప్పుడు, వాటిని చేర్చడం జరుగుతుంది, ఫీచర్‌లు డివైజ్‌ను బట్టి మారవచ్చు. Windows Helloలో పాస్-కీలను మేనేజ్ చేయండి ప్రివ్యూ లోడ్ అవుతోంది దయచేసి కొత్త నిబంధనలను రివ్యూ చేయండి @@ -127,7 +127,7 @@ టెక్స్ట్ కర్సర్‌తో పేజీలను నావిగేట్ చేయండి థీమ్‌ను ప్రారంభించండి మీరు ‌లో సేవ్ చేసిన మీ పాస్-కీలను చూడవచ్చు, మేనేజ్ చేయవచ్చు -పరికరాన్ని అన్‌లాక్ చేయడానికి మీ చిన్నారి PINను ఉపయోగించవచ్చు. +డివైజ్‌ను అన్‌లాక్ చేయడానికి మీ చిన్నారి PINను ఉపయోగించవచ్చు. Microsoft Internet Explorer కు స్పెల్ చెక్ నిఘంటువును డౌన్‌లోడ్ చేయడం సాధ్యపడలేదు. మళ్లీ ట్రై చేయండి. ChromeVox సెట్టింగ్‌లు @@ -332,7 +332,7 @@ మీ సెక్యూరిటీ కోడ్ మీ కార్డ్ వెనుక భాగంలో ఉంది {GROUP_COUNT,plural, =1{గ్రూప్‌ని తొలగించు}other{గ్రూప్‌లను తొలగించు}} ప్రస్తుత షెడ్యూల్ - ‌కు సెట్ చేయబడింది. సూర్యాస్తమయ, సూర్యోదయ షెడ్యూల్‌ను ఆటోమేటిక్‌గా అప్‌డేట్ చేయడానికి, సిస్టమ్ లొకేషన్ యాక్సెస్‌ను ఆన్ చేయండి. -ఆడియో అవుట్‌పుట్ పరికరాన్ని ఎంచుకోండి +ఆడియో అవుట్‌పుట్ డివైజ్‌ను ఎంచుకోండి ప్రింటర్‌లను చూడటం లేదా జోడించడంతో పాటు యాక్టివ్ ప్రింట్ టాస్క్‌లను చూడండి షార్ట్‌కట్‌లు మీ సందర్శనల ఆధారంగా నిర్వహించబడతాయి వినియోగం & విశ్లేషణల డేటాను పంపండి. సమస్య విశ్లేషణ, పరికరం, యాప్ వినియోగ డేటాను ఆటోమేటిక్‌గా Googleకు పంపడం ద్వారా మీ చిన్నారి Android అనుభవాన్ని మెరుగుపరచడంలో సహాయపడండి. ఇది మీ చిన్నారిని గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత ఏకీకృత డేటా కూడా Google యాప్‌లకు, Android డెవలపర్‌ల లాంటి భాగస్వాములకు సహాయపడుతుంది. ఈ సెట్టింగ్‌ను యజమాని సెట్ చేశారు. ఈ పరికరానికి సంబంధించిన విశ్లేషణ, వినియోగ డేటాను Googleకు పంపేలా యజమాని ఎంచుకోవచ్చు. మీ చిన్నారి కోసం అదనపు వెబ్ & యాప్ యాక్టివిటీ సెట్టింగ్‌ను ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ చేయబడవచ్చు. @@ -430,7 +430,7 @@ 16x ఆపు సపోర్ట్ చేయబడిన లింక్‌లను తెరుస్తోంది -ఈ వినియోగదారు ఖాతా, పరికరం నమోదు చేయబడిన డొమైన్‌కు చెందినది కాదు. మీరు వేరొక డొమైన్‌కు నమోదు చేయాలనుకుంటే మీరు ముందుగా పరికరాన్ని పునరుద్ధరించాలి. +ఈ యూజర్ ఖాతా డివైజ్ ఎన్‌రోల్ అయిన డొమైన్‌కు చెందినది కాదు. మీరు వేరొక డొమైన్‌కు ఎన్‌రోల్ చేయాలనుకుంటే మీరు ముందుగా డివైజ్‌ను రికవరీ చేయాలి. ‌ను బ్లాక్ చేయండి కుక్కీలు, ఇతర సైట్ డేటా ఎంచుకోబడింది @@ -447,7 +447,7 @@ {NUM_OF_FILES,plural, =1{ఫైల్‌ను తెరవడం సాధ్యపడదు}other{ఫైల్స్‌ను తెరవడం సాధ్యపడదు}} సైన్ ఇన్ చేయవద్దు ట్యాబ్ గ్రూప్ వివరాలు -పరికరాన్ని సెటప్ చేయడంలో ఏదో పొరపాటు జరిగింది +డివైజ్‌ను సెటప్ చేయడంలో ఏదో పొరపాటు జరిగింది డేటాను సేవ్ చేయడానికి సైట్‌ను అనుమతించవద్దు ఈ సైట్‌ను ఎప్పటికీ అనువదించవద్దు మీ Google Drive ఖాతాలో డేటాను స్టోరేజ్‌ చేయండి @@ -516,7 +516,7 @@ ఇప్పటి నుండి, మీ Chromebook సెక్యూరిటీ, సాఫ్ట్‌వేర్ అప్‌డేట్‌లను అందుకోదు. ఉత్తమ అనుభవం కోసం మీ Chromebookను అప్‌గ్రేడ్ చేయండి. ప్రాధాన్య ఇన్‌పుట్ విధానం పేరు -మీ పరికరాన్ని నమోదు చేయండి +మీ డివైజ్‌ను ఎన్‌రోల్ చేయండి బ్లూటూత్ పెరిఫెరల్స్ సమాచారం అలాగే డేటాను చదవండి మీ వేలిముద్రను గుర్తించలేకపోయినందున మీ సెక్యూరిటీ కీ లాక్ చేయబడింది. దానిని అన్‌లాక్ చేయడానికి, మీ పిన్‌ను ఎంటర్ చేయండి. పెయిరింగ్... @@ -549,14 +549,14 @@ అనుమతించబడింది – . ఫిజికల్ స్విచ్ ఉపయోగించి మైక్రోఫోన్‌ను ఆన్ చేయండి. ఇన్‌యాక్టివ్ ట్యాబ్‌లు కొత్త రూపాన్ని పొందుతాయి అక్షరక్రమం మరియు వ్యాకరణం -మీ పరికరాన్ని Smart Lockతో అన్‌లాక్ చేయవచ్చు. అన్‌లాక్ చేయడానికి 'ఎంటర్'ను నొక్కండి. +మీ డివైజ్‌ను Smart Lockతో అన్‌లాక్ చేయవచ్చు. అన్‌లాక్ చేయడానికి 'ఎంటర్'ను నొక్కండి. మాన్యువల్‌గా జోడించండి ఉపయోగించనిది మీ ప్రస్తుత సెషన్ యాక్టివ్‌గా ఉన్నప్పుడు మీరు మీ మునుపటి సెషన్‌ను తిరిగి కొనసాగించవచ్చు. మెషీన్‌లో సమస్య. ప్రింటర్‌ను చెక్ చేయండి USB ప్రింటర్ కోసం తప్పక కాన్ఫిగర్ చేయాలి ఎనర్జీ సేవర్ ఆన్‌లో ఉంది -మీ పరికరాన్ని సురక్షితంగా ఉంచడానికి, మీరు విశ్వసనీయ సోర్స్‌లు, డెవలపర్‌ల నుండి మాత్రమే సాఫ్ట్‌వేర్‌ను రన్ చేసి, ఇన్‌స్టాల్ చేయాలి. +మీ డివైజ్‌ను సురక్షితంగా ఉంచడానికి, మీరు విశ్వసనీయ సోర్స్‌లు, డెవలపర్‌ల నుండి మాత్రమే సాఫ్ట్‌వేర్‌ను రన్ చేసి, ఇన్‌స్టాల్ చేయాలి. కనుబొమ్మలు పైకి ఎత్తి ఉంచడం జెనరేట్ అయిన ఇమేజ్‌లు మీ ‌లో Linuxకు సపోర్ట్ లేదు. మరింత తెలుసుకోండి @@ -568,7 +568,7 @@ "" నెట్‌వర్క్‌కు అవసరమైన ప్రమాణపత్రం ఇన్‌స్టాల్ చేయబడలేదు లేదా చెల్లదు. దయచేసి కొత్త ప్రమాణపత్రాన్ని పొందండి మరియు మళ్లీ కనెక్ట్ చేయడాన్ని ప్రయత్నించండి. మీరు ప్రయాణంలో ఉన్నప్పుడు అదనపు భద్రతను జోడించండి మీరు ChromeOS Flexకి బిల్ట్-ఇన్ స్క్రీన్ రీడర్ అయిన ChromeVoxను యాక్టివేట్ చేయాలనుకుంటున్నారా? -సెటప్ పూర్తయింది! తర్వాత, వీడియో గేమ్‌ల కోసం మీ పరికరాన్ని సిద్ధం చేయండి +సెటప్ పూర్తయింది! తర్వాత, వీడియో గేమ్‌ల కోసం మీ డివైజ్‌ను సిద్ధం చేయండి సేవ్ చేసిన అడ్రస్‌లు ఇక్కడ కనిపిస్తాయి పేరు &విండో... మీ పాస్‌వర్డ్‌లలో ఒకటి డేటా ఉల్లంఘనలో కనుగొన్నట్లయితే, దాన్ని శక్తివంతమైన పాస్‌వర్డ్‌గా మార్చాలనుకుంటున్నారా అని Google Password Manager అడుగుతుంది @@ -588,7 +588,7 @@ ట్యాబ్‌లను విస్తరించండి మీ మైక్రోఫోన్ ఉపయోగించడానికి అనుమతించబడింది అప్‌డేట్‌లు పూర్తయినప్పుడు రీస్టార్ట్ అవుతుంది. -Chrome Education అప్‌గ్రేడ్ ఫీచర్‌లను ఉపయోగించడానికి మీరు ఈ పరికరాన్ని ఫ్యాక్టరీ రీసెట్ చేయవలసి ఉంటుంది. +Chrome Education అప్‌గ్రేడ్ ఫీచర్‌లను ఉపయోగించడానికి మీరు ఈ డివైజ్‌ను ఫ్యాక్టరీ రీసెట్ చేయవలసి ఉంటుంది. మీ పరికరంలో ఇన్‌స్టాల్ చేయబడిన ఫాంట్‌లను ఉపయోగించడానికి సైట్‌లకు అనుమతి ఉంది మీ ‌లో ప్రీ - ఇన్‌స్టాల్ చేయబడింది సాధారణ ట్యాబ్‌ లాగా తెరువు @@ -694,7 +694,7 @@ మాన్యువల్‌గా సైట్‌లను జోడించండి చిహ్నానికి సంబంధించిన అప్‌డేట్‌ను రివ్యూ చేయండి అధునాతన రక్షణ ప్రోగ్రామ్ ద్వారా బ్లాక్ చేయబడింది. -మీరు మీ పరికరాన్ని యాక్టివ్‌గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్‌లను అనుమతించకండి +మీరు మీ డివైజ్‌ను యాక్టివ్‌గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్‌లను అనుమతించకండి మీ పాస్‌వర్డ్‌లను, బుక్‌మార్క్‌లను, ఇంకా మరిన్నింటిని స్టోర్ చేయండి మీ ఖాతాలు మీరు మీ కాంటాక్ట్‌లలో లేని Chromebookతో షేర్ చేస్తుంటే, దానిలో సమీప షేరింగ్ విజిబిలిటీ ఫీచర్ ఆన్‌లో ఉందని నిర్ధారించుకోండి. "సమీప షేరింగ్ విజిబిలిటీ"ని ఆన్ చేయడానికి, దిగువున కుడి మూలను ఎంచుకుని, ఆపై "సమీప విజిబిలిటీ"ని ఆన్ చేయడానికి ఆప్షన్‌ను ఎంచుకోండి. మరింత తెలుసుకోండి @@ -990,7 +990,7 @@ మీ పాస్-కీలను అన్‌లాక్ చేయండి ctrl + shift + లొకేషన్‌ను గుర్తించడానికి Wi‑Fi లేదా మొబైల్ నెట్‌వర్క్‌లను ఉపయోగించండి -బ్లూటూత్ పరికరాన్ని అన్‌పెయిర్ చేయండి +బ్లూటూత్ డివైజ్‌ను అన్‌పెయిర్ చేయండి కొత్త ట్యాబ్‌లో తెరవబడుతుంది, అనుమతిని నా డ్రైవ్‌లోని మీ ఫైల్స్ ఆటోమేటిక్‌గా మీ Chromebookకు సింక్ అవుతాయి, కాబట్టి మీరు ఇంటర్నెట్ కనెక్షన్ లేకుండానే వాటిని యాక్సెస్ చేయగలరు. మీరు దీన్ని ఎప్పుడైనా సెట్టింగ్‌లు > ఫైల్స్‌లో మార్చవచ్చు. మీరు తప్పనిసరిగా ఒకే రహస్య పదబంధాన్ని రెండుసార్లు నమోదు చేయాలి @@ -1097,7 +1097,7 @@ ట్యాబ్‌లను పక్కకు తరలించండి పిన్ చేసిన ట్యాబ్‌లు ముఖ్యమైన నోడ్ అదనపు గమనిక ఫైల్స్ డౌన్‌లోడ్ చేయబడ్డాయి -మీ పరికరాన్ని సులభంగా ఉపయోగించడానికి యాక్సెస్‌ ఫీచ‌ర్‌ల‌ను ఎనేబుల్ చేయండి. మరింత తెలుసుకోండి +మీ డివైజ్‌ను సులభంగా ఉపయోగించడానికి యాక్సెసిబిలిటీ ఫీచ‌ర్‌ల‌ను ఎనేబుల్ చేయండి. మరింత తెలుసుకోండి ‌కు సంబంధించిన సైట్ డేటాను, అనుమతులను, ఇన్‌స్టాల్ చేయబడిన దాని యాప్‌ను తొలగించాలనుకుంటున్నారా? ఐసోలేటెడ్ వెబ్ యాప్ (బీటా) చివరి గంట @@ -1291,9 +1291,9 @@ షార్ట్‌కట్‌లను పిన్ చేయడానికి ట్యాప్ చేసి ఉంచండి పరికర ఆధారాలు &సవ్యదిశలో తిప్పు -ఎన్‌రోల్ చేసే ముందు, మీరు TPM‌ను క్లియర్ చేయాల్సి ఉంటుంది, తద్వారా పరికర యాజమాన్య హక్కును తీసుకోవచ్చు. - మీరు TPM పరికరాన్ని మొత్తానికి కూడా ఆఫ్ చేయవచ్చు. మీ డేటా, సాఫ్ట్‌వేర్ ఎన్‌క్రిప్షన్ ద్వారా ఇప్పటికీ భద్రంగా స్టోర్ చేయబడుతుంది, కానీ హార్డ్‌వేర్ సపోర్ట్‌ను కలిగి ఉన్న సర్టిఫికెట్‌ల వంటి కొన్ని సెక్యూరిటీ ఫీచర్‌లు డిజేబుల్ చేయబడతాయి. - సిస్టమ్ BIOS/UEFI సెట్టింగ్‌లను రీబూట్ చేయడం, ఇంకా ఎంటర్ చేయడం ద్వారా మీరు మీ TPM సెట్టింగ్‌లను మార్చవచ్చు. పరికర మోడల్ ఆధారంగా దశలు మారుతూ ఉంటాయి. మరింత సమాచారం కోసం, మీరు రీబూట్ చేసే ముందు డాక్యుమెంటేషన్‌ను వేరొక పరికరంలో తెరవండి: g.co/flex/TPMHelp. +ఎన్‌రోల్ చేసే ముందు, మీరు TPM‌ను క్లియర్ చేయాల్సి ఉంటుంది, తద్వారా డివైజ్ యాజమాన్య హక్కును తీసుకోవచ్చు. + మీరు TPM డివైజ్‌ను మొత్తానికి కూడా ఆఫ్ చేయవచ్చు. మీ డేటా, సాఫ్ట్‌వేర్ ఎన్‌క్రిప్షన్ ద్వారా ఇప్పటికీ భద్రంగా స్టోర్ చేయబడుతుంది, కానీ హార్డ్‌వేర్ సపోర్ట్‌ను కలిగి ఉన్న సర్టిఫికెట్‌ల వంటి కొన్ని సెక్యూరిటీ ఫీచర్‌లు డిజేబుల్ చేయబడతాయి. + సిస్టమ్ BIOS/UEFI సెట్టింగ్‌లను రీబూట్ చేయడం, ఇంకా ఎంటర్ చేయడం ద్వారా మీరు మీ TPM సెట్టింగ్‌లను మార్చవచ్చు. డివైజ్ మోడల్ ఆధారంగా దశలు మారుతూ ఉంటాయి. మరింత సమాచారం కోసం, మీరు రీబూట్ చేసే ముందు డాక్యుమెంటేషన్‌ను వేరొక డివైజ్‌లో తెరవండి: g.co/flex/TPMHelp. ఈ ట్యాబ్‌కు ‌ను షేర్ చేయండి ప్రసారాన్ని ఆపివేయి లొకేష‌న్‌ను జోడించండి... @@ -1368,7 +1368,7 @@ కొన్ని Thunderbolt లేదా USB4 యాక్సెసరీలు సరిగ్గా పని చేయడానికి మెమరీ యాక్సెస్ అవసరం. మూసిన గ్రూప్‌ను మళ్లీ తెరువు Chrome ఆటోమేటిక్‌ పరీక్ష సాఫ్ట్‌వేర్ ద్వారా నియంత్రించబడుతోంది -మీరు ఖచ్చితంగా ఈ పరికరాన్ని శాశ్వతంగా కియోస్క్ మోడ్‌లో ఉంచాలనుకుంటున్నారా? +మీరు ఖచ్చితంగా ఈ డివైజ్‌ను శాశ్వతంగా కియోస్క్ మోడ్‌లో ఉంచాలనుకుంటున్నారా? స్వాగతం! మల్టిపుల్ ఇమేజ్‌లను సెర్చ్ చేయడం సాధ్యం కాదు. ఒకసారికి ఒక ఇమేజ్‌ను జోడించండి. Chrome for Testing v ఆటోమేటిక్ టెస్టింగ్ కోసం మాత్రమే. సాధారణ బ్రౌజింగ్ కోసం, ఆటోమేటిక్‌గా అప్‌డేట్ అయ్యే స్టాండర్డ్ Chrome వెర్షన్‌ను ఉపయోగించండి. @@ -1474,15 +1474,15 @@ భద్రతా పరికరానికి సైన్ ఇన్ చేయండి ఎక్కువ మెమరీ సేవింగ్స్ మీ ను అన్‌లాక్ చేయడానికి మీ ఫోన్‌ను సమీపంలోకి తీసుకురండి. -మీ పరికరాలను మీ సంస్థలో ఎన్‌రోల్ చేస్తే, ఒకే చోట నుండి మీ పరికరాలన్నింటినీ మేనేజ్ చేసే వీలు ఏర్పడుతుంది. మీ సంస్థ, పలు కారణాలను దృష్టిలో ఉంచుకొని ఎన్‌రోల్ చేసుకోమని కోరవచ్చు: +మీ డివైజ్‌లను మీ ఆర్గనైజేషన్‌లో ఎన్‌రోల్ చేస్తే, ఒకే చోట నుండి మీ డివైజ్‌లన్నింటినీ మేనేజ్ చేసే వీలు ఏర్పడుతుంది. మీ ఆర్గనైజేషన్, పలు కారణాలను దృష్టిలో ఉంచుకొని ఎన్‌రోల్ చేసుకోమని కోరవచ్చు: సెక్యూరిటీ మెరుగవుతుంది - అదనపు సెక్యూరిటీ సెట్టింగ్‌లను కాన్ఫిగర్ చేయడం ద్వారా, యూజర్‌ల డేటాను, పరికరాల డేటాను సంస్థ సురక్షితంగా ఉంచగలదు. రిమోట్‌గా రీసెట్ చేయడం లేదా పోయిన పరికరాన్ని డిజేబుల్ చేయడం వంటి పనులు కూడా మీ సంస్థ చేయగలదు. + అదనపు సెక్యూరిటీ సెట్టింగ్‌లను కాన్ఫిగర్ చేయడం ద్వారా, యూజర్‌ల డేటాను, డివైజ్ డేటాను ఆర్గనైజేషన్ సురక్షితంగా ఉంచగలదు. రిమోట్‌గా రీసెట్ చేయడం లేదా పోయిన డివైజ్‌ను డిజేబుల్ చేయడం వంటి పనులు కూడా మీ ఆర్గనైజేషన్ చేయగలదు. ఎక్స్‌పీరియన్స్‌ను అనుకూలంగా మార్చవచ్చు - బూటప్ అయ్యాక, లాగిన్ స్క్రీన్ లోడ్ అయినప్పుడు, లాగిన్ అయ్యాక పరికరం ఏమి చేయాలి అనేది సంస్థ అవసరాలకు అనుగుణంగా అనుకూలంగా మార్చవచ్చు. + బూటప్ అయ్యాక, లాగిన్ స్క్రీన్ లోడ్ అయినప్పుడు, లాగిన్ అయ్యాక డివైజ్ ఏమి చేయాలి అనేది ఆర్గనైజేషన్ అవసరాలకు అనుగుణంగా అనుకూలంగా మార్చవచ్చు. సపోర్ట్ అందుతుంది - పరిష్కార ప్రక్రియను అందించడానికి, పరికర సెషన్‌ను సంస్థ రిమోట్‌గా యాక్సెస్ చేయగలదు. + పరిష్కార ప్రక్రియను అందించడానికి, డివైజ్ సెషన్‌‌ను ఆర్గనైజేషన్ రిమోట్‌గా యాక్సెస్ చేయగలదు. యాక్సెస్ ఎనేబుల్ అవుతుంది - సంస్థకు చెందిన యాప్‌లు, సర్వీస్‌లు, నెట్‌వర్క్‌లు ఎన్‌రోల్ అయిన పరికరాలలో మాత్రమే అందుబాటులో ఉండే అవకాశం ఉంది. + ఆర్గనైజేషన్‌కు చెందిన యాప్‌లు, సర్వీస్‌లు, నెట్‌వర్క్‌లు ఎన్‌రోల్ అయిన డివైజ్‌లలో మాత్రమే అందుబాటులో ఉండే అవకాశం ఉంది. ఈ ఫీచర్‌ను ఆఫ్ చేయడం వలన సిస్టమ్ అప్‌డేట్‌లు, భద్రత లాంటి ముఖ్యమైన సర్వీస్‌లకు అవసరమైన సమాచారాన్ని పంపగల ఈ పరికర సామర్థ్యం ప్రభావితం కాదు. మీరు పాత వెర్షన్ ఉన్న ఛానెల్‌కు మారుతున్నారు. ఈ ఛానెల్ వెర్షన్, మీ పరికరంలో ప్రస్తుతం ఇన్‌స్టాల్ అయిన వెర్షన్‌కు సరిపోలినప్పుడు ఛానెల్ మార్పు వర్తిస్తుంది. మీరు చేర్చాలనుకుంటున్న వ్యక్తిగత సమాచారాన్ని మాన్యువల్‌గా ఎంచుకోండి @@ -1640,15 +1640,15 @@ ధ్వని డీబగ్గింగ్ ఫీచర్‌లు - మీరు మీ పరికరంలో అనుకూల కోడ్‌ను ఇన్‌స్టాల్ చేసి, టెస్ట్ చేయడానికి మీ ChromeOS పరికరంలో డీబగ్గింగ్ ఫీచర్‌లను ఎనేబుల్ చేయవచ్చు. ఇది వీటిని చేయడానికి మిమ్మల్ని అనుమతిస్తుంది: + మీరు మీ డివైజ్‌లో అనుకూల కోడ్‌ను ఇన్‌స్టాల్ చేసి, టెస్ట్ చేయడానికి మీ ChromeOS డివైజ్‌లో డీబగ్గింగ్ ఫీచర్‌లను ఎనేబుల్ చేయవచ్చు. ఇది వీటిని చేయడానికి మిమ్మల్ని అనుమతిస్తుంది: rootfs వెరిఫికేషన్‌ను తీసివేయడానికి, తద్వారా మీరు OS ఫైల్స్‌ను ఎడిట్ చేయవచ్చు - స్టాండర్డ్ టెస్ట్ 'కీ'లను ఉపయోగించి పరికరానికి SSH యాక్సెస్‌ను ఎనేబుల్ చేయడానికి, తద్వారా మీరు పరికరాన్ని యాక్సెస్ చేయడానికి 'cros flash' వంటి టూల్స్‌ను ఉపయోగించవచ్చు + స్టాండర్డ్ టెస్ట్ 'కీ'లను ఉపయోగించి డివైజ్‌కు SSH యాక్సెస్‌ను ఎనేబుల్ చేయడానికి, తద్వారా మీరు డివైజ్‌ను యాక్సెస్ చేయడానికి 'cros flash' వంటి టూల్స్‌ను ఉపయోగించవచ్చు USB నుండి బూట్ చేయడాన్ని ఎనేబుల్ చేయడానికి, తద్వారా మీరు USB డిస్క్ నుండి OS ఇమేజ్‌ను ఇన్‌స్టాల్ చేయవచ్చు - డెవలపర్ అలాగే సిస్టమ్ రూట్ లాగిన్ పాస్‌వర్డ్ రెండింటినీ అనుకూల విలువకు సెట్ చేయడానికి, తద్వారా మీరు పరికరంలోకి మాన్యువల్‌గా SSH చేయవచ్చు + డెవలపర్ అలాగే సిస్టమ్ రూట్ లాగిన్ పాస్‌వర్డ్ రెండింటినీ అనుకూల విలువకు సెట్ చేయడానికి, తద్వారా మీరు డివైజ్‌లో మాన్యువల్‌గా SSH చేయవచ్చు - ఎనేబుల్ చేసిన తర్వాత, ఎంటర్‌ప్రైజ్ మేనేజ్ చేసే పరికరంలో డేటాను పవర్‌వాష్ చేసిన తర్వాత లేదా పూర్తిగా తొలగించిన తర్వాత కూడా చాలా వరకు డీబగ్గింగ్ ఫీచర్‌లు ఎనేబుల్ చేయబడి ఉంటాయి. అన్ని డీబగ్గింగ్ ఫీచర్‌లను పూర్తిగా డిజేబుల్ చేయడానికి, ChromeOS రికవరీ ప్రాసెస్‌ను పూర్తి చేయండి (https://support.google.com/chromebook/answer/1080595). + ఎనేబుల్ చేసిన తర్వాత, ఎంటర్‌ప్రైజ్ మేనేజ్ చేసే డివైజ్‌లో డేటాను పవర్‌వాష్ చేసిన తర్వాత లేదా పూర్తిగా తొలగించిన తర్వాత కూడా చాలా వరకు డీబగ్గింగ్ ఫీచర్‌లు ఎనేబుల్ చేయబడి ఉంటాయి. అన్ని డీబగ్గింగ్ ఫీచర్‌లను పూర్తిగా డిజేబుల్ చేయడానికి, ChromeOS రికవరీ ప్రాసెస్‌ను పూర్తి చేయండి (https://support.google.com/chromebook/answer/1080595). డీబగ్గింగ్ ఫీచర్‌ల గురించిన మరింత సమాచారం కోసం ఇక్కడ చూడండి: @@ -1679,7 +1679,7 @@ ట్యాబ్‌ను పిన్ చేయి ఫైల్‌ను &తెరువు... అధికార సమాచార యాక్సెస్‌ -ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు, రీబూట్ చేయడం అవసరం. దయచేసి మీ పరికరాన్ని రీస్టార్ట్ చేసి, మళ్లీ ట్రై చేయండి. ఎర్రర్ కోడ్ . +ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు, రీబూట్ చేయడం అవసరం. దయచేసి మీ డివైజ్‌ను రీస్టార్ట్ చేసి, మళ్లీ ట్రై చేయండి. ఎర్రర్ కోడ్ . &ఫ్రేమ్‌ను మళ్లీ లోడ్ చేయి ఎలాంటి SIM కార్డ్ ఇన్‌సర్ట్ చేయబడలేదు ఈ డివైజ్‌లో ఇతర యాప్‌లను, సర్వీస్‌లను యాక్సెస్ చేయడానికి సైట్‌లను అనుమతించవద్దు @@ -1698,7 +1698,7 @@ సింక్‌ను మీ నిర్వాహకులు నిలిపివేశారు. తక్కువ-పవర్ గల ఛార్జర్ తరచుదనం స్థితి అధీన శాతం -మీ సెల్యులార్ పరికరాన్ని సెటప్ చేయడానికి సిద్ధం చేస్తోంది... +మీ సెల్యులార్ డివైజ్‌ను సెటప్ చేయడానికి సిద్ధం చేస్తోంది... పసుపు రంగులో ప్రకాశవంతంగా కనిపిస్తూ ఉన్న పచ్చిక మైదానం లోతైన ఆలోచనల్లో మునిగిపోయేలా చేస్తోంది, దాని తాలూకు ఒక చక్కని ఆయిల్ పెయింటింగ్. ఎక్స్‌టెన్షన్‌ల నుండి ""ను అనుమతించనందున దీన్ని ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు "" @@ -1869,7 +1869,7 @@ Google నుండి చిత్ర వివరణలను పొందాలా? మీ పరికరం మీ సంస్థ ద్వారా మేనేజ్ చేయబడుతుంది. వాయిస్ ప్రివ్యూ -మీ పరికరాన్ని శానిటైజ్ చేయండి +మీ డివైజ్‌ను శానిటైజ్ చేయండి ట్యాబ్ చేసిన విండో లాగా తెరువు ఉదా. 1-5, 8, 11-13 మీకు యాడ్‌లను చూపడం కోసం సైట్‌లు ఉపయోగించిన సమాచారాన్ని అనుకూలంగా మార్చవచ్చు @@ -1962,15 +1962,15 @@ షేర్ చేసిన ట్యాబ్ డీబగ్గింగ్ ఫీచర్‌లు - మీరు మీ పరికరంలో అనుకూల కోడ్‌ను ఇన్‌స్టాల్ చేసి, టెస్ట్ చేయడానికి మీ ChromeOS Flex పరికరంలో డీబగ్గింగ్ ఫీచర్‌లను ఎనేబుల్ చేయవచ్చు. ఇది వీటిని చేయడానికి మిమ్మల్ని అనుమతిస్తుంది: + మీరు మీ డివైజ్‌లో అనుకూల కోడ్‌ను ఇన్‌స్టాల్ చేసి, టెస్ట్ చేయడానికి మీ ChromeOS Flex డివైజ్‌లో డీబగ్గింగ్ ఫీచర్‌లను ఎనేబుల్ చేయవచ్చు. ఇది వీటిని చేయడానికి మిమ్మల్ని అనుమతిస్తుంది: rootfs వెరిఫికేషన్‌ను తీసివేయడానికి, తద్వారా మీరు OS ఫైల్స్‌ను ఎడిట్ చేయవచ్చు - స్టాండర్డ్ టెస్ట్ 'కీ'లను ఉపయోగించి పరికరానికి SSH యాక్సెస్‌ను ఎనేబుల్ చేయడానికి, తద్వారా మీరు పరికరాన్ని యాక్సెస్ చేయడానికి 'cros flash' వంటి టూల్స్‌ను ఉపయోగించవచ్చు - USB నుండి బూట్ చేయడాన్ని ఎనేబుల్ చేయడానికి, తద్వారా మీరు USB డ్రైవర్ నుండి OS ఇమేజ్‌ను ఇన్‌స్టాల్ చేయవచ్చు - డెవలపర్ అలాగే సిస్టమ్ రూట్ లాగిన్ పాస్‌వర్డ్ రెండింటినీ అనుకూల విలువకు సెట్ చేయడానికి, తద్వారా మీరు పరికరంలోకి మాన్యువల్‌గా SSH చేయవచ్చు + స్టాండర్డ్ టెస్ట్ 'కీ'లను ఉపయోగించి డివైజ్‌కు SSH యాక్సెస్‌ను ఎనేబుల్ చేయడానికి, తద్వారా మీరు డివైజ్‌ను యాక్సెస్ చేయడానికి 'cros flash' వంటి టూల్స్‌ను ఉపయోగించవచ్చు + USB నుండి బూట్ చేయడాన్ని ఎనేబుల్ చేయడానికి, తద్వారా మీరు USB డ్రైవ్ నుండి OS ఇమేజ్‌ను ఇన్‌స్టాల్ చేయవచ్చు + డెవలపర్ అలాగే సిస్టమ్ రూట్ లాగిన్ పాస్‌వర్డ్ రెండింటినీ అనుకూల విలువకు సెట్ చేయడానికి, తద్వారా మీరు డివైజ్‌లో మాన్యువల్‌గా SSH చేయవచ్చు - ఎనేబుల్ చేసిన తర్వాత, ఎంటర్‌ప్రైజ్ నిర్వహించే పరికరంలో డేటాను పవర్‌వాష్ చేసిన తర్వాత లేదా పూర్తిగా తొలగించిన తర్వాత కూడా చాలా వరకు డీబగ్గింగ్ ఫీచర్‌లు ఎనేబుల్ చేయబడి ఉంటాయి. అన్ని డీబగ్గింగ్ ఫీచర్‌లను పూర్తిగా డిజేబుల్ చేయడానికి, ChromeOS రికవరీ ప్రాసెస్‌ను పూర్తి చేయండి (https://support.google.com/chromebook/answer/1080595). + ఎనేబుల్ చేసిన తర్వాత, ఎంటర్‌ప్రైజ్ మేనేజ్ చేసే డివైజ్‌లో డేటాను పవర్‌వాష్ చేసిన తర్వాత లేదా పూర్తిగా తొలగించిన తర్వాత కూడా చాలా వరకు డీబగ్గింగ్ ఫీచర్‌లు ఎనేబుల్ చేయబడి ఉంటాయి. అన్ని డీబగ్గింగ్ ఫీచర్‌లను పూర్తిగా డిజేబుల్ చేయడానికి, ChromeOS రికవరీ ప్రాసెస్‌ను పూర్తి చేయండి (https://support.google.com/chromebook/answer/1080595). డీబగ్గింగ్ ఫీచర్‌ల గురించి మరింత సమాచారం కోసం ఇక్కడ చూడండి: @@ -2011,7 +2011,7 @@ లో వ అక్షరాన్ని ఎంటర్ చేయండి మీ PINను రీసెట్ చేయండి అందరూ వెంటనే "" ట్యాబ్ గ్రూప్‌నకు యాక్సెస్‌ను కోల్పోతారు, అలాగే అన్ని ఆహ్వాన లింక్‌లు ఆఫ్ చేయబడతాయి -ను ఉపయోగించడానికి దయచేసి మీ పరికరాన్ని రీస్టార్ట్ చేయండి. +ను ఉపయోగించడానికి దయచేసి మీ డివైజ్‌ను రీస్టార్ట్ చేయండి. మీ బుక్‌మార్క్‌లు, హిస్టరీ, పాస్‌వర్డ్‌లు, ఇతర సెట్టింగ్‌లను మీ అన్ని పరికరాలలో పొందడానికి సైన్ ఇన్ చేయండి. ఈ సైట్ రీడ్ చేయగల ఫైల్స్‌ను ఎంచుకోండి ‌కు సేవ్ చేసిన పరికరాలను లోడ్ చేయడం సాధ్యం కాదు. మీ ఇంటర్నెట్ కనెక్షన్‌ను చెక్ చేసి, మళ్లీ ట్రై చేయండి. @@ -2028,7 +2028,7 @@ ఈ సైట్‌ను చదవడానికి, మార్చడానికి ‌కు అనుమతినివ్వండి ను సురక్షితంగా డౌన్‌లోడ్ చేయడం సాధ్యం కాదు వెర్షన్ అన్‌ఇన్‌స్టాల్ అయింది, కారణం: -ఈ పరికరాన్ని అన్‌లాక్ చేయడానికి మీ చిన్నారి పాస్‌వర్డ్‌కు బదులుగా నంబర్ (PIN)ను ఉపయోగించవచ్చు. PINను సెట్ చేయడానికి, సెట్టింగ్‌లకు వెళ్లండి. +ఈ డివైజ్‌ను అన్‌లాక్ చేయడానికి మీ చిన్నారి పాస్‌వర్డ్‌కు బదులుగా నంబర్ (PIN)ను ఉపయోగించవచ్చు. PINను సెట్ చేయడానికి, సెట్టింగ్‌లకు వెళ్లండి. సున్నితత్వం ‌లో ఎక్స్‌టెన్షన్‌లు అనుమతించబడవు రాకీ మౌంటైన్స్ నేషనల్ పార్క్ @@ -2058,7 +2058,7 @@ ‌లో అనుమతించడానికి క్లిక్ చేయండి: Linux యాప్‌లు ప్రతిస్పందించకపోవచ్చు. 'సాధనాలు' మెనూలోని ఎక్స్‌టెన్షన్‌లను క్లిక్ చేయడం ద్వారా మీ ఎక్స్‌టెన్షన్‌లను నిర్వహించండి. -బ్లూటూత్ పరికరాన్ని కనెక్ట్ చేయండి +బ్లూటూత్ డివైజ్‌ను కనెక్ట్ చేయండి కొనసాగించండి ఎక్స్‌టెన్షన్‌లు, థీమ్‌లతో మీ బ్రౌజర్‌ను మెరుగుపరుచుకోండి పేజీ సారాంశం, సంబంధిత సెర్చ్‌లు, అలాగే ఈ పేజీ వివరాల గురించిన ఇతర ఉపయోగకరమైన సమాచారాన్ని పొందడానికి, టూల్‌బార్‌లోని Google Search సైడ్ ప్యానెల్ బటన్‌ను ఎంచుకోండి @@ -2103,7 +2103,7 @@ మీ ఎంటర్‌ప్రైజ్ నిర్వహణ కోసం విజయవంతంగా నమోదు చేయబడింది, కానీ దాని లక్షణ మరియు స్థాన సమాచారాన్ని పంపడంలో విఫలమైంది. దయచేసి ఈ పరికరం కోసం ఈ సమాచారాన్ని మీ నిర్వాహక కన్సోల్ నుండి మాన్యువల్‌గా నమోదు చేయండి. హిస్టరీని సింక్ చేయాలా? 4 అంకెల పిన్ (0000-9999) నమోదు చేయండి -మీ పరికరాన్ని పవర్‌వాష్ చేయడం ద్వారా మీ eSIM ప్రొఫైళ్లు తీసివేయబడవు. ఈ ప్రొఫైళ్లను మాన్యువల్‌గా తీసివేయడానికి మొబైల్ సెట్టింగ్‌లకు వెళ్ళండి. +మీ డివైజ్‌ను పవర్‌వాష్ చేయడం ద్వారా మీ eSIM ప్రొఫైళ్లు తీసివేయబడవు. ఈ ప్రొఫైళ్లను మాన్యువల్‌గా తీసివేయడానికి మొబైల్ సెట్టింగ్‌లకు వెళ్ళండి. నోటిఫికేషన్‌లు ఆన్ చేయబడ్డాయి 'సెక్యూరిటీ కీ' సైన్-ఇన్ డేటా మీడియా నియంత్రణలు @@ -2152,7 +2152,7 @@ ఐసోలేటెడ్ వెబ్ యాప్‌లు వాటికి యాక్సెస్ చేయగల ప్రామాణీకరణ డివైజ్‌లను, స్మార్ట్ కార్డ్‌లను కంట్రోల్ చేస్తాయి. స్మార్ట్ కార్డులు సాధారణంగా మిమ్మల్ని ప్రామాణీకరించడానికి ఉపయోగించే ఐడెంటిఫయర్‌లను కలిగి ఉంటాయి. పేజీని స్వీయ రీఫ్రెష్ చేయడానికి URLలో ప్రశ్న పరామితిని జోడించండి: chrome://network/?refresh=<sec> కనిపించే తీరు -పరికరాన్ని మాత్రం అన్‌లాక్ చేయండి +డివైజ్‌ను మాత్రమే అన్‌లాక్ చేయండి ప్రింటర్‌ను సెటప్ చేయలేకపోయింది. దయచేసి కాన్ఫిగరేషన్‌ను సరిచూసుకుని, ఆపై మళ్లీ ట్రై చేయండి. మీతో ఎవరు షేర్ చేయవచ్చో ఎంచుకోండి మీరు ఇప్పుడు మీ ఫోన్ యాప్‌లను చూడవచ్చు @@ -2171,7 +2171,7 @@ డిఫాల్ట్‌లకు రీసెట్ చేయండి అడ్రస్‌ చెల్లదు. దయచేసి అడ్రస్‌ను చెక్ చేసి, ఆపై మళ్లీ ట్రై చేయండి. వచన నీడ -ఐడెంటిఫయర్‌‌ను ఉపయోగించి సైట్‌లు మీ పరికరాన్ని గుర్తించాల్సిన అవసరం కూడా ఉంది +ఐడెంటిఫయర్‌‌ను ఉపయోగించి సైట్‌లు మీ డివైజ్‌ను గుర్తించాల్సిన అవసరం కూడా ఉంది ఎడమ వైపునకు ట్యాబ్‌లను మూసివేయండి మీరు ఎక్కడైతే ఆపి వేశారో అక్కడ నుండే సులభంగా కొనసాగించండి ఎక్స్‌టెన్ష‌న్‌ మూలం డైరెక్టరీ అవసరం. @@ -2514,7 +2514,7 @@ Chrome వెబ్ స్టోర్ నుండి ఒకే రకమైన ఎక్స్‌టెన్షన్‌లతో దాన్ని తీసివేయండి లేదా రీప్లేస్ చేయండి ను తెరవడం సాధ్యపడలేదు ఆన్ చేసి, ఇతర డివైజ్‌లలోని మీ బ్రౌజింగ్ హిస్టరీని, ట్యాబ్‌లను పొందండి -డౌన్‌లోడ్ చేసిన ఫైల్స్‌ను ఈ పరికరాన్ని ఉపయోగించే ఎవరైనా చూడగలరు +డౌన్‌లోడ్ చేసిన ఫైల్స్‌ను ఈ డివైజ్‌ను ఉపయోగించే ఎవరైనా చూడగలరు ఒక Chrome ట్యాబ్‌ను షేర్ చేస్తోంది. Chrome మీ పాస్‌వర్డ్‌లలో ఒక దానిని పబ్లిక్ డేటా ఉల్లంఘనలో కనుగొంటే, Google Password Manager, మీరు సైన్ ఇన్ చేసి ఉన్నట్లయితే, మీ పాస్‌వర్డ్‌ను మార్చుకునే అవకాశాన్ని ఇవ్వగలదు. ఆటోమేటెడ్ పాస్‌వర్డ్ మార్పు గురించి మరింత సమాచారం తక్కువ యానిమేషన్‌లు @@ -2561,7 +2561,7 @@ కాపీ అయింది టచ్‌ప్యాడ్ వేగం ఇది కనిపించినట్లయితే, స్క్రీన్ దిగువకు స్క్రోల్ చేసి, తక్షణ టెథెరింగ్‌ను ఆన్ చేయండి. ఇది కనిపించకుంటే, మీరు మొత్తం సెట్ చేసినట్లే. -Google Drive‌కు బ్యాకప్ చేయండి. ఏ సమయంలో అయినా సులభంగా డేటాను రీస్టోర్ చేయండి లేదా పరికరాన్ని మార్చండి. ఈ బ్యాకప్‌లో యాప్ డేటా ఉంటుంది. బ్యాకప్‌లు Googleకు అప్‌లోడ్ చేయబడతాయి, అలాగే మీ చిన్నారి Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ చేయబడతాయి. బ్యాకప్ గురించి మరింత తెలుసుకోండిమరింత తెలుసుకోండి +Google Drive‌కు బ్యాకప్ చేయండి. ఏ సమయంలో అయినా సులభంగా డేటాను రీస్టోర్ చేయండి లేదా డివైజ్‌ను స్విచ్ చేయండి. ఈ బ్యాకప్‌లో యాప్ డేటా ఉంటుంది. అలాగే మీ చిన్నారి Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి బ్యాకప్‌లు Googleకు అప్‌లోడ్ చేయబడతాయి, ఎన్‌క్రిప్ట్ చేయబడతాయి. బ్యాకప్ గురించి మరింత తెలుసుకోండిమరింత తెలుసుకోండి Up LBS పాలసీలను ఎగుమతి చేయండి మొత్తం సగటు @@ -2585,7 +2585,7 @@ చిత్రం కోసం లో &శోధించండి Microsoft Edge పర్యవేక్షిత వినియోగదారులను మీ నిర్వాహకులు నిలిపివేశారు. -మీ పరికరం లో షట్ డౌన్ అవుతుంది. మీ పరికరాన్ని తిరిగి ఆన్ చేయడానికి ముందే USBని తీసివేయండి. తర్వాత మీరు ను ఉపయోగించడం ప్రారంభించవచ్చు. +మీ డివైజ్ లో షట్ డౌన్ అవుతుంది. మీ డివైజ్‌ను తిరిగి ఆన్ చేయడానికి ముందే USBని తీసివేయండి. తర్వాత మీరు ను ఉపయోగించడం ప్రారంభించవచ్చు. ID: గెస్ట్ ప్రొఫైల్‌ను తెరవండి సిట్రాన్ @@ -2612,7 +2612,7 @@ ఈ పేజీ మీ కెమెరాను యాక్సెస్‌ చేస్తోంది. మూసివేయబడిన విండోను మళ్లీ తె&రవండి దయచేసి వేచి ఉండండి... -మీరు మీ పరికరాన్ని పునఃప్రారంభించే తర్వాతిసారి, మీ నిర్వాహకుడు వ‌న్‌-టైమ్ అప్‌డేట్‌ను అమలు చేస్తారు, దీని వలన మీ స్థానిక డేటా తొలగించబడుతుంది. +మీరు మీ డివైజ్‌ను రీస్టార్ట్ చేస్తే తర్వాతిసారి, మీ అడ్మినిస్ట్రేటర్ వ‌న్‌-టైమ్ అప్‌డేట్‌ను అమలు చేస్తారు, దీని వలన మీ లోకల్ డేటా తొలగించబడుతుంది. లో వ అదనపు కంటెంట్ 'బాగుంది' ఆప్షన్ మీకు నచ్చిన ఫలితాలను సమర్పిస్తుంది. తేలికపాటి నేపథ్యం @@ -2687,7 +2687,7 @@ లెగసీ బ్రౌజర్ మద్దతు మేధోసంపత్తి వేలిముద్రలను ఎడిట్ చేయండి -{NUM_CONNECTION,plural, =0{"" ఎక్స్‌టెన్షన్ పరికరాలను గతంలో యాక్సెస్ చేసింది}=1{"" ఎక్స్‌టెన్షన్ {0} పరికరాన్ని యాక్సెస్ చేస్తోంది}other{"" ఎక్స్‌టెన్షన్ {0} పరికరాలను యాక్సెస్ చేస్తోంది}} +{NUM_CONNECTION,plural, =0{"" ఎక్స్‌టెన్షన్ డివైజ్‌లను గతంలో యాక్సెస్ చేసింది}=1{"" ఎక్స్‌టెన్షన్ {0} డివైజ్‌ను యాక్సెస్ చేస్తోంది}other{"" ఎక్స్‌టెన్షన్ {0} డివైజ్‌లను యాక్సెస్ చేస్తోంది}} {NUM_APPS,plural, =1{సపోర్ట్ చేయని 1 యాప్‌ను తీసివేయండి}other{సపోర్ట్ చేయని # యాప్‌లను తీసివేయండి}} సైట్‌లు చూడండి పరికర పేరును మార్చండి @@ -2811,7 +2811,7 @@ మీ ప్రొఫైల్ చిత్రాన్ని సెట్ చేయండి యాక్సెంట్ మార్క్‌లను, ప్రత్యేక అక్షరాలను చూడటానికి కీబోర్డ్ కీలను నొక్కి, పట్టుకోండి. అక్షరాల కీలను రిపీట్ చేసే ఆప్షన్‌ను ఇది ఆఫ్ చేస్తుంది. ఇంగ్లీష్ (US)లో మాత్రమే ఇది అందుబాటులో ఉంది. ప్రస్తుతం స్క్రీన్‌పై ఉన్న ప్రోగ్రామ్‌ల స్క్రీన్‌షాట్ -సపోర్ట్ ఉన్న భాషలకు ఆటోమేటిక్‌గా క్యాప్షన్‌లను క్రియేట్ చేస్తుంది. ఆడియో మీ పరికరాన్ని దాటి వెళ్లదు. +సపోర్ట్ ఉన్న భాషలకు ఆటోమేటిక్‌గా క్యాప్షన్‌లను క్రియేట్ చేస్తుంది. ఆడియో మీ డివైజ్‌ను దాటి వెళ్లదు. పవర్ మూలాలను చెక్ చేస్తోంది... పిన్ చేసిన ట్యాబ్ లాగా తెరువు ఈ ఎక్స్‌టెన్షన్ చాలా పాతది, బిజినెస్ విధానం కారణంగా నిలిపివేయబడింది. అయితే, కొత్త వెర్షన్ అందుబాటులో ఉన్నప్పుడు ఇది ఆటోమేటిక్‌గా ప్రారంభించబడవచ్చు. @@ -2848,7 +2848,7 @@ సమస్యలు ఏవీ కనుగొనబడలేదు దీనితో లింక్ తెరువు... ప్రస్తుతం సైట్‌లు ఏవీ అందుబాటులో లేవు. ఈ లిస్ట్‌కు జోడించడానికి సైట్‌కు వెళ్లండి. -కు సైన్ ఇన్ చేయడానికి మీ పరికరాన్ని ఉపయోగించాలా? +కు సైన్ ఇన్ చేయడానికి మీ డివైజ్‌ను ఉపయోగించాలా? ఆటోమేటిక్ బ్రౌజర్ శోధన, ఇతర Google సేవలను వ్యక్తిగతీకరించడానికి Google మీ హిస్టరీని ఉపయోగించే అవకాశం ఉంటుంది వీక్షణలను రివర్స్ చేయండి @@ -2890,7 +2890,7 @@ ఫారమ్ ఫీల్డ్‌ల లాగా వెబ్‌పేజీ హైలైట్‌ల లింక్‌లపై ట్యాబ్‌ను నొక్కడం ఎక్స్‌టెన్షన్‌లను వెతకండి సెట్టింగ్‌లకు వెళ్ళు -ఈ పరికరాన్ని మీ ఖాతా చెందిన సంస్థకు ఎన్‌రోల్ చేయడం సాధ్యపడదు, ఎందుకంటే నిర్వహణ కోసం పరికరం వేరే సంస్థ ద్వారా మార్క్ చేయబడింది. +ఈ డివైజ్‌ను మీ ఖాతా చెందిన ఆర్గనైజేషన్‌కు ఎన్‌రోల్ చేయడం సాధ్యపడదు, ఎందుకంటే మేనేజ్‌మెంట్ కోసం డివైజ్ వేరే ఆర్గనైజేషన్ ద్వారా మార్క్ చేయబడింది. కుడి వైపు వీక్షణలో లింక్‌ను తెరవండి ప్రోటోకాల్‌లను హ్యాండిల్ చేయడానికి అనుమతించబడలేదు దయచేసి మీ స్థానిక డేటాను రక్షించడానికి పాస్‌వర్డ్‌ను క్రియేట్ చేయండి. @@ -3235,7 +3235,7 @@ లేత గోధుమరంగు VPN ప్రాధాన్యతలు అన్ని భాషలు -మీ సంస్థ యూనిట్ దాని ప్రారంభ ఎన్‌రోల్‌మెంట్ పరిమితిని చేరుకున్నందున ఈ పరికరాన్ని ప్రస్తుతం ఎన్‌రోల్ చేయడం సాధ్యం కాదు. సహాయం కోసం మీ అడ్మినిస్ట్రేటర్‌ను సంప్రదించండి. +మీ సంస్థ యూనిట్ దాని ప్రారంభ ఎన్‌రోల్‌మెంట్ పరిమితిని చేరుకున్నందున ఈ డివైజ్‌ను ప్రస్తుతం ఎన్‌రోల్ చేయడం సాధ్యం కాదు. సహాయం కోసం మీ అడ్మినిస్ట్రేటర్‌ను సంప్రదించండి. పాఠశాల ఖాతా సర్టిఫికెట్ పాస్‌వర్డ్‌ను ఎంటర్ చేయండి నుండి తెలియని ఉత్పత్తి @@ -3260,7 +3260,7 @@ వచన ఫాంట్ దవడను ఎడమవైపుకు కదల్చడం సింక్‌ను ఆన్ చేయి -సురక్షిత బ్రౌజింగ్ (ప్రమాదకరమైన సైట్‌ల నుండి మిమ్మల్ని, మీ పరికరాన్ని రక్షిస్తుంది) +సురక్షిత బ్రౌజింగ్ (ప్రమాదకరమైన సైట్‌ల నుండి మిమ్మల్ని, మీ డివైజ్‌ను రక్షిస్తుంది) స్పెల్ చెక్ ప్రొఫైల్ ఇంపోర్టర్ మొబైల్ డేటా నెట్‌వర్క్‌లు @@ -3269,11 +3269,11 @@ మానిటర్ అమరిక CUPS ప్రింటర్‌లను సెటప్ చేయండి లేదా నిర్వహించండి. మరింత తెలుసుకోండి తల్లిదండ్రుల కంట్రోల్స్ సెట్టింగ్‌లను మార్చడానికి ఈ PINను ఉపయోగించండి. - మీరు PINను మర్చిపోతే, ఈ పరికరాన్ని పవర్‌వాష్ చేసి, మళ్లీ సెటప్ చేయండి. + మీరు PINను మర్చిపోతే, ఈ డివైజ్‌ను పవర్‌వాష్ చేసి, మళ్లీ సెటప్ చేయండి. {NUM_APPS,plural, =1{ఈ యాప్ బ్లాక్ చేయబడింది}other{కొన్ని యాప్‌లు బ్లాక్ చేయబడ్డాయి}} ‌లో ఎక్స్‌టెన్షన్‌లను అనుమతించండి యాడ్ మెజర్‌మెంట్ -మీ ప్రసార పరికరాన్ని మీరు +మీ ప్రసార డివైజ్‌ను మీరు Google Home యాప్‌లో చూడగలుగుతున్నారా? నా ఫైళ్లు @@ -3499,7 +3499,7 @@ మీ పెన్‌పై బటన్‌లను జోడించండి లేదా గుర్తించండి "స్లీప్ నుండి మేల్కొన్నప్పుడు లాక్ స్క్రీన్‌ను చూడండి" ఆప్షన్‌ను ఆన్ చేసి, మళ్లీ ట్రై చేయండి పాత వెర్షన్‌లతో కూడిన Chrome యాప్‌లు, డిసెంబర్ 2022 తర్వాత Mac పరికరాలలో తెరవబడవు. కొత్త వెర్షన్ అందుబాటులో ఉందో, లేదో మీరు చెక్ చేయవచ్చు. - పరికరానికి పెయిర్ చేయడం సాధ్యపడలేదు; మళ్ళీ ట్రై చేయడానికి పరికరాన్ని ఎంచుకోండి + డివైజ్‌కు పెయిర్ చేయడం సాధ్యపడలేదు; మళ్ళీ ట్రై చేయడానికి డివైజ్‌ను ఎంచుకోండి ప్రసంగం Google Lens సహాయంతో మీ స్క్రీన్‌పై ఉన్న దాన్ని సెర్చ్ చేయండి కనెక్షన్ ఎర్రర్ @@ -3549,7 +3549,7 @@ &Split వీక్షణలో తెరవండి ఆన్‌లో ఉన్నప్పుడు, పాస్‌వర్డ్‌లు ‌లో సేవ్ చేయబడతాయి. ఆఫ్‌లో ఉన్నప్పుడు, పాస్‌వర్డ్‌లు ఈ పరికరంలో మాత్రమే సేవ్ చేయబడతాయి. మెరుగైన స్పెల్ చెక్‌ను ఉపయోగించండి -మీరు మీ పరికరాన్ని యాక్టివ్‌గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్‌లకు అనుమతి లేదు +మీరు మీ డివైజ్‌ను యాక్టివ్‌గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్‌లకు అనుమతి లేదు అవుట్‌పుట్ ట్రే దాదాపు నిండింది ఈ ఫైల్ ఎన్‌క్రిప్ట్ చేయబడింది. డీక్రిప్ట్ చేయమని ఫైల్ యజమానిని అడగండి. ఆటోమేటెడ్ పాస్‌వర్డ్ మార్పు గురించి మరింత సమాచారం @@ -3905,7 +3905,7 @@ మీరు వెళ్లే సైట్‌లు ఇతర సైట్‌ల నుండి కంటెంట్‌ను పొందుపరచవచ్చు, ఉదాహరణకు, ఇమేజ్‌లు, యాడ్‌లు, ఇంకా టెక్స్ట్. మీరు సైట్‌ను బ్రౌజ్ చేస్తున్నప్పుడు, మీ గురించి సర్వీస్‌లు సేవ్ చేసిన సమాచారాన్ని ఉపయోగించడానికి ఈ ఇతర సైట్‌లు అనుమతి అడగవచ్చు. CA, సర్టిఫికెట్‌ను జారీ చేయడం కోసం వేచి ఉంది దీని వలన డిస్‌ప్లే చేయబడిన సైట్‌లు స్టోర్ చేసిన డేటా తొలగిపోతుంది -పరికరాన్ని అన్‌లాక్ చేసి, Google ఖాతాలోకి సైన్-ఇన్ చేయండి +డివైజ్‌ను అన్‌లాక్ చేసి, Google ఖాతాలోకి సైన్-ఇన్ చేయండి మీ థర్డ్-పార్టీ కుక్కీ ప్రాధాన్యతలను ఎంచుకోండి చెల్లని ఫైల్ ఎంచుకోబడింది. మళ్లీ ట్రై చేయండి. ఈ Chromebookకు ఛార్జ్ చేయడానికి, అనుకూలమైన డెల్ బ్యాటరీని ఉపయోగించండి. @@ -3930,12 +3930,12 @@ ఫిషింగ్ నుండి మీ పాస్‌వర్డ్‌లను రక్షించుకోండి మీరు సింక్‌ని ఆన్ చేసి ఉంచిన పరికరాలన్నిటితో సహా, మీ Google ఖాతా నుండి బ్రౌజింగ్ డేటాను తొలగించడానికి, సైన్ ఇన్ చేయండి. Chromebook కోసం Steamను (బీటా) అప్‌డేట్ చేయాలి. మీ Chromebookను రీస్టార్ట్ చేసి, మళ్ళీ ట్రై చేయండి. -మోడెమ్ ఫర్మ్‌వేర్ అప్‌డేట్ ప్రోగ్రెస్‌లో ఉంది. మీ పరికరాన్ని ఆఫ్ చేయవద్దు. +మోడెమ్ ఫర్మ్‌వేర్ అప్‌డేట్ ప్రోగ్రెస్‌లో ఉంది. మీ డివైజ్‌ను ఆఫ్ చేయవద్దు. సైట్‌లు మీ లొకేషన్‌ను అడగవచ్చు మీరు ఇప్పుడు మీ స్క్రీన్‌పై కనిపించే దేనినైనా సెర్చ్ చేయడానికి Google Lensను ఉపయోగించవచ్చు గుండ్రటి కర్సర్ వేరొకరు మీ స్క్రీన్‌ను చూసినప్పుడు, మీకు అలర్ట్ వస్తుంది అలాగే నోటిఫికేషన్ కంటెంట్ దాచబడుతుంది. -ఈ పరికరాన్ని మేనేజ్ చేస్తోంది. ఖాతా కోసం ‌కు ఒక కొత్త ప్రొఫైల్ అవసరం +ఈ డివైజ్‌ను మేనేజ్ చేస్తోంది. ఖాతా కోసం ‌కు ఒక కొత్త ప్రొఫైల్ అవసరం సెర్చ్ చేయడానికి ఇమేజ్‌ల పైన క్లిక్ చేసి, లాగండి లేదా టెక్స్ట్‌ను హైలైట్ చేయండి వేలిముద్రలోని వేరే భాగాన్ని క్యాప్చర్ చేయడం కోసం కొద్దిగా కదిలించండి. ఈ బుక్‌మార్క్ ఫోల్డర్‌తో ఇప్పటికే ట్యాబ్ గ్రూప్ క్రియేట్ అయింది. మీరు కొత్త ట్యాబ్ గ్రూప్‌ను క్రియేట్ చేయాలనుకుంటున్నారా లేదా ఇప్పటికే ఉన్న దాన్ని రీప్లేస్ చేయాలనుకుంటున్నారా? @@ -4099,7 +4099,7 @@ డిస్‌ప్లే, టెక్స్ట్ సైజ్‌ను తగ్గించండి ఏ సైట్‌లోనైనా ఉపయోగించడానికి, ఎల్లప్పుడూ మీరు ఎక్స్‌టెన్షన్‌ను క్లిక్ చేయవచ్చు యాప్ వివరాలు: -అప్‌డేట్‌ను పూర్తి చేయడానికి మీ పరికరాన్ని రీస్టార్ట్ చేయండి +అప్‌డేట్‌ను పూర్తి చేయడానికి మీ డివైజ్‌ను రీస్టార్ట్ చేయండి కొరియన్ కీబోర్డ్ లేఅవుట్ తో పెయిర్ చేయడానికి PINను ఎంటర్ చేయండి మీ పాస్‌వర్డ్‌లు దిగుమతి చేయబడలేదు @@ -4144,7 +4144,7 @@ ఫోన్ హబ్ గురించి మరింత తెలుసుకోండి Hz ప్రస్తుతానికి, మీరు పాస్‌వర్డ్‌లను ఫ్యామిలీ మెంబర్‌లతో మాత్రమే షేర్ చేయగలరు. మీ గ్రూప్‌లో చేరడానికి ఫ్యామిలీ మెంబర్‌లను ఆహ్వానించండి, Googleలో మీ ప్రోడక్ట్‌లు, సబ్‌స్క్రిప్షన్‌ల నుండి మరిన్ని అత్యధిక ప్రయోజనాలను పొందండి. -మీ పరికరాన్ని మీరు దేని కోసం ఉపయోగిస్తారు? +మీ డివైజ్‌ను మీరు దేని కోసం ఉపయోగిస్తారు? ఐస్‌క్రీమ్ తల్లిదండ్రుల నియంత్రణలు ఆన్‌లో ఉన్నందున ఈ సెట్టింగ్ డిజేబుల్ చేయబడింది వీడియో ఫైళ్లు @@ -4156,7 +4156,7 @@ మీ పరికరాలకు పంపండి అనేక ఫైళ్లను ఆటోమేటిక్‌గా డౌన్‌లోడ్ చేయడానికి సైట్‌లు అడగవచ్చు ఈ ఎక్స్‌టెన్ష‌న్‌ Chrome వెబ్ స్టోర్ విధానాన్ని ఉల్లంఘిస్తోంది. -సెల్యులార్ పరికరాన్ని యాక్టివేట్ చేయలేకపోయింది +సెల్యులార్ డివైజ్‌ను యాక్టివేట్ చేయలేకపోయింది చాలా సైట్‌ల నుండి మిమ్మల్ని సైన్ అవుట్ చేస్తుంది చాలా ఎక్కువ సార్లు తప్పు పిన్‌ను నమోదు చేసినందున సెక్యూరిటీ కీ లాక్ చేయబడింది. మీరు సెక్యూరిటీ కీని రీసెట్ చేయాలి. డెవలపర్ ఉపకరణాలు @@ -4325,7 +4325,7 @@ ఎంపికను తొలగించండి అందరూ వెంటనే "" ట్యాబ్ గ్రూప్‌నకు యాక్సెస్ కోల్పోతారు, అలాగే దీన్ని అన్ని పరికరాల నుండి తొలగించడం జరుగుతుంది కోసం సేవ్ చేసిన పాస్‌వర్డ్‌లు లేవు -24 గంటల తర్వాత, మీరు మీ పరికరాన్ని పునఃప్రారంభిస్తే మీ స్థానిక డేటాను తొలగించే వన్-టైమ్ అప్‌డేట్‌ను మీ నిర్వాహకుడు అమలు చేస్తారు. మీకు అవసరమైన ఏ స్థానిక డేటాను అయినా 24 గంటలలోపు cloud storageలో సేవ్ చేసుకోండి. +24 గంటల తర్వాత, మీరు మీ డివైజ్‌ను రీస్టార్ట్ చేస్తే మీ లోకల్ డేటాను తొలగించే వన్-టైమ్ అప్‌డేట్‌ను మీ అడ్మినిస్ట్రేటర్ అమలు చేస్తారు. మీకు అవసరమైన ఏ లోకల్ డేటాను అయినా 24 గంటలలోపు cloud storageలో సేవ్ చేసుకోండి. డిస్క్ స్థలాన్ని ఖాళీ చేయండి, లేదంటే పరికరం ఇక స్పందించదు. దీన్ని ఆన్ చేయడానికి, మీ సింక్‌ రహస్య పదబంధాన్ని తీసివేయడానికి సింక్‌ను రీసెట్ చేయండి పిన్‌లను చూపుతుంది @@ -4354,7 +4354,7 @@ సెర్చ్ ఇంజిన్‌లను &మేనేజ్ చేయండి... Kerberos వినియోగదారు పేరు మీ మునుపటి విండోలు, ట్యాబ్‌లను తెరవడం ద్వారా మీరు ఎక్కడ ఆపారో అక్కడి నుండి సులభంగా కొనసాగించండి -మీరు మీ పరికరాన్ని యాక్టివ్‌గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్‌లు అడగవచ్చు +మీరు మీ డివైజ్‌ను యాక్టివ్‌గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్‌లు అడగవచ్చు {COUNT,plural, =1{ఇమేజ్}other{# ఇమేజ్‌లు}} మీ , వీడియో గేమ్‌ల కోసం బిల్డ్ చేయబడింది. తర్వాత, 'అన్వేషణ' యాప్ తెరవబడుతుంది, అందులో మీరు వందల కొద్దీ తాజా గేమ్‌లను యాక్సెస్ చేయవచ్చు, వీడియో గేమ్‌ల ఆఫర్‌లను చూడవచ్చు, మీ పరికరంతో వచ్చే వీడియో గేమ్ ఫీచర్‌ల గురించి తెలుసుకోవచ్చు. పరికర భాష @@ -4589,7 +4589,7 @@ హోమ్‌కు వెళ్లు ఆడియో అవుట్‌పుట్‌ను ఎంచుకోండి ‌ను ఫోల్డర్‌లో చూడండి -మీరు డౌన్‌లోడ్ చేసిన ఫైల్‌ను ఉపయోగించడం పూర్తి చేసిన తర్వాత, దాన్ని తొలగించండి, తద్వారా ఈ పరికరాన్ని ఉపయోగించే ఇతరులు మీ పాస్‌వర్డ్‌లను చూడలేరు. +మీరు డౌన్‌లోడ్ చేసిన ఫైల్‌ను ఉపయోగించడం పూర్తి చేసిన తర్వాత, దాన్ని తొలగించండి, తద్వారా ఈ డివైజ్‌ను ఉపయోగించే ఇతరులు మీ పాస్‌వర్డ్‌లను చూడలేరు. {COUNT,plural, =1{# కాంటాక్ట్ అందుబాటులో లేరు. వారితో సమీప షేరింగ్‌ను ఉపయోగించడానికి, వారి Google ఖాతాతో లింక్ చేసిన ఈమెయిల్‌ అడ్రస్‌ను మీ కాంటాక్ట్‌లకు జోడించండి.}other{# కాంటాక్ట్‌లు అందుబాటులో లేరు. వారితో సమీప షేరింగ్‌ను ఉపయోగించడానికి, వారి Google ఖాతాలతో లింక్ చేసిన ఈమెయిల్‌ అడ్రస్‌లను మీ కాంటాక్ట్‌లకు జోడించండి.}} ప్రామాణీకరణ పద్ధతి "", ""తో ఓవర్‌ల్యాప్ కావచ్చు. వీలైతే, వేరే సంజ్ఞను ఎంచుకోవడానికి ట్రై చేయండి. @@ -4688,7 +4688,7 @@ మళ్లీ తెరవండి టచ్‌ప్యాడ్ స్పర్శ ప్రతిస్పందన మీ స్క్రీన్‌షాట్‌ను మీ ప్రాంప్ట్‌తో ఉపయోగించవచ్చు లేదా తొలగించవచ్చు -దయచేసి పరికరాన్ని రీబూట్ చేసి, మళ్లీ ట్రై చేయండి. +దయచేసి డివైజ్‌ను రీబూట్ చేసి, మళ్లీ ట్రై చేయండి. ఈ సెక్యూరిటీ కీని రీసెట్ చేయడం సాధ్యపడదు పాథ్‌ చాలా పొడవుగా ఉంది మీ సెక్యూరిటీ కీ రీసెట్ చేయబడింది @@ -4833,7 +4833,7 @@ పాస్‌వర్డ్‌లు, ఆటోఫిల్ మీ Android ఫోన్ మీకు సహాయం చేస్తుంది. మీ WiFi, పాస్‌వర్డ్ బదిలీ అవుతున్నాయి. గ్రూప్‌ను తీసివేయండి -ఇప్పటి నుండి, మీ Chromebook సెక్యూరిటీ, సాఫ్ట్‌వేర్ అప్‌డేట్‌లను అందుకోదు. తాజా సెక్యూరిటీ, కొత్త ఫీచర్‌ల కోసం మీ పరికరాన్ని అప్‌గ్రేడ్ చేయండి. ఆఫర్ నియమాలు వర్తిస్తాయి. +ఇప్పటి నుండి, మీ Chromebook సెక్యూరిటీ, సాఫ్ట్‌వేర్ అప్‌డేట్‌లను అందుకోదు. తాజా సెక్యూరిటీ, కొత్త ఫీచర్‌ల కోసం మీ డివైజ్‌ను అప్‌గ్రేడ్ చేయండి. ఆఫర్ నియమాలు వర్తిస్తాయి. సైన్ ఇన్‌ను రద్దు చేయండి స్క్రోలింగ్ వేగం మరిన్ని ఎక్స్‌టెన్షన్‌లను కనుగొనండి @@ -4864,7 +4864,7 @@ బ్లూటూత్ నిలిపివేయబడింది - ట్యాబ్ కంటెంట్ షేర్ చేయబడింది గమనిక -నెట్‌వర్క్ ఏదీ కనుగొనబడలేదు. మళ్లీ ట్రై చేసే ముందు దయచేసి మీ SIMను ఇన్‌సర్ట్ చేసి, పరికరాన్ని రీబూట్ చేయండి. +నెట్‌వర్క్ ఏదీ కనుగొనబడలేదు. మళ్లీ ట్రై చేసే ముందు దయచేసి మీ SIMను ఇన్‌సర్ట్ చేసి, డివైజ్‌ను రీబూట్ చేయండి. ఏదో పొరపాటు జరిగింది. మీ ఫోన్ సమీపంలోనే ఉందని, అన్‌లాక్ చేసి ఉందని, ఇంకా బ్లూటూత్, Wi-Fi ఆన్ చేసి ఉన్నాయని నిర్ధారించుకోండి. పెద్ద పాయింటర్ అనువాద భాష: @@ -4899,13 +4899,13 @@ పరికర ప్రారంభ శబ్దం ఈవెంట్ ప్రసార లాగింగ్‌ను ప్రారంభించండి సైడ్ ప్యానెల్‌ను మూసివేయండి -మీ పరికరాన్ని పునఃప్రారంభించండి +మీ డివైజ్‌ను రీస్టార్ట్ చేయండి ప్రింటర్ PPD ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు, OS అప్‌డేట్ పెండింగ్‌లో ఉంది. OS అప్‌డేట్లు ఏవైనా పెండింగ్‌లో ఉంటే ఇన్‌స్టాల్ చేయండి, ఆపై రీస్టార్ట్ చేసి, మళ్లీ ట్రై చేయండి. ఎర్రర్ కోడ్ . XML కాన్ఫిగరేషన్ సోర్స్ {NUM_SITES,plural, =1{1 సైట్ నుండి అనుమతులు తీసివేయబడ్డాయి}other{{NUM_SITES} సైట్‌ల నుండి అనుమతులు తీసివేయబడ్డాయి}} అనుమతించబడింది -మీరు కియోస్క్ & సంకేత చిహ్నాల అప్‌గ్రేడ్‌ను ఉపయోగిస్తారు, ఇది పరికరాన్ని కియోస్క్ లేదా సంకేత చిహ్నాల మోడ్‌లో మాత్రమే రన్ అయ్యేలా చేస్తుంది. యూజర్‌లు పరికరంలోకి సైన్ ఇన్ చేసే వీలును మీరు కల్పించాలనుకుంటే, దయచేసి వెనుకకు వెళ్లి, Chrome Enterpirse అప్‌గ్రేడ్‌ను ఉపయోగించి ఎన్‌రోల్ అవ్వండి. +మీరు కియోస్క్ & సంకేత చిహ్నాల అప్‌గ్రేడ్‌ను ఉపయోగిస్తారు, ఇది డివైజ్‌ను కియోస్క్ లేదా సంకేత చిహ్నాల మోడ్‌లో మాత్రమే రన్ అయ్యేలా చేస్తుంది. యూజర్‌లు డివైజ్‌లోకి సైన్ ఇన్ చేసే వీలును మీరు కల్పించాలనుకుంటే, దయచేసి వెనుకకు వెళ్లి, Chrome Enterpirse అప్‌గ్రేడ్‌ను ఉపయోగించి ఎన్‌రోల్ అవ్వండి. ఈ ప్రాసెస్‌కు కొన్ని నిమిషాలు పట్టవచ్చు. ఫైల్స్‌ను డౌన్‌లోడ్ చేస్తోంది. మీరు ఈ పరికరంలో eSIM ప్రొఫైళ్ల వరకు ఇన్‌స్టాల్ చేయవచ్చు. మరొక ప్రొఫైల్‌ను జోడించడానికి, మొదట ఇప్పటికే ఉన్న ప్రొఫైల్‌ను తీసివేయండి. కొత్త ట్యాబ్ గ్రూప్ @@ -4961,7 +4961,7 @@ సిస్టమ్ ఆడియోను కూడా షేర్ చేయండి. ఫీడ్‌బ్యాక్‌ను నిరోధించడానికి ఈ పరికరం మ్యూట్ చేయబడుతుంది. K (K ప్రత్యక్షంగా) ఫైల్ తప్పు ఫార్మాట్‌లో ఉంది. PPD ఫైల్‌ని చెక్ చేసి, మళ్లీ ట్రై చేయండి. -మీరు ఈ పరికరాన్ని ఇతరులతో షేర్ చేసుకుంటున్నట్లయితే, Windows Helloను ఆన్ చేసి, మీరు సేవ్ చేసిన పాస్‌వర్డ్‌ను ఉపయోగించినప్పుడల్లా, అది మీరేనని వెరిఫై చేయవచ్చు +మీరు ఈ డివైజ్‌ను ఇతరులతో షేర్ చేసుకుంటున్నట్లయితే, Windows Helloను ఆన్ చేసి, మీరు సేవ్ చేసిన పాస్‌వర్డ్‌ను ఉపయోగించినప్పుడల్లా, అది మీరేనని వెరిఫై చేయవచ్చు &వివరాలు మల్టీ టాస్కింగ్‌ను 'స్ప్లిట్ వ్యూ' సులభతరం చేస్తుంది చదవడానికి, మార్చడానికి అనుమతి లేదు @@ -5081,7 +5081,7 @@ {COUNT,plural, =0{అన్నింటినీ &తెరువు}=1{బుక్‌మార్క్‌ను &తెరువు}other{అన్నింటినీ ({COUNT}) &తెరువు}} మీరు ఈ పాస్‌వర్డ్‌ను గుర్తుపెట్టుకోవాల్సిన అవసరం లేదు. ఇది కోసం ‌కు సేవ్ చేయబడుతుంది. యాక్సెస్ రిక్వెస్ట్‌ల గురించి మరింత తెలుసుకోండి. -మీ పరికరాన్ని సరిగ్గా షట్ డౌన్ చేయలేదు. Linux యాప్‌లను ఉపయోగించడానికి Linuxను రీస్టార్ట్ చేయండి. +మీ డివైజ్‌ను సరిగ్గా షట్ డౌన్ చేయలేదు. Linux యాప్‌లను ఉపయోగించడానికి Linuxను రీస్టార్ట్ చేయండి. ఎగువ-అడ్డు వరుసలోని కీల ప్రవర్తనను మార్చడానికి లాంచర్ కీని నొక్కి ఉంచండి మీరు ట్యాబ్‌ను బుక్‌మార్క్ చేయడానికి నక్షత్రం గుర్తును క్లిక్ చేయవచ్చు ప్రసారం చేయడానికి, కోడ్‌తో కనెక్ట్ చేయండి @@ -5101,7 +5101,7 @@ {NUM_APPS,plural,offset:2 =1{మీ అడ్మినిస్ట్రేటర్ మీ స్క్రీన్‌ను ‌తో రికార్డ్ చేయవచ్చు. రికార్డింగ్ ప్రారంభమైనప్పుడు మీకు నోటిఫికేషన్ వస్తుంది.}=2{మీ అడ్మినిస్ట్రేటర్ మీ స్క్రీన్‌ను , ‌లతో రికార్డ్ చేయవచ్చు. రికార్డింగ్ ప్రారంభమైనప్పుడు మీకు నోటిఫికేషన్ వస్తుంది.}=3{మీ అడ్మినిస్ట్రేటర్ మీ స్క్రీన్‌ను , , ఇంకా మరో 1 యాప్‌తో రికార్డ్ చేయవచ్చు. రికార్డింగ్ ప్రారంభమైనప్పుడు మీకు నోటిఫికేషన్ వస్తుంది.}other{మీ అడ్మినిస్ట్రేటర్ మీ స్క్రీన్‌ను , , ఇంకా మరో # యాప్‌లతో రికార్డ్ చేయవచ్చు. రికార్డింగ్ ప్రారంభమైనప్పుడు మీకు నోటిఫికేషన్ వస్తుంది.}} సరిహద్దులు పాస్‌వర్డ్‌లు, ఆటోఫిల్ -మీ పరికరాన్ని అన్‌లాక్ చేయడానికి పాస్‌వర్డ్‌‌కు బదులుగా సంఖ్య (పిన్)ని ఉపయోగించండి. తర్వాత మీ పిన్‌ను సెట్ చేయడానికి, సెట్టింగ్‌లకు వెళ్లండి. +మీ డివైజ్‌ను అన్‌లాక్ చేయడానికి పాస్‌వర్డ్‌‌కు బదులుగా నంబర్ (PIN)ను ఉపయోగించండి. తర్వాత మీ PINను సెట్ చేయడానికి, సెట్టింగ్‌లకు వెళ్లండి. షేర్ చేసిన ట్యాబ్‌లను స్క్రోల్ చేయడానికి, జూమ్ చేయడానికి అనుమతి లేనివి కోడ్ సైనర్ ఈ పాస్-కీలు ఈ కంప్యూటర్‌లో Windows Helloలో సేవ్ చేయబడ్డాయి. అవి మీ Google ఖాతాలో సేవ్ చేయబడలేదు. @@ -5231,7 +5231,7 @@ మీరు కార్డ్ మెనూలో సెట్టింగ్‌లను మేనేజ్ చేయవచ్చు లేదా 'Chromeను అనుకూలంగా మార్చుకోండి'లో మరిన్ని ఆప్షన్‌లను చూడవచ్చు. -మీ కంప్యూటర్ విశ్వసనీయ ప్లాట్‌ఫామ్ మాడ్యూల్ (TPM) సెక్యూరిటీ పరికరాన్ని కలిగి ఉంది, ఇది ChromeOS Flexలో అనేక కీలకమైన సెక్యూరిటీ ఫీచర్‌లను అమలు చేయడానికి ఉపయోగించబడుతుంది. మరింత తెలుసుకోవడానికి Chromebook సహాయ కేంద్రాన్ని సందర్శించండి: https://support.google.com/chromebook/?p=tpm +మీ కంప్యూటర్ విశ్వసనీయ ప్లాట్‌ఫామ్ మాడ్యూల్ (TPM) సెక్యూరిటీ డివైజ్‌ను కలిగి ఉంది, ఇది ChromeOS Flexలో అనేక కీలకమైన సెక్యూరిటీ ఫీచర్‌లను అమలు చేయడానికి ఉపయోగించబడుతుంది. మరింత తెలుసుకోవడానికి Chromebook సహాయ కేంద్రాన్ని సందర్శించండి: https://support.google.com/chromebook/?p=tpm ఈ చిహ్నంపై క్లిక్ చేయడం ద్వారా లేదా ను నొక్కడం ద్వారా ఈ ఎక్స్‌టెన్ష‌న్‌ను ఉపయోగించండి. ఈ QR కోడ్‌ను ఉపయోగించి Chromeను డౌన్‌లోడ్ చేసి, మీ Google ఖాతాకు సైన్ ఇన్ చేయండి. పదం ఇప్పటికే జోడించబడింది @@ -5322,7 +5322,7 @@ ఎగ్జిట్ అయినప్పుడు తొలగించండి పాస్‌వర్డ్‌ను దాచిపెట్టు సిస్టమ్ లాగ్‌లను స్టోర్ చేయి -ఎన్‌రోల్ అయ్యాక మీరు మారాలనుకుంటే, మీ పరికరాన్ని ఫ్యాక్టరీ రీసెట్ (పవర్‌వాష్) చేయండి. +ఎన్‌రోల్ అయ్యాక మీరు స్విచ్ అవ్వాలనుకుంటే, మీ డివైజ్‌ను ఫ్యాక్టరీ రీసెట్ (పవర్‌వాష్) చేయండి. మైక్రోఫోన్‌ను మ్యూట్ చేయి పేజీని అనువదించాల్సిన భాష సైన్ ఇన్ ఆప్షన్ తప్పుగా ఉందా? @@ -5338,7 +5338,7 @@ మరిన్ని... ‌ను సెటప్ చేయండి -బ్లూటూత్ పరికరాన్ని జత చేయండి +బ్లూటూత్ డివైజ్‌ను పెయిర్ చేయండి మీరు ఇన్‌స్టాల్ చేసినవి - ఇన్‌యాక్టివ్ ట్యాబ్ మైక్రోఫోన్ అనుమతి, అలాగే సిస్టమ్ సర్వీస్‌లు గల యాప్‌లు, వెబ్‌సైట్‌లు మీ మైక్రోఫోన్‌ను ఉపయోగించగలవు @@ -5418,8 +5418,8 @@ ఫోకస్డ్ వాయిస్ కార్డ్‌లను అనుకూలంగా మార్చండి "" యొక్క వెర్షన్ కనీసం "" ఉండాలని ఎక్స్‌టెన్షన్ కోరుతోంది, కానీ "" వెర్షన్ మాత్రమే ఇన్‌స్టాల్ చేయబడి ఉంది -Google Driveలో బ్యాకప్ చేయండి. సులభంగా డేటాను పునరుద్ధరించండి లేదా ఏ సమయంలో అయినా పరికరాన్ని మార్చండి. ఈ బ్యాకప్‌లో యాప్ డేటా కూడా ఉంటుంది. బ్యాకప్‌లు Googleకు అప్‌లోడ్ అవుతాయి, మీ చిన్నారి Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ చేయబడతాయి. -పని కోసం లేదా వ్యక్తిగత వినియోగం కోసం ఈ పరికరాన్ని సెటప్ చేయండి +Google Driveలో బ్యాకప్ చేయండి. సులభంగా డేటాను రీస్టోర్ చేయండి లేదా ఏ సమయంలో అయినా డివైజ్‌ను స్విచ్ చేయండి. ఈ బ్యాకప్‌లో యాప్ డేటా కూడా ఉంటుంది. బ్యాకప్‌లు Googleకు అప్‌లోడ్ అవుతాయి, మీ చిన్నారి Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ చేయబడతాయి. +పని కోసం లేదా వ్యక్తిగత వినియోగం కోసం ఈ డివైజ్‌ను సెటప్ చేయండి Crostiniని అన్ఇన్‌స్టాల్ చేయండి గెస్ట్ వినియోగదారులకు అందుబాటులో లేదు. సిస్టమ్ ప్రాధాన్యతలు @@ -5506,7 +5506,7 @@ తెలియని పరికరం () సైట్ సూచించిన యాడ్‌లు స్థానిక లాగ్ ID: . -, ఈ పరికరాన్ని మునుపటి వెర్షన్‌కు మారుస్తున్నారు () +, ఈ డివైజ్‌ను మునుపటి వెర్షన్‌కు మారుస్తున్నారు () మీ ఇంటర్నెట్ కనెక్షన్‌ను చెక్ చేసి, మళ్ళీ Geminiని ఉపయోగించడానికి ట్రై చేయండి. మీ డెమో ప్రాధాన్యతలను ఎంచుకోండి ఈ బుక్‌మార్క్‌ను మీ iPhoneకు సింక్ చేయండి @@ -5617,7 +5617,7 @@ తొలగించబడింది కనెక్ట్ చేయబడింది 'తర్వాత చదవండి' మెనూకు పేజీని జోడించడానికి, బటన్‌ను క్లిక్ చేయండి -ఈ పరికరాన్ని వాడే ఇతర యూజర్‌లు ఈ నెట్‌వర్క్‌ను ఉపయోగించగలరు +ఈ డివైజ్‌ను వాడే ఇతర యూజర్‌లు ఈ నెట్‌వర్క్‌ను ఉపయోగించగలరు ఆన్ చేయబడింది • ఈ ఎక్స్‌టెన్షన్ పబ్లిషింగ్‌ను దాని డెవలపర్ రద్దు చేశారు Play Store ట్యాబ్ గ్రూప్‌ను తొలగించాలా? @@ -5637,7 +5637,7 @@ డివైజ్‌లో AI యూజర్‌నేమ్ కోసం పాస్-కీని ఎడిట్ చేయండి: దయచేసి మీ నెట్‌వర్క్ కనెక్షన్‌ను చెక్ చేసి, మళ్లీ ట్రై చేయండి. -స్పీచ్ ఫైల్స్‌ను ఇన్‌స్టాల్ చేయడం సాధ్యం కాదు. మీ పరికరాన్ని అప్‌డేట్ చేయాలి. మీ పరికరాన్ని రీస్టార్ట్ చేసి, ఆపై మళ్లీ ట్రై చేయండి. +స్పీచ్ ఫైల్స్‌ను ఇన్‌స్టాల్ చేయడం సాధ్యం కాదు. మీ డివైజ్‌ను అప్‌డేట్ చేయాలి. మీ డివైజ్‌ను రీస్టార్ట్ చేసి, ఆపై మళ్లీ ట్రై చేయండి. పరికరాలు సమీపంలోని షేర్ చేస్తున్నప్పుడు నోటిఫికేషన్‌ను చూడండి (UDP) ఖాతాలో ఐటెమ్‌లను సేవ్ చేయండి @@ -5712,13 +5712,13 @@ డూప్లికేట్‌లు వేలిముద్రలను నిర్వహించండి తిరిగి Google Searchకు మార్చాలా? -ఈ పరికరాన్ని ఉపయోగించడానికి మీకు అధికారం లేదు. దయచేసి సైన్-ఇన్ అనుమతి కోసం పరికర యజమానిని సంప్రదించండి. +ఈ డివైజ్‌ను ఉపయోగించడానికి మీకు అధికారం లేదు. దయచేసి సైన్-ఇన్ అనుమతి కోసం డివైజ్ ఓనర్‌ను కాంటాక్ట్ చేయండి. మీ ఫోన్‌లోని ఫోటోలు, మీడియా, నోటిఫికేషన్‌లను చూడండి స్వప్నం లాంటిది క్లిప్‌బోర్డ్‌ను చదివే యాక్సెస్ అనుమతించబడింది పాస్‌వర్డ్ అప్‌డేట్ అయింది వీడియోను ఇలా సే&వ్ చేయి... -మీ పరికరాన్ని చెక్ చేయండి +మీ డివైజ్‌ను చెక్ చేయండి ఏదేమైనా అజ్ఞాత మోడ్ నుండి నిష్క్రమించాలా? ఈ పరికరం నిర్దిష్ట మొబైల్ నెట్‌వర్క్‌కు మాత్రమే కనెక్ట్ అవ్వగలదు. మరింత తెలుసుకోండి అవసరమైన వర్చువల్ మిషన్ ఉనికిలో లేదు. కొనసాగడానికి ను సెటప్ చేయడాన్ని ట్రై చేయండి @@ -5873,7 +5873,7 @@ సేవ్ చేయాల్సిన ప్రింటర్‌లు అందుబాటులో ఉన్నాయి. ఈ ఖాతా ద్వారా మేనేజ్ చేయబడుతుంది డిస్క్ పరిమాణాన్ని రిజర్వ్ చేయండి -పరికరాన్ని బిజినెస్ నిర్వహణ కోసం నమోదు చేసేటప్పుడు ఈ పరికర రిక్వెస్ట్‌ను ఉపయోగించండి: +డివైజ్‌ను ఎంటర్‌ప్రైజ్ మేనేజ్‌మెంట్ కోసం ఎన్‌రోల్ చేసేటప్పుడు ఈ డివైజ్ రిక్వెస్ట్‌ను ఉపయోగించండి: ఫాంట్ సైజ్‌ మీ ఫోన్‌లోని ఫోటోలు, మీడియా, ఇంకా యాప్‌లను చూడండి ప్రాక్సీ కన్ఫిగరేషన్ సహాయం @@ -5908,7 +5908,7 @@ ప్రస్తత ట్యాబ్‌ను తీసివేయండి అమరిక డాక్ విండో -Hangouts Meetను అమలు చేసేలా ఈ పరికరాన్ని ఖచ్చితంగా సెటప్ చేయాలని అనుకుంటున్నారా? +Hangouts Meetను అమలు చేసేలా ఈ డివైజ్‌ను ఖచ్చితంగా సెటప్ చేయాలని అనుకుంటున్నారా? మీరు అజ్ఞాత మోడ్‌లో ఉన్నారు ఒక నోట్‌ను జోడించండి హానికరమైన ఫైల్‌ను డౌన్‌లోడ్ చేయండి @@ -6051,7 +6051,7 @@ {0,plural,offset:2 =1{}=2{, }other{, , మరియు మరో #}} కొత్త సెట్టింగ్‌లు ప్రభావంలోకి రావడానికి ముందు ఈ పేజీని మళ్లీ లోడ్ చేయాల్సి ఉండవచ్చు. సెటప్‌ను పూర్తి చేయడానికి ఇప్పటికీ అనుమతి అవసరం -ఒకటి లేదా అంత కన్నా ఎక్కువ స్విచ్‌లతో మీ పరికరాన్ని కంట్రోల్ చేయండి. స్విచ్‌లు కీబోర్డ్ కీలు, గేమ్‌ప్యాడ్ బటన్‌లు లేదా కేటాయించిన పరికరాలు కావచ్చు. +ఒకటి లేదా అంత కన్నా ఎక్కువ స్విచ్‌లతో మీ డివైజ్‌ను కంట్రోల్ చేయండి. స్విచ్‌లు కీబోర్డ్ కీలు, గేమ్‌ప్యాడ్ బటన్‌లు లేదా కేటాయించిన పరికరాలు కావచ్చు. సురక్షితమైన సైట్‌లలో డిఫాల్ట్‌గానే అసురక్షితమైన కంటెంట్ బ్లాక్ చేయబడుతుంది అన్ని ట్యాబ్‌లను బుక్‌మార్క్ చేయండి సరి కానటువంటి PIN @@ -6134,12 +6134,12 @@ సురక్షిత కనెక్షన్ ID: నెట్‌వర్క్ కనెక్షన్‌లను నిర్వహించండి పుష్పాలు -మీ అడ్మినిస్ట్రేటర్ మీ పరికరాన్ని కంట్రోల్ చేస్తున్నారు +మీ అడ్మినిస్ట్రేటర్ మీ డివైజ్‌ను కంట్రోల్ చేస్తున్నారు జోడించబడింది Eten ప్రొఫైల్‌ను డౌన్‌లోడ్ చేయడం సాధ్యపడలేదు. దయచేసి తర్వాత మళ్లీ ట్రై చేయండి లేదా సహాయం కోసం క్యారియర్‌ను కాంటాక్ట్ చేయండి. టచ్‌ప్యాడ్ కోసం ట్యాప్ చేసి లాగండి -మీరు ఈ పరికరాన్ని ఇతరులతో షేర్ చేసుకుంటున్నట్లయితే, సేవ్ చేసిన పాస్‌వర్డ్‌ను ఉపయోగించినప్పుడల్లా అది మీరేనని వెరిఫై చేయడానికి మీ వేలిముద్రను ఉపయోగించవచ్చు +మీరు ఈ డివైజ్‌ను ఇతరులతో షేర్ చేసుకుంటున్నట్లయితే, సేవ్ చేసిన పాస్‌వర్డ్‌ను ఉపయోగించినప్పుడల్లా అది మీరేనని వెరిఫై చేయడానికి మీ ఫింగర్ ప్రింట్‌ను ఉపయోగించవచ్చు బుక్‌మార్క్ అంశాన్ని సృష్టించలేకపోయాము. కొత్త APNను జోడించండి పరికరాలు రెండూ అన్‌లాక్ చేయబడి ఉన్నాయని, ఒకదానికొకటి దగ్గరగా ఉన్నాయని, బ్లూటూత్ ఆన్ చేసి ఉందని నిర్ధారించుకోండి. మరింత తెలుసుకోండి @@ -6159,7 +6159,7 @@ ఇది యాప్‌లు, మైక్రోఫోన్ అనుమతి ఉన్న వెబ్‌సైట్‌లు, అలాగే సిస్టమ్ సర్వీస్‌ల కోసం మైక్రోఫోన్ యాక్సెస్‌ను అనుమతిస్తుంది alt + మీరు మీ పరికరం నుండి దూరంగా వెళ్లినప్పుడు, ఆటోమేటిక్‌గా మీ స్క్రీన్ లాక్ అవుతుంది. మీరు మీ పరికరం ముందు ఉన్నప్పుడు, మీ స్క్రీన్ మేల్కొనే ఉంటుంది. లాక్ స్క్రీన్ డిజేబుల్ చేసి ఉంటే, మీ పరికరం లాక్ అవ్వడానికి బదులుగా స్లీప్ మోడ్‌లో ఉంటుంది. -పరికరాన్ని ఎన్‌రోల్ చేయవద్దు +డివైజ్‌ను ఎన్‌రోల్ చేయవద్దు స్వంతంగా మీరు ఒక దానిని ఎంచుకోండి సిస్టమ్ వాయిస్ సిఫార్సు @@ -6208,7 +6208,7 @@ HID పరికర అనుమతులన్నింటినీ రీసెట్ చేయాలా? &JavaScript కన్సోల్ ఈ వినియోగదారు పేరుతో ఇప్పటికే ఒక టికెట్ ఉంది -మీ పరికరాన్ని అప్‌డేట్ చేస్తోంది +మీ డివైజ్‌ను అప్‌డేట్ చేస్తోంది "" కొత్త వెర్షన్ నిలిపివేయబడింది ఎందుకంటే దానికి మరిన్ని అనుమతులు అవసరం. ఇంటర్నెట్ లేదు QR కోడ్‌ను స్కాన్ చేసి మరొక డివైజ్‌ను ఉపయోగించండి @@ -6249,12 +6249,12 @@ {NUM_EXTENSIONS,plural, =1{ఎక్స్‌టెన్షన్‌ను చూడటానికి క్లిక్ చేయండి}other{ఈ ఎక్స్‌టెన్షన్‌లను చూడటానికి క్లిక్ చేయండి}} ‌కు సంబంధించిన రికవరీ పాస్‌వర్డ్ ట్యాబ్‌లను కుదించండి -దయచేసి పరికరాన్ని పవర్‌వాష్ చేసి, మళ్లీ ట్రై చేయండి. +దయచేసి డివైజ్‌ను పవర్‌వాష్ చేసి, మళ్లీ ట్రై చేయండి. పాస్‌వర్డ్‌ని నమోదు చేయండి బదిలీ చేయడానికి మొబైల్ డేటాను ఎప్పుడూ ఉపయోగించవద్దు నెట్‌వర్క్ విజయవంతంగా జోడించబడింది. యాక్టివ్ కావడానికి మీ సెల్యులర్ నెట్‌వర్క్‌కు కొన్ని నిమిషాలు పట్టవచ్చు. వచన కర్సర్ గుర్తును హైలైట్ చేయి -మీరు అర్హత ఉన్న ChromeOS పరికరాన్ని ఉపయోగిస్తున్నట్లు చెక్ చేయాలనుకుంటోంది. +మీరు అర్హత ఉన్న ChromeOS డివైజ్‌ను ఉపయోగిస్తున్నట్లు చెక్ చేయాలనుకుంటోంది. పరికరం మొబైల్ నెట్‌వర్క్ సమాచారం సగం వెడల్పు పరికరాలు కనుగొనబడలేదు @@ -6372,7 +6372,7 @@ మూసిన ట్యాబ్‌ను మళ్లీ &తెరువు PC, అలాగే ప్రసార పరికరం వేర్వేరు Wi-Fi నెట్‌వర్క్‌లలో (ఉదా. 2.4GHz వర్సెస్ 5GHz) ఉన్నాయి వ్యక్తిగతమైన కీ ఫైల్ చెల్లదు. -ఈ పరికరాన్ని ఫార్మాట్ చేయి +ఈ డివైజ్‌ను ఫార్మాట్ చేయండి తాత్కాలిక మోడ్ సపోర్ట్ చేయదు. దయచేసి మీ అడ్మినిస్ట్రేటర్‌ను సంప్రదించండి లొకేషన్ యాక్సెస్‌ను ఆన్ చేయాలా? సెట్టింగ్‌లను, వాటి ఒరిజినల్ ఆటోమేటిక్ విలువలకు రీసెట్ చేయండి @@ -6380,7 +6380,7 @@ తప్పనిసరిగా లోయర్‌కేస్ అక్షరం లేదా కింది గీతతో ప్రారంభం కావాలి మీ పరికరం ముందు వ్యక్తులను గుర్తించినప్పుడు, మీ బిల్ట్-ఇన్ సెన్సార్‌ను ఉపయోగిస్తుంది. మీ పరికరంలో డేటా మొత్తం వెంటనే ప్రాసెస్ చేయబడుతుంది, ఆపై తొలగించబడుతుంది. సెన్సార్ డేటా ఎప్పటికీ Googleకు పంపబడదు. మరింత తెలుసుకోండి ట్యాబ్ గ్రూప్ పేరు: -'మాటల ప్రతిస్పందన'ను వినండి, తద్వారా మీరు స్క్రీన్‌ను చూడకుండానే మీ పరికరాన్ని ఉపయోగించవచ్చు. కనెక్ట్ అయిన పరికరంలో బ్రెయిలీ ఫీడ్‌బ్యాక్ అందుబాటులో ఉంది. +'మాటల ప్రతిస్పందన'ను వినండి, తద్వారా మీరు స్క్రీన్‌ను చూడకుండానే మీ డివైజ్‌ను ఉపయోగించవచ్చు. కనెక్ట్ అయిన డివైజ్‌లో బ్రెయిలీ ఫీడ్‌బ్యాక్ అందుబాటులో ఉంది. హానికరమైన వెబ్‌సైట్‌ల నుండి రక్షణ పొందడానికి మీ దగ్గర Chrome అత్యంత శక్తివంతమైన సెక్యూరిటీ ఉంది టెథరింగ్ కాన్ఫిగరేషన్‌ను రిఫ్రెష్ చేయండి యాక్టివేషన్ విజయవంతమైంది @@ -6544,7 +6544,7 @@ స్క్రీన్‌ను పెద్దదిగా చేయండి ఈ సైట్‌ను రీడ్ చేసి, మార్చమని రిక్వెస్ట్ చేయడం Voice Match -అదనపు భద్రత కోసం పరికరాన్ని అన్‌లాక్ చేయడానికి పాస్‌వర్డ్ అవసరం +అదనపు సెక్యూరిటీ కోసం డివైజ్‌ను అన్‌లాక్ చేయడానికి పాస్‌వర్డ్ అవసరం వచన మెసేజ్‌ మరియు చిత్రాల స్పష్టతను నిర్ణయిస్తుంది () వెంటనే "" ట్యాబ్ గ్రూప్‌నకు యాక్సెస్‌ను కోల్పోతారు లింక్‌ను కాపీ చేయండి @@ -6622,7 +6622,7 @@ బటన్ పేరును మార్చండి వినియోగాన్ని బట్టి మెమరీని ఖాళీ చేయండి టెక్స్ట్ కర్సర్‌తో మీరు పేజీలను నావిగేట్ చేయవచ్చు. ఆఫ్ చేయడానికి F7ను నొక్కండి. -మీ పరికరాన్ని పవర్‌వాష్‌తో రీసెట్ చేయడానికి ముందు రీస్టార్ట్ చేయడం అవసరం. మరింత తెలుసుకోండి +మీ డివైజ్‌ను పవర్‌వాష్‌తో రీసెట్ చేయడానికి ముందు రీస్టార్ట్ చేయడం అవసరం. మరింత తెలుసుకోండి నంబర్‌లు హలో! నేను మీ వచనం నుండి ప్రసంగం వాయిస్‌ని. ఈ సైట్ కోసం పాస్‌వర్డ్‌లను సేవ్ చేయండి @@ -6653,7 +6653,7 @@ '' కాపీ చేయబడింది సింక్ ఎన్‌క్రిప్షన్ ఆప్షన్‌లు నుండి నోటిఫికేషన్‌లను అనుమతించవద్దు కానీ తర్వాత అడగండి -బ్లూటూత్ పరికరాన్ని డిస్‌కనెక్ట్ చేయండి +బ్లూటూత్ డివైజ్‌ను డిస్‌కనెక్ట్ చేయండి మీ మైక్రోఫోన్‌ను యాక్సెస్ చేయడానికి Linuxకు అనుమతివ్వండి లేత గోధుమ రంగు మరియు తెలుపు పరికరంలో ఎన్‌క్రిప్షన్ @@ -6692,7 +6692,7 @@ జారీచేసినవారు: Google నుండి చిత్ర వివరణలను పొందండి అతి చిన్నది -మీరు ఖచ్చితంగా ఈ పరికరాన్ని "షార్క్"గా సెటప్ చేయాలని అనుకుంటున్నారా? +మీరు ఖచ్చితంగా ఈ డివైజ్‌ను "షార్క్"గా సెటప్ చేయాలని అనుకుంటున్నారా? మీ పరికరంలో స్పేస్‌ను ఖాళీ చేయండి. ఆపై, మళ్లీ డౌన్‌లోడ్ చేయడానికి ట్రై చేయండి క్యాలిక్యులేటర్ ట్యాబ్ @@ -6778,14 +6778,14 @@ ఇతర సైట్‌లకు ఎక్స్‌టెన్షన్ అనుమతులను చూడండి అజ్ఞాత ఎక్స్‌టెన్‌షన్: డెమో నమోదు రిక్వెస్ట్‌కు సంబంధించి ఒక సమస్య ఏర్పడింది. -మీ పరికరాన్ని రీసెట్ చేయడం వలన మీ Google ఖాతాలపై లేదా ఈ ఖాతాలకు సింక్ చేయ‌బ‌డిన‌ ఏదైనా డేటాపై ఎటువంటి ప్రభావం ఉండదు. అయితే, మీ పరికరంలో స్థానికంగా సేవ్ చేయబడిన అన్ని ఫైళ్లు తొలగించబడతాయి. +మీ డివైజ్‌ను రీసెట్ చేయడం వలన మీ Google ఖాతాలపై లేదా ఈ ఖాతాలకు సింక్ చేయ‌బ‌డిన‌ ఏదైనా డేటాపై ఎటువంటి ప్రభావం ఉండదు. అయితే, మీ డివైజ్‌లో లోకల్‌గా సేవ్ చేయబడిన అన్ని ఫైళ్లు తొలగించబడతాయి. ఆటోమేటిక్ సైన్-ఇన్ ఇమేజ్‌ను క్రియేట్ చేయడానికి అనుకూల ప్రాంప్ట్‌ను ఎంటర్ చేయండి లేదా టెక్స్ట్‌ను హైలైట్ చేయండి {ITEM_COUNT,plural, =1{1 ఐటెమ్ ఈ డివైజ్‌లో మాత్రమే సేవ్ అయింది. దాన్ని మీ ఇతర డివైజ్‌లలో ఉపయోగించడానికి, మీ Google ఖాతాలో సేవ్ చేయండి.}other{ఈ డివైజ్‌లో {ITEM_COUNT} ఐటెమ్‌లు మాత్రమే సేవ్ చేయబడ్డాయి. పాస్‌వర్డ్‌లను మీ ఇతర పరికరాలలో ఉపయోగించడానికి, వాటిని మీ Google ఖాతాలో సేవ్ చేయండి.}} లిస్ట్ నుండి లింక్‌ను తీసివేయండి భాషకు అనువాదం పూర్తయింది Microsoft Windows హార్డ్‌వేర్ డ్రైవర్ ధృవీకరణ -పరికరాన్ని డొమైన్‌కు చేర్చడం సాధ్యపడదు. దయచేసి మళ్లీ ట్రై చేయండి లేదా మీ పరికర ఓనర్‌ను లేదా అడ్మినిస్ట్రేట‌ర్‌ను సంప్రదించండి. ఎర్రర్ కోడ్: . +డివైజ్‌ను డొమైన్‌కు చేర్చడం సాధ్యపడదు. దయచేసి మళ్లీ ట్రై చేయండి లేదా మీ డివైజ్ ఓనర్‌ను లేదా అడ్మినిస్ట్రేట‌ర్‌ను కాంటాక్ట్ అవ్వండి. ఎర్రర్ కోడ్: . 8-డాట్ ప్రధాన మెనూ Backspace @@ -7163,7 +7163,7 @@ వాయిస్ వేగం పరికరంలో Google Drive అందుబాటులో లేకపోతే, ‌ను తెరవడం సాధ్యపడదు జారీ చేసినవారు -అయ్యో! ఈ పరికరాన్ని నమోదు చేస్తున్నపుడు ఏదో తప్పిదం జరిగింది. దయచేసి మరల ప్రయత్నించండి లేదా మీ మద్దతు ప్రతినిధిని సంప్రదించండి. +అయ్యో! ఈ డివైజ్‌ను ఎన్‌రోల్ చేస్తున్నపుడు ఏదో తప్పిదం జరిగింది. దయచేసి మరల ప్రయత్నించండి లేదా మీ సపోర్ట్ ప్రతినిధిని కాంటాక్ట్ చేయండి. పునఃప్రారంభించి, పవర్‌వాష్ చేయి నాలుగు దశల్లో నాల్గవది: సమస్య విశ్లేషణలకు సంబంధించిన డేటా ఎగుమతి చేయబడింది సాధారణ ఆప్షన్‌లు @@ -7207,7 +7207,7 @@ బుక్‌మార్క్‌లను క్లీనప్ చేయాలా? స్క్రీన్ షేరింగ్ ముగిసింది కుడివైపున కొత్త ట్యాబ్ -ఛానెల్ మార్చబడింది. మార్పులను వర్తింపజేయడానికి మీ పరికరాన్ని పునఃప్రారంభించండి. +ఛానెల్ మార్చబడింది. మార్పులను వర్తింపజేయడానికి మీ డివైజ్‌ను రీస్టార్ట్ చేయండి. ఎంచుకున్న ప్రింటర్ అందుబాటులో లేదు లేదా సరిగ్గా ఇన్‌స్టాల్ చేయబడలేదు. మీ ప్రింటర్‌ను చెక్ చేయండి లేదా మరొక ప్రింటర్‌ను ఎంచుకోవడాన్ని ప్రయత్నించండి. గుర్తింపు సర్వీసుల నుండి సైన్-ఇన్ ప్రాంప్ట్‌లను బ్లాక్ చేయండి అలా అయితే, లో సేవ్ అయిన మీ పాస్‌వర్డ్‌ను దయచేసి ఎడిట్ చేయండి, అప్పుడు అది మీ కొత్త పాస్‌వర్డ్‌తో మ్యాచ్ అవుతుంది. @@ -7246,7 +7246,7 @@ అజ్ఞాత మోడ్‌లో సురక్షితం కాని సైట్‌లకు వెళ్లే ముందు హెచ్చరికలను చూడండి కాన్ఫిగరేషన్ సమస్య కారణంగా ను సెటప్ చేయడం సాధ్యపడలేదు. దయచేసి మీ అడ్మినిస్ట్రేటర్‌ను సంప్రదించండి. ఎర్రర్ కోడ్: . సురక్షితమైన కంటెంట్‌ను ప్లే చేయడానికి, ఐడెంటిఫయర్‌లను ఉపయోగించడానికి ఈ సైట్‌ను అనుమతించడం కొనసాగించండి -దాదాపు తాజాగా ఉంది! అప్‌డేట్‌ను పూర్తి చేయడానికి మీ పరికరాన్ని పునఃప్రారంభించండి. +దాదాపు తాజాగా ఉంది! అప్‌డేట్‌ను పూర్తి చేయడానికి మీ డివైజ్‌ను రీస్టార్ట్ చేయండి. ఈ యాప్‌తో అనుబంధించబడిన డేటా ఈ పరికరం నుండి తీసివేయబడుతుంది. దయచేసి ‌పిన్‌ని నమోదు చేయండి మీరు సైన్ ఇన్ చేసినప్పుడు యాప్‌ను ప్రారంభించండి @@ -7285,7 +7285,7 @@ వెంటనే మీ ను అప్‌డేట్ చేయాలని తెలియజేస్తోంది. సైట్ అనుచితమైన లేదా తప్పుదారి పట్టించే ప్రకటనలను చూపుతుంది యొక్క USB పరికరం -ఈ Google Meet హార్డ్‌వేర్ పరికరాన్ని ఎన్‌రోల్ చేయడానికి మీకు తగిన లైసెన్స్‌లు లేవు. మరిన్ని కొనుగోలు చేయడానికి దయచేసి సేల్స్‌ను సంప్రదించండి. మీకు ఈ మెసేజ్ పొరపాటున వచ్చిందని మీరు విశ్వసిస్తే, దయచేసి సపోర్ట్ విభాగాన్ని సంప్రదించండి. +ఈ Google Meet హార్డ్‌వేర్ డివైజ్‌ను ఎన్‌రోల్ చేయడానికి మీకు తగిన లైసెన్స్‌లు లేవు. మరిన్ని కొనుగోలు చేయడానికి దయచేసి సేల్స్‌ను కాంటాక్ట్ చేయండి. మీకు ఈ మెసేజ్ పొరపాటున వచ్చిందని మీరు విశ్వసిస్తే, దయచేసి సపోర్ట్ విభాగాన్ని కాంటాక్ట్ చేయండి. ఈ ఎక్స్‌టెన్షన్‌ను ఉపయోగించడానికి డెవలపర్ మోడ్‌ను ఆన్ చేయండి, కానీ మీరు ఎక్స్‌టెన్షన్‌ను విశ్వసిస్తే మాత్రమే. దీనిలో Chrome వెబ్ స్టోర్ ద్వారా రివ్యూ చేయబడని ప్రయోగాత్మక లక్షణాలు ఉండవచ్చు. క్రమసంఖ్య సమయ మండలి @@ -7502,7 +7502,7 @@ మీ సిస్టమ్ సమయాన్ని చెక్ చేయండి కీ మ్యాపింగ్ - పేరు లేని గ్రూప్‌లో భాగం -మీరు వెరిఫై చేసిన ఖాతాకు ఈ పరికరాన్ని యాక్సెస్ చేసే అధికారం లేదు. +మీరు వెరిఫై చేసిన ఖాతాకు ఈ డివైజ్‌ను యాక్సెస్ చేసే అధికారం లేదు. సిస్టమ్ వారీ అప్‌డేటర్ టెక్స్ట్ కర్సర్‌తో మీరు పేజీలను నావిగేట్ చేయవచ్చు. Ctrl + ‌ను నొక్కి ఆఫ్ చేయండి. మీ నిర్వాహకుడు ఇన్‌స్టాల్ చేశారు @@ -7660,7 +7660,7 @@ &పేమెంట్ ఆప్షన్‌లు మీ బ్రౌజర్, OS, పరికరం గురించి సమాచారాన్ని చదవండి మధ్యకు అమర్చండి -ఈ పరికరాన్ని ఆఫ్‌లైన్ డెమో మోడ్‌లో సెటప్ చేయలేరు. +ఈ డివైజ్‌ను ఆఫ్‌లైన్ డెమో మోడ్‌లో సెటప్ చేయలేరు. థర్డ్ పార్టీ కుక్కీలను బ్లాక్ చేయండి "" ఎక్సటెన్షన్ మీ ప్రాక్సీ సెట్టింగ్‌లపై నియంత్రణను కలిగి ఉంది, అంటే ఇది మీరు ఆన్‌లైన్‌‍లో చేసే ప్రతిదీ మార్చగలదు, విచ్ఛిన్నం చేయగలదు లేదా మీకు తెలియకుండా గమనించగలదు. ఈ మార్పు ఎందుకు జరిగిందో మీకు సరిగ్గా తెలియదంటే, బహుశా మీరు ఇది కోరుకొని ఉండకపోవచ్చు. ఈ పేజీ కోసం QR కోడ్‌ను క్రియేట్ చేయండి @@ -7765,7 +7765,7 @@ &అన్నీ ఎంచుకోండి ఏదేమైనా డౌన్‌లోడ్ చేయండి భద్రతకు తిరిగి వెళ్ళు -పరికరాన్ని ఉపయోగించడం కొనసాగించండి +డివైజ్‌ను ఉపయోగించడం కొనసాగించండి Password Managerకు మరింత యాక్సెస్ అవసరం మీ కీబోర్డ్ ఇన్‌పుట్‌ను ఓవర్‌రైడ్ చేయడానికి అనుమతించబడింది మీరు సైన్ ఇన్ చేసి ఉన్నప్పుడు, మీ Google ఖాతాలో సేవ్ చేసిన బుక్‌మార్క్‌లు, ఎక్స్‌టెన్షన్‌లు, అలాగే మరిన్నింటిని మీ అన్ని డివైజ్‌లలో ఉపయోగించవచ్చు @@ -7866,7 +7866,7 @@ , ADB డీబగ్గింగ్‌ను డిజేబుల్ చేసింది. ఇది మీ ను 24 గంటలలో రీసెట్ చేస్తుంది. మీరు ఉంచాలనుకునే ఫైళ్లను బ్యాకప్ చేసుకోండి. యాప్ భాష ఇప్పటికీ డేటాలో కొంత వ్యక్తిగత సమాచారం ఉండవచ్చు. ఎగుమతి చేయబడిన ఫైల్స్‌ను తప్పక రివ్యూ చేయండి. -USB పరికరాన్ని జోడించండి +USB డివైజ్‌ను జోడించండి కోసం కొత్త ప్రొఫైల్‌ను క్రియేట్ చేయండి ఇంటర్నెట్ ముద్రణ ప్రోటోకాల్ (IPPS) మీ ఫిజికల్‌ లొకేషన్‌ను గుర్తించండి @@ -7890,7 +7890,7 @@ యాప్ భాషలు SECG దీర్ఘవృత్తాకార వక్రం secp256r1 (ANSI X9.62 prime256v1, NIST P-256గా కూడా పిలువబడతాయి) టాస్క్‌ను మీ కంట్రోల్‌లోకి తీసుకోండి -పరికరాన్ని ఆన్ చేసి ఉంచండి +డివైజ్‌ను ఆన్ చేసి ఉంచండి నిర్మలమైన మీ రహస్య పదబంధాన్ని కలిగి ఉన్న వారు మాత్రమే మీ ఎన్‌క్రిప్ట్ చేసిన‌ డేటాను చదవగలరు. రహస్య పదబంధం ఎవరికీ పంపబడదు లేదా Googleలో స్టోరేజ్‌ చేయబడదు. మీరు మీ రహస్య పదబంధాన్ని మర్చిపోతే లేదా ఈ సెట్టింగ్‌ను మార్చాలనుకుంటే, సింక్‌ను రీసెట్ చేయాల్సి ఉంటుంది. సింక్‌ను రీసెట్ చేయండి. పేజీని కిందికి కదిలించడానికి పైకి స్క్రోల్ చేయండి @@ -7953,7 +7953,7 @@ ఎల్లప్పుడూ ను అనుమతించండి మీ పరికర EID , పరికర సీరియల్ నంబర్ . సర్వీస్‌ను యాక్టివేట్ చేయడంలో సహాయపడటానికి ఈ నంబర్‌లను ఉపయోగించవచ్చు. ఈ ట్యాబ్‌ను మరొక పరికరానికి పంపడానికి, అక్కడ Chromeకు సైన్ ఇన్ చేయండి -మీ కంప్యూటర్ విశ్వసనీయ ప్లాట్‌ఫామ్ మాడ్యూల్ (TPM) సెక్యూరిటీ పరికరాన్ని కలిగి ఉంది, ఇది ChromeOSలో అనేక కీలకమైన సెక్యూరిటీ ఫీచర్‌లను అమలు చేయడానికి ఉపయోగించబడుతుంది. మరింత తెలుసుకోవడానికి Chromebook సహాయ కేంద్రాన్ని సందర్శించండి: https://support.google.com/chromebook/?p=tpm +మీ కంప్యూటర్ విశ్వసనీయ ప్లాట్‌ఫామ్ మాడ్యూల్ (TPM) సెక్యూరిటీ డివైజ్‌ను కలిగి ఉంది, ఇది ChromeOSలో అనేక కీలకమైన సెక్యూరిటీ ఫీచర్‌లను అమలు చేయడానికి ఉపయోగించబడుతుంది. మరింత తెలుసుకోవడానికి Chromebook సహాయ కేంద్రాన్ని సందర్శించండి: https://support.google.com/chromebook/?p=tpm మీ MIDI పరికరాలను కంట్రోల్ చేసి, రీప్రోగ్రామ్ చేయమని సైట్‌లు అడగవచ్చు బుక్‌మార్క్‌ను ఎడిట్ చేయండి ChromeOSకు, Android యాప్స్, సర్వీస్‌ల కోసం లొకేషన్‌ను ఉపయోగించండి. @@ -7966,6 +7966,7 @@ చిత్రం ఫైళ్లు ఛానెల్ మరియు పవర్‌వాష్‌ను మార్చు ప్రమాదకరమైన సాఫ్ట్‌వేర్ ఇన్‌స్టాల్ చేసే విధంగా లేదా మీ పాస్‌వర్డ్‌లు, ఫోన్ నంబర్‌లు లేదా క్రెడిట్ కార్డ్‌ల వంటి మీ వ్యక్తిగత సమాచారాన్ని బహిర్గతం చేసే విధంగా మిమ్మల్ని మాయ చేసే హ్యాకర్‌ల నుండి మిమ్మల్ని సురక్షిత బ్రౌజింగ్ రక్షిస్తుంది. మీరు దీన్ని ఆఫ్ చేస్తే, అపరిచిత లేదా విశ్వసనీయం కాని సైట్‌లను బ్రౌజ్ చేసినప్పుడు జాగ్రత్త వహించండి. +మీరు సైన్ ఇన్ చేసి ఉన్నప్పుడు, మీ Google ఖాతాలో సేవ్ చేసిన థీమ్‌లు, సెట్టింగ్‌లు, అలాగే మరిన్నింటిని మీ అన్ని డివైజ్‌లలో ఉపయోగించవచ్చు కీని ఆటోమేటిక్‌గా రిపీట్ చేయడానికి నొక్కి, పట్టుకోండి ‌కు సంబంధించిన ఏ వెర్షన్‌ను ఇన్‌స్టాల్ చేయాలో ఎంచుకోండి. అప్‌డేట్‌లు, యాప్‌లు ఇన్‌స్టాల్ చేయండి @@ -7980,7 +7981,7 @@ పేజీ పై వైపు కీ అన్ని యాప్‌ల కోసం యాక్సెస్‌ను శాశ్వతంగా తీసివేయండి కీలకమైన అప్‌డేట్‌ను ఇన్‌స్టాల్ చేయండి -సమస్యను పరిశీలించడం కోసం మీ అడ్మినిస్ట్రేటర్ లాగిన్ చేశారు. అడ్మినిస్ట్రేటర్ మీకు కంట్రోల్‌ను తిరిగి ఇచ్చిన తర్వాత మీరు పరికరాన్ని ఉపయోగించడం కొనసాగించవచ్చు. +సమస్యను పరిశీలించడం కోసం మీ అడ్మినిస్ట్రేటర్ లాగిన్ చేశారు. అడ్మినిస్ట్రేటర్ మీకు కంట్రోల్‌ను తిరిగి ఇచ్చిన తర్వాత మీరు డివైజ్‌ను ఉపయోగించడం కొనసాగించవచ్చు. కొత్త పరికరాల కోసం స్కాన్ చేయండి Debian 11 (Bullseye) కు అప్‌గ్రేడ్ అందుబాటులో ఉంది ప్యాక్ చేయబడని ఎక్స్‌టెన్షన్‌లను లోడ్ చేయండి @@ -7996,7 +7997,7 @@ ఈ కంప్యూటర్ వినియోగదారులందరికీ ఆటోమేటిక్ అప్‌డేట్‌లను సెట్ చేస్తుంది. పాయింట్ స్కానింగ్ వేగం తొలగించండి -మీరు ను ఉపయోగించడానికి ముందు మీ పరికరాన్ని అప్‌డేట్ చేయాలి. +మీరు ను ఉపయోగించడానికి ముందు మీ డివైజ్‌ను అప్‌డేట్ చేయాలి. అస్తవ్యస్తం సైన్ అవుట్ అయి ఉండండి క్యాప్షన్‌లను అనువదించడానికి భాషను ఎంచుకోండి @@ -8080,7 +8081,7 @@ ఈ ఫైల్, మీ వ్యక్తిగత ఖాతాలకు, సోషల్ నెట్‌వర్క్ ఖాతాలకు హాని కలిగించవచ్చు ప్రకాశాన్ని తగ్గిస్తుంది మెరుగైన భద్రతా వివరాలను చూపించు -పరికరంలో రికవరీని అసాధ్యం చేసే ఎర్రర్ ఏర్పడింది. దయచేసి మీ పరికరాన్ని రీసెట్ చేయండి (ఇది మొత్తం యూజర్ డేటాను ఫ్యాక్టరీ రీసెట్ చేస్తుంది), మళ్లీ ట్రై చేయండి. +డివైజ్‌లో రికవరీని అసాధ్యం చేసే ఎర్రర్ ఏర్పడింది. దయచేసి మీ డివైజ్‌ను రీసెట్ చేయండి (ఇది మొత్తం యూజర్ డేటాను ఫ్యాక్టరీ రీసెట్ చేస్తుంది), మళ్లీ ట్రై చేయండి. Wi-Fiని బదిలీ చేయడం సాధ్యపడదు థీమ్ ఆటోమేటిక్‌గా ఉండే Chrome థీమ్‌కు అప్‌డేట్ చేయబడింది మీ డివైజ్ @@ -8098,7 +8099,7 @@ కు సంబంధించినది యాప్: మీ Chromebookను రీస్టార్ట్ చేసి, మళ్ళీ ట్రై చేయండి -‌ను తొలగించడం గురించి ఆలోచించండి, తద్వారా ఈ పరికరాన్ని ఉపయోగించే ఇతర వ్యక్తులు మీ పాస్‌వర్డ్‌లను చూడలేరు +‌ను తొలగించడం గురించి ఆలోచించండి, తద్వారా ఈ డివైజ్‌ను ఉపయోగించే ఇతర వ్యక్తులు మీ పాస్‌వర్డ్‌లను చూడలేరు సురక్షితం కాని అన్ని కనెక్షన్‌ల గురించి మిమ్మల్ని హెచ్చరిస్తుంది ‌కు సంబంధించి, మూడ్‌తో వ ఇమేజ్ జెనరేట్ చేయబడింది. మీరు మరొక నెట్‌వర్క్‌కు కనెక్ట్ అయ్యి ఉండకపోతే, Google Chrome మొబైల్ డేటాను ఉపయోగిస్తుంది. @@ -8167,7 +8168,7 @@ Family Link ద్వారా మేనేజ్ చేయబడేది {GROUP_COUNT,plural, =1{దీని వలన ‌కు సైన్-ఇన్ చేసిన అన్ని డివైజ్‌ల నుండి గ్రూప్ డిలీట్ అవుతుంది}other{దీని వలన ‌కు సైన్-ఇన్ చేసిన అన్ని డివైజ్‌ల నుండి గ్రూప్‌లు డిలీట్ అవుతాయి}} వినియోగదారులు -అన్ని వినియోగదారు ఖాతాలను తీసివేయండి మరియు మీ పరికరాన్ని కొత్త‌ దాని లాగా రీసెట్ చేయండి. +అన్ని యూజర్ ఖాతాలను తీసివేయండి అలాగే మీ డివైజ్‌ను కొత్త‌ దాని లాగా రీసెట్ చేయండి. ఈ వెబ్ యాప్ నుండి: మళ్లీ చేయి రూపం & వాల్‌పేపర్ @@ -8185,7 +8186,7 @@ మీ లోకల్ నెట్‌వర్క్‌లో ఏదైనా పరికరం కోసం చూడటానికి లేదా కనెక్ట్ చేయడానికి సైట్‌లు ఈ ఫీచర్‌ను ఉపయోగించవచ్చు ట్యాబ్ సెర్చ్ మధ్యస్థ మెమరీ సేవింగ్స్ -వేరే పరికరాన్ని ఉపయోగించండి +వేరే డివైజ్‌ను ఉపయోగించండి దీనిని డౌన్‌లోడ్ చేయడానికి అనుమతి కావాలి ఏవైనా డూప్లికేట్ బుక్‌మార్క్‌లను క్లీనప్ చేయడానికి, వాటిని మీ Google ఖాతాలో సేవ్ చేయండి టెక్స్ట్ ఫార్మాట్ చేయడం @@ -8338,7 +8339,7 @@ ద్వారా మేనేజ్‌మెంట్ సెటప్ చేయబడుతోంది మీ పాస్‌ఫ్రేజ్‌ని ఎంటర్ చేయండి ‌ను జోడించండి -అజ్ఞాత మోడ్ మీ పరికరాన్ని ఉపయోగించే ఇతరుల నుండి మీ బ్రౌజింగ్‌ను ప్రైవేట్‌గా ఉంచుతుంది +అజ్ఞాత మోడ్ మీ డివైజ్‌ను ఉపయోగించే ఇతరుల నుండి మీ బ్రౌజింగ్‌ను ప్రైవేట్‌గా ఉంచుతుంది (USB) బ్యాటరీ లైఫ్‌ను పొడిగించడానికి స్క్రీన్ ప్రకాశాన్ని తగ్గించండి, బ్యాక్‌గ్రౌండ్ యాక్టివిటీ, విజువల్ ఎఫెక్ట్స్‌ను పరిమితం చేయండి, ఇంకా నోటిఫికేషన్‌లను ఆలస్యం చేయండి, Chrome ఎనర్జీ సేవర్ ఫీచర్‌ను ఆన్ చేయండి. కీబోర్డ్ బ్రైట్‌నెస్‌ను పెంచుతుంది @@ -8492,7 +8493,7 @@ మీరు ఈ సర్వీస్‌ను సెట్టింగ్‌లలో ఆఫ్ చేయవచ్చు. Linux బ్యాకప్ రద్దు చేయబడింది పిన్ చెల్లదు -ఈ పరికరాన్ని విస్మరించాలా? +ఈ డివైజ్‌ను విస్మరించాలా? Microsoft OneDrive సెట్టింగ్‌లు ప్రొఫైల్ సపోర్ట్ చేస్తుంది మీ ‌లో Google Lensను ట్రై చేయండి @@ -8603,7 +8604,7 @@ మీరు మీ సేవ్ చేయబడిన పాస్‌వర్డ్‌లను ఎల్లప్పుడూ యాక్సెస్ చేయగలరని నిర్ధారించుకోవడానికి, అది మీరేనని వెరిఫై చేయండి ప్రస్తుత ట్యాబ్‌తో కూడిన సరికొత్త 'స్ప్లిట్ వ్యూ' XML సైట్‌లిస్ట్‌లు చివరిగా న డౌన్‌లోడ్ చేయబడ్డాయి. -చాట్ యాప్‌లలో మీ లభ్యతను సెట్ చేయడానికి మీరు మీ పరికరాన్ని యాక్టివ్‌గా ఉపయోగిస్తున్నప్పుడు సాధారణంగా సైట్‌లు గుర్తిస్తాయి +చాట్ యాప్‌లలో మీ లభ్యతను సెట్ చేయడానికి మీరు మీ డివైజ్‌ను యాక్టివ్‌గా ఉపయోగిస్తున్నప్పుడు సాధారణంగా సైట్‌లు గుర్తిస్తాయి నెట్‌వర్క్ డీబగ్గింగ్ మీ కెమెరా, ఫోటో గ్యాలరీతో షాపింగ్ చేయండి, అనువదించండి, మీకు కనిపించిన వాటిని గుర్తించండి మ్యూట్ చేయి @@ -8703,7 +8704,7 @@ ఈ ఎక్స్‌టెన్షన్ Google రివ్యూ చేయని కోడ్‌ను కూడా రన్ చేయగలదు. ఇది సురక్షితం కాకపోవచ్చు, మీరు ఏమి చేస్తున్నారో మీకు తెలిస్తేనే దీన్ని ఎనేబుల్ చేయాలి. మెమరీ ఫుట్‌ప్రింట్ సెల్యూలార్ SIM పిన్ -వేరొక పరికరాన్ని ట్రై చేయండి +వేరొక డివైజ్‌ను ట్రై చేయండి క్యాప్షన్ ప్రాధాన్యతలు మీకు ఈ పేజీలో Google Calendar మళ్లీ కనిపించదు సురక్షితం కాని సైట్‌లకు వెళ్లే ముందు ఎలాంటి హెచ్చరికలను చూడవద్దు @@ -8826,7 +8827,7 @@ సైట్‌కు వెళ్లండి - యాక్టివిటీ లాగ్ మీ పరికరాలలో: -వీడియో మీటింగ్‌ కోసం పరికరాన్ని నమోదు చేయండి +వీడియో మీటింగ్‌ కోసం డివైజ్‌ను ఎన్‌రోల్ చేయండి కొత్త గ్రూప్ కనెక్ట్ చేయబడింది, కానీ కాన్ఫిగర్ చేయాలి Ctrl, Alt, లేదా Search చేర్చండి @@ -8839,7 +8840,7 @@ {COUNT,plural, =1{{COUNT} ఫైల్}other{{COUNT} ఫైళ్ళు}} హై-క్వాలిటీ వాయిస్ ఫైళ్లు డౌన్‌లోడ్ చేయబడ్డాయి ఆల్ఫా -మీ పరికరాన్ని అన్‌లాక్ చేయడానికి వేగవంతమైన మార్గాన్ని సెటప్ చేయండి +మీ డివైజ్‌ను అన్‌లాక్ చేయడానికి వేగవంతమైన మార్గాన్ని సెటప్ చేయండి నుండి తెలియని ఉత్పత్తి సైట్ MIDIని ఉపయోగించగలదు ఇటీవలి ట్యాబ్‌లు @@ -8924,7 +8925,7 @@ పాస్‌వర్డ్‌ల పేజీకి వెళ్లండి కంటెంట్ ట్రాన్స్‌ఫర్ Linux కంటైనర్ కాన్ఫిగర్ అవుతోంది. దీనికి 30 నిమిషాల వరకు పట్టవచ్చు. -బిజినెస్ నమోదును నిరోధించే మోడ్‌లో ఈ పరికరం లాక్ చేయబడింది. మీరు పరికరాన్ని నమోదు చేయాలనుకుంటే ముందుగా పరికరాన్ని పునరుద్ధరించాలి. +ఎంటర్‌ప్రైజ్ ఎన్‌రోల్‌మెంట్ నిరోధించే మోడ్‌లో ఈ డివైజ్ లాక్ చేయబడింది. మీరు డివైజ్ ఎన్‌రోల్ చేయాలనుకుంటే ముందుగా డివైజ్‌ను రికవరీ చేయాలి. {NUM_PASSWORDS,plural, =1{ కోసం 1 పాస్‌వర్డ్ కి దిగుమతి చేయబడింది}other{ కోసం {NUM_PASSWORDS} పాస్‌వర్డ్‌లు కి దిగుమతి చేయబడ్డాయి}} సిస్టమ్ గురించి షేర్‌ను మౌంట్ చేయడంలో ఎర్రర్ ఏర్పడింది. పేర్కొన్న షేర్ ఇప్పటికే మౌంట్ చేయబడింది. @@ -8956,7 +8957,7 @@ బ్రైట్‌నెస్‌ను పెంచండి ఆర్కైవ్‌లో Chrome లాగ్ ఫైళ్లను చేర్చండి. అప్‌డేట్‌ తనిఖీ ప్రారంభం విఫలమైంది (ఎర్ర‌ర్‌ కోడ్ ). -నిర్వాహకులు, ఈ పరికరాన్ని కేటాయించబడని స్థితిలో ఉంచారు. దీనిని నమోదు కోసం ప్రారంభించడానికి, ఈ పరికరాన్ని పెండింగ్ స్థితిలో ఉంచమని దయచేసి మీ నిర్వాహకులను కోరండి. +అడ్మినిస్ట్రేటర్, ఈ డివైజ్‌ను డీ-ప్రొవిజన్‌డ్ స్టేటస్‌లో (ఎవరికీ కేటాయించని స్థితిలో) ఉంచారు. ఎన్‌రోల్‌మెంట్ కోసం దీన్ని ఎనేబుల్ చేయడానికి, ఈ డివైజ్‌ను పెండింగ్ స్టేటస్‌లో పెట్టమని మీ అడ్మినిస్ట్రేటర్‌ను అడగండి. స్విచ్ యాక్సెస్ ట్యాబ్ మళ్లీ యాక్టివేట్ చేయబడింది హాట్‌స్పాట్‌ను ఆటోమేటిక్‌గా ఆఫ్ చేయండి @@ -9036,7 +9037,7 @@ మునుపటి సెషన్‌ను కొనసాగించడం సాధ్యం కాదు Microsoft 365, Word, Excel, PowerPoint ఫైల్స్‌ను తెరవడానికి, ఎడిట్ చేయడానికి OneDriveని ఉపయోగిస్తుంది. ఈ ఫైల్స్ "Microsoft OneDrive" అని లేబుల్ చేయబడిన Files యాప్ సైడ్ నావిగేషన్‌లో కనుగొనబడతాయి. మీ Microsoft ఖాతాతో మీరు సైన్ ఇన్ చేయాలి. మరింత తెలుసుకోండి సైట్‌లు మీరు ఊహించిన విధంగా పని చేయకపోవచ్చు. మీరు సందర్శించిన సైట్‌లకు సంబంధించిన సమాచారాన్ని మీరు పరికరంలో ఉంచకూడదు అనుకుంటే ఈ ఆప్షన్‌ను ఎంచుకోండి. -ఈ పరికరాన్ని పరికరంగా మార్చండి. +ఈ డివైజ్‌ను డివైజ్‌గా మార్చండి. గత 24 గంటలు ఈ ఎక్స్‌టెన్షన్‌కు ప్రత్యేక అనుమతులు అవసరం లేదు అధిక కాంట్రాస్ట్ ఆన్/ఆఫ్ @@ -9087,7 +9088,7 @@ యాప్ కమాండ్ పరికరంలో సైట్ డేటా మీ పరికరంలో తగినంత స్థలం ఉన్నట్లు నిర్ధారించుకోండి -ఈ పరికరాన్ని ఎన్‌రోల్ చేయడానికి మీకు తగిన అప్‌గ్రేడ్‌లు లేవు. దయచేసి మరిన్నింటిని కొనుగోలు చేయడానికి విక్రయ కేంద్రాన్ని సంప్రదించండి. మీకు ఈ మెసేజ్ పొరపాటున వచ్చిందని మీరు విశ్వసిస్తే, దయచేసి సపోర్ట్ విభాగాన్ని సంప్రదించండి. +ఈ డివైజ్‌ను ఎన్‌రోల్ చేయడానికి మీకు తగిన అప్‌గ్రేడ్‌లు లేవు. దయచేసి మరిన్నింటిని కొనుగోలు చేయడానికి విక్రయ కేంద్రాన్ని కాంటాక్ట్ చేయండి. మీకు ఈ మెసేజ్ పొరపాటున వచ్చిందని మీరు విశ్వసిస్తే, దయచేసి సపోర్ట్ విభాగాన్ని సంప్రదించండి. వేలిముద్ర జోడించబడింది. ‌ను బ్లాక్ చేయాలా? కొన్ని సపోర్ట్ లింక్‌లు ఇప్పటికీ , , , మరో యాప్‌లలో తెరవబడతాయి. @@ -9107,7 +9108,7 @@ మీరు ఎంటర్ప్రైజ్-ఎన్‌రోల్ చేసిన పరికరంలో ఉండాలి సహా&యం పొందండి లో ప్రసారం చేయడాన్ని పాజ్ చేయండి -ఈ పరికరాన్ని శాశ్వతంగా కియోస్క్ మోడ్‌లో ఉంచు +ఈ డివైజ్‌ను శాశ్వతంగా కియోస్క్ మోడ్‌లో ఉంచు '' తొలగించబడింది మీరు మీ డ్రైవింగ్ లైసెన్స్ లేదా పాస్‌పోర్ట్ నంబర్ వంటి ఫారమ్‌లను సమర్పించినప్పుడు ఆటోఫిల్ సమాచారాన్ని సేవ్ చేయడాన్ని ఆఫర్ చేయగలదు డెస్క్‌టాప్ ఆడియోను ప్రసారం చేయడానికి ఈ పరికరం సపోర్ట్ చేయదు @@ -9283,7 +9284,7 @@ పేపర్ జామ్ అయింది ప్రొఫైల్‌ను మార్చాలా? ను చిన్నారి కోసం సెటప్ చేయండి -ఈ పరికరాన్ని మీ సంస్థలో ఎన్‌రోల్ చేయాలనుకుంటున్నారా? +ఈ డివైజ్‌ను మీ సంస్థలో ఎన్‌రోల్ చేయాలనుకుంటున్నారా? , ADB డీబగ్గింగ్‌ను డిజేబుల్ చేసింది. ఒకసారి మీరు మీ ను రీస్టార్ట్ చేశాక, మీరు యాప్‌లను సైడ్‌లోడ్ చేయలేరు. ‌లో సేవ్ అయింది () @@ -9603,14 +9604,14 @@ ‌గా సైన్ ఇన్ చేశారు ఇది సాధారణంగా డౌన్‌లోడ్ చేయబడే ఫైల్ రకం కాదు, అంతే కాకుండా ఇది ప్రమాదకరమైనది కావచ్చు అప్‌డేట్‌ల కోసం చెక్ చేస్తున్నప్పుడు ఎర్రర్ ఏర్పడింది: -, ఈ పరికరాన్ని మునుపటి వెర్షన్‌కు మార్చారు. దయచేసి ముఖ్యమైన ఫైళ్లను సేవ్ చేసి, ఆపై రీస్టార్ట్ చేయండి. ఈ పరికరంలో ఉన్న మొత్తం డేటా తొలగించబడుతుంది. +, ఈ డివైజ్‌ను మునుపటి వెర్షన్‌కు మార్చారు. దయచేసి ముఖ్యమైన ఫైళ్లను సేవ్ చేసి, ఆపై రీస్టార్ట్ చేయండి. ఈ డివైజ్‌లో ఉన్న మొత్తం డేటా తొలగించబడుతుంది. యాప్‌తో మీ ఖాతాలోని ఇతర పరికరాలతో సింక్ చేయబడింది. మరింత తెలుసుకోండి EAP నెట్‌వర్క్ ప్రామాణీకరణ సమాచారం నుండి - పిన్ చేయబడింది పరికరంలో డీబగ్గింగ్ ఫీచ‌ర్‌లను ప్రారంభించండి -పరికరాన్ని ఎన్‌రోల్ చేయండి +డివైజ్‌ను ఎన్‌రోల్ చేయండి ఎక్స్‌టెన్షన్‌ను అనుమతించమని మీ తల్లి/తండ్రిని అడగండి యాక్సెస్ ఉన్న వ్యక్తులు సర్వర్‌తో కనెక్ట్ చేయడం సాధ్యపడలేదు. మీ నెట్‌వర్క్ కనెక్షన్‌ను చెక్ చేసి, మళ్లీ ట్రై చేయండి. మీకు ఇంకా సమస్య ఉంటే, మీ Chromebookను రీస్టార్ట్ చేయడానికి ట్రై చేయండి. ఎర్రర్ కోడ్: . @@ -9631,7 +9632,7 @@ మీ అడ్మినిస్ట్రేటర్ ఈ భాషను అనుమతించరు కొత్త ట్యాబ్ Smart Lock మీ ఖాతాను ధృవీకరించలేకపోయింది. ప్రవేశించడానికి మీ పాస్‌వర్డ్‌ను టైప్ చేయండి. -దురదృష్టవశాత్తూ, మీ సెట్టింగ్‌లను పునరుద్ధరించలేకపోయింది. ఎర్రర్‌ను పరిష్కరించడానికి, మీ పరికరాన్ని తప్పనిసరిగా పవర్‌వాష్‌తో రీసెట్ చేయాలి. +దురదృష్టవశాత్తూ, మీ సెట్టింగ్‌లను రికవర్ చేయలేకపోయింది. ఎర్రర్‌ను ఫిక్స్ చేయడానికి, మీ డివైజ్‌ను తప్పనిసరిగా పవర్‌వాష్‌తో రీసెట్ చేయాలి. Linux పోర్ట్ ఫార్వర్డింగ్ Linuxలో డిస్క్ స్పేస్ తక్కువగా ఉంది దయచేసి వేచి ఉండండి....కియోస్క్ యాప్ అప్‌డేట్ అయ్యే ప్రాసెస్‌లో ఉంది. USB స్టిక్‌ను తీసివేయకండి. @@ -9705,9 +9706,9 @@ యాక్టివ్‌గా ఉన్న సైట్ కనెక్ట్ చేసిన ఫోన్ ఫీచర్‌లు ఎనేబుల్ చేయబడతాయి. మిమ్మల్ని సైన్ ఇన్ చేస్తోంది… -Google Driveలో బ్యాకప్ చేయండి. సులభంగా మీ డేటాను పునరుద్ధరించండి లేదా ఎప్పుడైనా పరికరాన్ని స్విచ్ చేయండి. మీ బ్యాకప్‌లో యాప్ డేటా కూడా ఉంటుంది. మీ బ్యాకప్‌లు Googleకు అప్‌లోడ్ చేయబడతాయి, మీ Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ చేయబడతాయి. +Google Driveలో బ్యాకప్ చేయండి. సులభంగా మీ డేటాను రీస్టోర్ చేయండి లేదా ఎప్పుడైనా డివైజ్‌ను స్విచ్ చేయండి. మీ బ్యాకప్‌లో యాప్ డేటా కూడా ఉంటుంది. మీ బ్యాకప్‌లు Googleకు అప్‌లోడ్ చేయబడతాయి, మీ Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ చేయబడతాయి. ఖాతాను జోడించడంలో ఎర్రర్ ఏర్పడింది -పరికరాన్ని నమోదు చేస్తోంది... +డివైజ్‌ను ఎన్‌రోల్ చేస్తోంది... గేమ్‌లు లేదా రిమోట్ డెస్క్‌టాప్ యాప్‌ల వంటి మీ మౌస్ ఇన్‌పుట్‌ను క్యాప్చర్ చేయడానికి, ఉపయోగించడానికి సైట్‌లు ఈ ఫీచర్‌ను ఉపయోగిస్తాయి Play Storeను ఆన్ చేయండి నిశ్శబ్ద మెసేజింగ్‌ను ఉపయోగించండి @@ -9801,7 +9802,7 @@ {NUM_WEEKS,plural, =1{ని {NUM_WEEKS} వారంలోపు తిరిగివ్వండి}other{ని {NUM_WEEKS} వారాలలోపు తిరిగివ్వండి}} Office ఫైల్ సెట్టింగ్‌లు కోసం Google Password Managerలో -యాక్సెసిబిలిటీ ఫీచర్‌లు మీ పరికరాన్ని సులభంగా ఉపయోగించేలా చేస్తాయి. క్విక్ సెట్టింగ్‌లను యాక్సెస్ చేయడానికి, మీ స్క్రీన్ దిగువున ఉన్న సమయాన్ని ఎంచుకోండి. +యాక్సెసిబిలిటీ ఫీచర్‌లు మీ డివైజ్‌ను సులభంగా ఉపయోగించేలా చేస్తాయి. క్విక్ సెట్టింగ్‌లను యాక్సెస్ చేయడానికి, మీ స్క్రీన్ దిగువున ఉన్న సమయాన్ని ఎంచుకోండి. మీ పరికరాలకు కనిపిస్తుంది {NUM_ATTEMPTS,plural, =1{పిన్ తప్పు. మీకు 1 ప్రయత్నం మిగిలి ఉంది.}other{పిన్ తప్పు. మీకు # ప్రయత్నాలు మిగిలి ఉన్నాయి.}} సబ్‌టైటిళ్లు @@ -9828,9 +9829,9 @@ టచ్‌స్క్రీన్ కాలిబ్రేషన్ సైట్ బ్లూటూత్‌ను ఉపయోగించవచ్చు వర్చువల్ రియాలిటీ లేదా ఫిట్‌నెస్ ట్రాకింగ్ వంటి ఫీచర్‌ల కోసం సాధారణంగా సైట్‌లు పరికర మోషన్ సెన్సార్‌లను ఉపయోగించుకుంటాయి -మీ ప్రొఫైల్‌తో మీ పరికరాన్ని ఉపయోగించడానికి, మీ సంస్థకు పరికరం గురించిన సమాచారం అవసరం. +మీ ప్రొఫైల్‌తో మీ డివైజ్‌ను ఉపయోగించడానికి, మీ ఆర్గనైజేషన్‌కు డివైజ్ గురించిన సమాచారం అవసరం. -ఇది ఇన్‌స్టాల్ చేయబడిన సాఫ్ట్‌వేర్, ఫైళ్లు, మీ బ్రౌజర్, అలాగే పరికరం తాలూకు ఆపరేటింగ్ సిస్టమ్, IP అడ్రస్‌ల గురించిన సమాచారాన్ని కలిగి ఉంటుంది. +ఇది ఇన్‌స్టాల్ చేయబడిన సాఫ్ట్‌వేర్, ఫైళ్లు, మీ బ్రౌజర్, అలాగే డివైజ్ తాలూకు ఆపరేటింగ్ సిస్టమ్, IP అడ్రస్‌ల గురించిన సమాచారాన్ని కలిగి ఉంటుంది. చూపు సమస్య ఉన్న వారికి సహాయపడే డిస్‌ప్లే టూల్స్ మీ నిర్వాహకుడు ఇన్‌స్టాల్ చేశారు క్యాప్టివ్ పోర్టల్ లాగిన్ పేజీని సందర్శించండి @@ -9866,7 +9867,7 @@ Play Storeను తెరువు రాయడంలో నాకు సహాయపడండి బుక్‌మార్క్ నమూనాను లోడ్ చేయడం సాధ్యం కాలేదు. -ఇతరులు ఈ పరికరాన్ని ట్రాక్ చేయకుండా నిరోధించడానికి మీ హార్డ్‌వేర్ ID (BSSID)ని ర్యాండమైజ్ చేయండి. +ఇతరులు ఈ డివైజ్‌ను ట్రాక్ చేయకుండా నిరోధించడానికి మీ హార్డ్‌వేర్ ID (BSSID)ని ర్యాండమైజ్ చేయండి. VPN పేజీలను ఒకే ట్యాబ్‌లో పక్కపక్కనే ఉంచండి. తద్వారా ఆప్షన్‌లతో పాటు మరిన్నింటిని కంపేర్ చేయవచ్చు. చలన సెన్సార్‌లను ఉపయోగించనీయకుండా ఈ సైట్ బ్లాక్ చేయబడింది. @@ -10029,7 +10030,7 @@ స్క్రీన్‌పై కీబోర్డ్ ఇంకా Linux యాప్‌లలో పనిచేయడం లేదు కొత్త థీమ్ జోడించబడింది () ఎక్స్‌టెన్షన్‌లు అనేవి Chromeలో ఉపయోగించగల యాడ్-ఆన్‌లు, ఇవి మీకు మరిన్ని పనులను చేయడంలో సహాయపడతాయి -‌ను తొలగించండి, తద్వారా ఈ పరికరాన్ని ఉపయోగించే ఇతర వ్యక్తులు మీ పాస్‌వర్డ్‌లను చూడలేరు +‌ను తొలగించండి, తద్వారా ఈ డివైజ్‌ను ఉపయోగించే ఇతర వ్యక్తులు మీ పాస్‌వర్డ్‌లను చూడలేరు అదనపు స్విచ్‌లను అసైన్ చేయాలా? వీడియో అడ్రస్‌ను కా&పీ చేయండి మీ సంస్థ సురక్షిత బ్రౌజింగ్‌ను ఆఫ్ చేసింది @@ -10127,16 +10128,16 @@ డిక్టేషన్ భాషను మార్చండి మీ IP లేదా MAC అడ్రస్ వంటి నెట్‌వర్క్ సమాచారాన్ని చూడండి "గ్రూప్‌ను సేవ్ చేయండి" ఆప్షన్‌ను ఆన్ చేయండి -పెయిర్ చేయలేకపోయింది. మళ్లీ ట్రై చేయడానికి పరికరాన్ని ఎంచుకోండి. +పెయిర్ చేయలేకపోయింది. మళ్లీ ట్రై చేయడానికి డివైజ్‌ను ఎంచుకోండి. మీ కంప్యూటర్ నుండి ఫోటోలు, సంగీతం మరియు ఇతర మీడియాను యాక్సెస్ చేయండి లో బ్లూటూత్ ఆఫ్‌లో ఉంది. మీ పాస్‌వర్డ్‌ను నమోదు చేసి బ్లూటూత్‌ను ఆన్ చేయండి. (డిఫాల్ట్) ‌ను సేవ్ చేయాలా? అనేక ఫైళ్లను ఆటోమేటిక్‌గా డౌన్‌లోడ్ చేయడానికి సైట్‌లను అనుమతించకండి -భవిష్యత్తులో, మీ తీసివేయదగిన పరికరాన్ని అన్‌ప్లగ్ చేయడానికి ముందు ఫైల్స్ యాప్‌‌లో దాన్ని ఎజెక్ట్ చేయడం మర్చిపోవద్దు. లేదంటే, మీరు డేటాను కోల్పోయే అవకాశం ఉంటుంది. +భవిష్యత్తులో, మీ తీసివేయదగిన డివైజ్‌ను అన్‌ప్లగ్ చేయడానికి ముందు ఫైల్స్ యాప్‌‌లో దాన్ని ఎజెక్ట్ చేయడం మర్చిపోవద్దు. లేదంటే, మీరు డేటాను కోల్పోయే అవకాశం ఉంటుంది. ఎల్లప్పుడూ అనువదించు ‌కు సంబంధించిన విస్మరింపు రిక్వెస్ట్ -ఈ పరికరాన్ని సురక్షితంగా వినియోగించవచ్చని నిర్ధారించుకోవడానికి, దాని ఆపరేటింగ్ సిస్టమ్, బ్రౌజర్ అలాగే సెట్టింగ్‌ల గురించిన సమాచారాన్ని, పరికరంలో ఏ సాఫ్ట్‌వేర్ ఇన్‌స్టాల్ చేసి ఉంది అనే వాటిని మీ సంస్థ చూడగలదు +ఈ డివైజ్‌ను సురక్షితంగా వినియోగించవచ్చని నిర్ధారించుకోవడానికి, దాని ఆపరేటింగ్ సిస్టమ్, బ్రౌజర్ అలాగే సెట్టింగ్‌ల గురించిన సమాచారాన్ని, డివైజ్‌లో ఏ సాఫ్ట్‌వేర్ ఇన్‌స్టాల్ చేసి ఉంది అనే వాటిని మీ ఆర్గనైజేషన్ చూడగలదు ఫోన్ హబ్ ఇమేజ్‌లను క్రియేట్ చేయండి మీ గేమ్ కంట్రోల్స్‌ను అనుకూలంగా మార్చడానికి క్లిక్ చేయండి @@ -10186,7 +10187,7 @@ మీ స్క్రీన్ మరియు ఆడియోను షేర్ చేస్తోంది. కొత్త Wi-Fi నెట్‌వర్క్ డైలాగ్ Linuxలో లో షేర్ చేసిన ఫోల్డర్‌లు అందుబాటులో ఉన్నాయి. -మీ టచ్‌స్క్రీన్ పరికరాన్ని సరైన డిస్‌ప్లేకు సెటప్ చేసి, మ్యాప్ చేయండి +మీ టచ్‌స్క్రీన్ డివైజ్‌ను సరైన డిస్‌ప్లేకు సెటప్ చేసి, మ్యాప్ చేయండి {NUM_TABS,plural, =1{సైట్‌ను అన్‌మ్యూట్ చేయి}other{సైట్‌లను అన్‌మ్యూట్ చేయి}} సేవ్ చేసి, షేర్ చేయండి తర్వాతి అవసరాల కోసం పేజీని సేవ్ చేయడానికి, బుక్‌మార్క్ చిహ్నాన్ని క్లిక్ చేయండి @@ -10196,7 +10197,7 @@ సమస్య విశ్లేషణలకు సంబంధించిన డేటాను కలెక్ట్ చేస్తోంది లాబ్స్ అడ్వాన్స్‌డ్ ఆప్షన్‌లు -ఈ సైట్‌తో మీ పరికరాన్ని ఉపయోగించడం సాధ్యం కాదు +ఈ సైట్‌తో మీ డివైజ్‌ను ఉపయోగించడం సాధ్యం కాదు పరికర సర్టిఫికెట్‌లను మేనేజ్ చేయండి ఒక అప్లికేషన్ ఈ ఫోల్డర్‌ను ఉపయోగిస్తుంది కాబట్టి షేరింగ్‌ను తీసివేయడం సాధ్యపడలేదు. మళ్లీ షట్ డౌన్ అయినప్పుడు ఫోల్డర్ షేరింగ్ తీసివేయబడుతుంది. వారీగా క్రమపద్ధతిలో అమర్చండి @@ -10260,11 +10261,11 @@ కాన్వాస్ 'బాగా లేదు' ఆప్షన్ మీకు నచ్చని ఫీడ్‌బ్యాక్‌ను సమర్పిస్తుంది. ఈ కింది వాటిలో ఏది మీ నెట్‌వర్క్‌ను ఉత్తమంగా వివరిస్తుంది? -మీరు ఫైళ్లను షేర్ చేయాలనుకుంటున్న పరికరాన్ని ఎంచుకోండి +మీరు ఫైళ్లను షేర్ చేయాలనుకుంటున్న డివైజ్‌ను ఎంచుకోండి ని ఉపయోగించి మళ్లీ ప్రయత్నించు డిఫాల్ట్ రంగు ఓవర్‌స్కాన్ సర్దుబాటు -మీరు ఈ Chrome Education పరికరాన్ని ఎడ్యుకేషన్ ఖాతాలో తప్పనిసరిగా ఎన్‌రోల్ చేయాలి. కొత్త ఖాతా కోసం సైన్ అప్ చేయడానికి, దయచేసి g.co/workspace/edusignupను సందర్శించండి. +మీరు ఈ Chrome Education డివైజ్‌ను ఎడ్యుకేషన్ ఖాతాలో తప్పనిసరిగా ఎన్‌రోల్ చేయాలి. కొత్త ఖాతా కోసం సైన్ అప్ చేయడానికి, దయచేసి g.co/workspace/edusignupను సందర్శించండి. దీన్ని ఉపయోగించడం ద్వారా వ్యక్తిగత కీ ఇది మిమ్మల్ని మీ Google ఖాతాల నుండి సైన్ అవుట్ చేస్తుంది. మీ బుక్‌మార్క్‌లు, హిస్టరీ, పాస్‌వర్డ్‌లు మరియు మరిన్ని ఇకపై సింక్ చేయబడవు. @@ -10273,7 +10274,7 @@ కోసం సేవ్ చేసిన పాస్-కీ వివరాలను ఉపయోగించండి పరికర EID, QR కోడ్ పాప్‌అప్‌ను చూడండి దీని తర్వాత, బ్యాక్‌గ్రౌండ్‌లో సాఫ్ట్‌వేర్ అప్‌డేట్ అవుతుంది. మీరు సెట్టింగ్‌లలో అప్‌డేట్ ప్రాధాన్యతలను రివ్యూ చేయవచ్చు. -ఈ ఎర్రర్‌ను పరిష్కరించడానికి దయచేసి మీ పరికరాన్ని పునఃప్రారంభించండి. +ఈ ఎర్రర్‌ను ఫిక్స్ చేయడానికి దయచేసి మీ డివైజ్‌ను రీస్టార్ట్ చేయండి. ఈ గ్రూప్‌నకు సంబంధించిన తాజా అప్‌డేట్‌లు నెట్‌వర్క్ ఆఫ్ అవుతోంది... @@ -10321,7 +10322,7 @@ ఈ సైట్‌లు ద్వారా నిర్వచించబడిన గ్రూప్‌లో ఉన్నాయి. గ్రూప్‌లోని సైట్‌లు, గ్రూప్‌లో మీ యాక్టివిటీని చూడగలవు. చిత్రంలో ఉపయోగకరమైన వివరణ లేకుంటే, మీ కోసం ఒక వివరణను అందించడానికి Chrome ప్రయత్నిస్తుంది. వివరణలను క్రియేట్ చేయడానికి, చిత్రాలు Googleకు పంపబడతాయి. అప్‌డేటర్ ప్రస్తుతం అమలులో ఉంది. మళ్లీ చెక్ చేయడానికి ఒక నిమిషం తర్వాత రిఫ్రెష్ చేయండి. - మునుపు ఇన్‌స్టాల్ చేసిన వెర్షన్‌కు తిరిగి మారలేకపోయింది. దయచేసి మీ పరికరాన్ని పవర్‌వాష్ చేయడానికి మళ్లీ ట్రై చేయండి. + మునుపు ఇన్‌స్టాల్ చేసిన వెర్షన్‌కు తిరిగి మారలేకపోయింది. దయచేసి మీ డివైజ్‌ను పవర్‌వాష్ చేయడానికి మళ్లీ ట్రై చేయండి. ఈ ఫీచర్ AIని ఉపయోగిస్తుంది, ఇది ఇంకా ప్రారంభ స్థాయి అభివృద్ధి దశలోనే ఉంది, కాబట్టి ఇది నూటికి నూరు పాళ్లు ఖచ్చితంగా ఉంటుందని చెప్పలేము {NUM_OF_FILES,plural, =1{1 ఫైల్ కాపీ చేయబడింది}other{{NUM_OF_FILES} ఫైల్స్ కాపీ చేయబడ్డాయి}} డిక్టేషన్‌ను ప్రారంభించండి లేదా ఆపండి @@ -10445,11 +10446,11 @@ ఫలితంతో ఆపరేషన్ పూర్తయింది ప్రతిస్పందించడం లేదు ఆప్రికాట్ -Google Driveకు బ్యాకప్ చేయండి. ఏ సమయంలో అయినా సులభంగా మీ డేటాను పునరుద్ధరించండి లేదా పరికరాన్ని మార్చండి. మీ బ్యాకప్‌లో యాప్ డేటా ఉంటుంది. - మీ బ్యాకప్‌లు Googleకు అప్‌లోడ్ చేయబడతాయి మరియు మీ Google ఖాతా పాస్‌వర్డ్‌ని ఉపయోగించి ఎన్‌క్రిప్ట్ చేయబడతాయి. - కాంటాక్ట్‌లు, మెసేజ్‌లు మరియు ఫోటోల వంటి యాప్ సేవ్ చేసిన (డెవలపర్ సెట్టింగ్‌ల ఆధారంగా) ఎలాంటి డేటా అయినా యాప్ డేటాగా పరిగణించబడుతుంది. +Google Driveకు బ్యాకప్ చేయండి. ఏ సమయంలో అయినా సులభంగా మీ డేటాను రీస్టోర్ చేయండి లేదా డివైజ్‌ను స్విచ్ చేయండి. మీ బ్యాకప్‌లో యాప్ డేటా ఉంటుంది. + మీ బ్యాకప్‌లు Googleకు అప్‌లోడ్ అవుతాయి అలాగే మీ Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ చేయబడతాయి. + కాంటాక్ట్‌లు, మెసేజ్‌లు అలాగే ఫోటోల వంటి యాప్ సేవ్ చేసిన (డెవలపర్ సెట్టింగ్‌ల ఆధారంగా) ఎలాంటి డేటా అయినా యాప్ డేటాగా పరిగణించబడుతుంది. బ్యాకప్ డేటా మీ డిస్క్ స్టోరేజ్‌ కోటాలో లెక్కించబడదు. - మీరు సెట్టింగ్‌లలో ఈ సేవని ఆఫ్ చేయవచ్చు. + మీరు సెట్టింగ్‌లలో ఈ సర్వీస్‌ను ఆఫ్ చేయవచ్చు. ChromeOS అప్‌డేట్ అయ్యి ఉంది బ్యాటరీలో ఉన్నప్పుడు స్లీప్ మోడ్‌లో ఉండాలి PINలు సరిపోలడం లేదు @@ -10760,7 +10761,7 @@ మిడ్‌నైట్ బ్లూ మీ కీబోర్డ్‌కు దిగువ ఎడమ మూలన ఉన్న వేలిముద్ర సెన్సార్‌ను తాకండి. మీ వేలిముద్ర డేటా సురక్షితంగా స్టోర్ చేయబడుతుంది, ఎప్పటికీ మీ ‌లోనే ఉంటుంది. {COUNT,plural, =1{అడ్రస్}other{# అడ్రస్‌లు}} -ఈ పరికరాన్ని ఉపయోగించడానికి మీకు అనుమతిలేదు. సైన్ ఇన్ అనుమతి కోసం దయచేసి అడ్మినిస్ట్రేటర్‌ను కాంటాక్ట్ చేయండి లేదా Family Link ద్వారా పర్యవేక్షించబడే Google ఖాతాతో సైన్ ఇన్ చేయండి. +ఈ డివైజ్‌ను ఉపయోగించడానికి మీకు అనుమతిలేదు. సైన్ ఇన్ అనుమతి కోసం దయచేసి అడ్మినిస్ట్రేటర్‌ను కాంటాక్ట్ చేయండి లేదా Family Link ద్వారా పర్యవేక్షించబడే Google ఖాతాతో సైన్ ఇన్ చేయండి. Drive యాక్సెస్‌ను తీసివేయండి ChromeOS నెట్‌వర్క్ మార్గాలు తాజా ఫీచర్‌లు, సెక్యూరిటీ మెరుగుదలలను పొందండి. @@ -10841,7 +10842,7 @@ ఇది వీటిని చేయగలదు: మీ చిన్నారి PIN జోడించబడింది - -మీరు ఇప్పటికే ఈ పరికరాన్ని నమోదు చేశారు. కాబట్టి, మీరు మళ్లీ నమోదు చేయాల్సిన అవసరం లేదు. +మీరు ఇప్పటికే ఈ డివైజ్‌ను రిజిస్టర్ చేశారు. కాబట్టి, మీరు మళ్లీ రిజిస్టర్ చేయాల్సిన అవసరం లేదు. Linuxను ఇన్‌స్టాల్ చేయడంలో ఎర్రర్ పేజీలను పునరుద్ధరించాలా? Googleను అడగండి @@ -10878,7 +10879,7 @@ అపాయకరమైనది ‌ను ఆన్ చేయండి స్ధానిక వాతావరణం -ఎంటర్‌ప్రైజ్ ఫీచర్‌లను ఉపయోగించడానికి మీరు ఈ పరికరాన్ని ఫ్యాక్టరీ రీసెట్ చేయాలి. +ఎంటర్‌ప్రైజ్ ఫీచర్‌లను ఉపయోగించడానికి మీరు ఈ డివైజ్‌ను ఫ్యాక్టరీ రీసెట్ చేయాలి. వీక్షణ ప్రొటెక్షన్ &ఇమెయిల్ అడ్రస్‌ను కాపీ చేయండి ఈ పరిష్కార ప్రక్రియ దశలను ట్రై చేసి చూడండి: @@ -10911,7 +10912,7 @@ కనెక్ట్ చేసిన ఫోన్‌ను డిస్‌కనెక్ట్ చేయండి ఏవైనా కొనసాగు పాస్‌వర్డ్‌‍ను చూడండి -పరికరంలో ఎర్రర్ ఏర్పడింది. దయచేసి మీ పరికరాన్ని రీస్టార్ట్ చేసి, మళ్లీ ట్రై చేయండి. +డివైజ్‌లో ఎర్రర్ ఏర్పడింది. దయచేసి మీ డివైజ్‌ను రీస్టార్ట్ చేసి, మళ్లీ ట్రై చేయండి. {SELECTED_ITEMS,plural, =0{బుక్‌మార్క్‌లు}=1{బుక్‌మార్క్‌లు ({SELECTED_ITEMS})}other{బుక్‌మార్క్‌లు ({SELECTED_ITEMS})}} మీ స్మార్ట్ కార్డ్‌కు అనుబంధించబడిన పిన్‌ను అందించండి. మీరు మీ పాస్‌వర్డ్‌లను సేవ్ చేసినప్పుడు వాటిని చెక్ చేయగలదు @@ -10941,7 +10942,7 @@ అడ్వాన్స్‌డ్ ప్రొటెక్షన్ బ్లాక్ చేసింది మార్చండి టాస్క్‌బార్‌కి పిన్ చేయి -మీరు మీ పిన్‌ని ఉపయోగించి మీ పరికరాన్ని అన్‌లాక్ చేయవచ్చు. +మీరు మీ PINను ఉపయోగించి మీ డివైజ్‌ను అన్‌లాక్ చేయవచ్చు. మీరు రాయాలనుకునేది Googleకు చెబితే చాలు వెంటనే వచన రూపంలోకి మారుస్తుంది. ఏదైనా హోస్ట్‌లో పొందుపరచబడింది సెట్టింగ్‌లు @@ -11037,7 +11038,7 @@ హాట్‌స్పాట్ కీని యాక్టివేట్ చేయడానికి ముందు అది యాక్టివేట్ అవ్వకుండా ఆలస్యం అయ్యేలా చేయండి వ్యక్తిగత సూచనలు కేవలం మీ ఖాతాలో మాత్రమే చూపబడతాయి -కింది కియోస్క్ యాప్‌లు "" అప్‌డేట్ అయ్యాయి. దయచేసి అప్‌డేట్ ప్రాసెస్‌ను పూర్తి చేయడానికి పరికరాన్ని రీబూట్ చేయండి. +కింది కియోస్క్ యాప్‌లు "" అప్‌డేట్ అయ్యాయి. దయచేసి అప్‌డేట్ ప్రాసెస్‌ను పూర్తి చేయడానికి డివైజ్‌ను రీబూట్ చేయండి. సైట్‌లు పాప్-అప్‌లను పంపగలవు, మళ్లింపులను ఉపయోగించగలవు Google Cast ఫీడ్‌బ్యాక్ మైక్రోఫోన్: @@ -11070,7 +11071,7 @@ వేరొక సెక్యూరిటీ కీని ప్రయత్నించండి కేక్ పాప్స్ మీ పరికరంలో డేటాను సేవ్ చేయడానికి సైట్‌లను అనుమతించవద్దు (సిఫార్సు చేయబడలేదు) -కొనసాగించడం ద్వారా, నెట్‌వర్క్‌లో ఈ పరికరాన్ని గుర్తించడానికి అవసరమైన సమాచారాన్ని వెరిఫై చేయడానికి మీరు థర్డ్-పార్టీలకు అనుమతినిస్తున్నారు. మీరు పరికర సమాచారానికి థర్డ్-పార్టీలకు యాక్సెస్ ఇవ్వకూడదనుకుంటే, eSIM ప్రొఫైల్‌ను మాన్యువల్‌గా సెటప్ చేయవచ్చు. +కొనసాగించడం ద్వారా, నెట్‌వర్క్‌లో ఈ డివైజ్‌ను గుర్తించడానికి అవసరమైన సమాచారాన్ని వెరిఫై చేయడానికి మీరు థర్డ్-పార్టీలకు అనుమతినిస్తున్నారు. మీరు డివైజ్ సమాచారానికి థర్డ్-పార్టీలకు యాక్సెస్ ఇవ్వకూడదనుకుంటే, eSIM ప్రొఫైల్‌ను మాన్యువల్‌గా సెటప్ చేయవచ్చు. గ్రూప్ మీద కుడి క్లిక్ చేయండి ఎడిట్ చేయండి… టాప్ వీక్షణను మూసివేయండి @@ -11336,7 +11337,7 @@ సెటప్ పూర్తి అయ్యాక తల్లిదండ్రుల నియంత్రణలను జోడించండి లొకేషన్‌ను &తెరవండి... మునుపటి స్క్రీన్‌కు తిరిగి వెళ్లడానికి, ఎడమ వైపు నుండి స్వైప్ చేయండి. -Google Driveకు బ్యాకప్ చేయండి. ఏ సమయంలో అయినా సులభంగా మీ డేటాను రీస్టోర్ చేయండి లేదా పరికరాన్ని మార్చండి. ఈ బ్యాకప్‌లో యాప్ డేటా ఉంటుంది. బ్యాకప్‌లు Googleకు అప్‌లోడ్ అవుతాయి, అలాగే మీ Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి ఎన్‌క్రిప్ట్ అవుతాయి. బ్యాకప్ గురించి మరింత తెలుసుకోండిమరింత తెలుసుకోండి +Google Driveకు బ్యాకప్ చేయండి. ఏ సమయంలో అయినా సులభంగా మీ డేటాను రీస్టోర్ చేయండి లేదా డివైజ్‌ను స్విచ్ చేయండి. ఈ బ్యాకప్‌లో యాప్ డేటా ఉంటుంది. అలాగే మీ Google ఖాతా పాస్‌వర్డ్‌ను ఉపయోగించి బ్యాకప్‌లు Googleకు అప్‌లోడ్ చేయబడతాయి ఎన్‌క్రిప్ట్ అవుతాయి. బ్యాకప్ గురించి మరింత తెలుసుకోండిమరింత తెలుసుకోండి అప్లికేషన్‌ల మెనూ గడువు తేదీ ‌కు సంబంధించిన PPD @@ -11373,7 +11374,7 @@ మీరు ప్రోడక్ట్‌లను కంపేర్ చేసినప్పుడు, ప్రోడక్ట్‌లకు సంబంధించిన ట్యాబ్ టైటిల్స్, URLలు Googleకు పంపబడతాయి మీ ఫోన్‌లోని ఫోటోలు, యాప్‌లను చూడండి. మెసేజింగ్ నోటిఫికేషన్‌లకు త్వరగా రిప్లయి ఇవ్వండి. నేపథ్య గ్రాఫిక్స్ -పరికరాన్ని ఎంచుకోండి. ఆపై, పేజీని చూడటానికి, Chromeను అక్కడ తెరవండి. +డివైజ్‌ను ఎంచుకోండి. ఆపై, పేజీని చూడటానికి, Chromeను అక్కడ తెరవండి. బ్యాక్‌గ్రౌండ్ ట్యాబ్ మీ కెమెరాను ఉపయోగిస్తోంది నుండి మీ Linux ఫైళ్ల ఫోల్డర్‌లోని అన్ని Linux అప్లికేషన్‌లు మరియు డేటాను తొలగించాలా? లింక్‌ని కాపీ చేయి @@ -11459,9 +11460,9 @@ కోసం చేసిన అన్ని సెర్చ్‌లను చూపండి అందరు వినియోగదారుల కోసం Chromeను ఆటోమేటిక్‌గా అప్‌డేట్ చేయి అందరూ -మీ సంస్థ ప్రొఫైల్‌తో మీ పరికరాన్ని ఉపయోగించడానికి, మీ సంస్థకు పరికరం గురించిన సమాచారం అవసరం. +మీ ఆర్గనైజేషన్ ప్రొఫైల్‌తో మీ డివైజ్‌ను ఉపయోగించడానికి, మీ ఆర్గనైజషన్‌కు డివైజ్ గురించిన సమాచారం అవసరం. -ఇది ఇన్‌స్టాల్ చేయబడిన సాఫ్ట్‌వేర్, ఫైళ్లు, మీ బ్రౌజర్, అలాగే పరికరం తాలూకు ఆపరేటింగ్ సిస్టమ్, IP అడ్రస్‌ల గురించిన సమాచారాన్ని కలిగి ఉంటుంది. +ఇది ఇన్‌స్టాల్ చేయబడిన సాఫ్ట్‌వేర్, ఫైళ్లు, మీ బ్రౌజర్, అలాగే డివైజ్ తాలూకు ఆపరేటింగ్ సిస్టమ్, IP అడ్రస్‌ల గురించిన సమాచారాన్ని కలిగి ఉంటుంది. డెవలపర్ టూల్స్‌ను, IDEలను, ఎడిటర్‌లను రన్ చేయండి. మరింత తెలుసుకోండి ఎక్స్‌టెన్ష‌న్‌ మూలం డైరెక్టరీ తర్వాతి వెర్షన్: @@ -11578,7 +11579,7 @@ API ఫంక్షన్ తర్కాలు ఈ పరికరంలో మాత్రమే ఈ కార్డ్ సేవ్ అవుతుంది మీ బ్రౌజర్ లేదా పరికర వేగాన్ని అంతగా తగ్గించదు. -ఈ Chromebook ఎంటర్‌ప్రైజ్ పరికరం అనేది Chrome ఎంటర్‌ప్రైజ్ అప్‌గ్రేడ్‌తో బండిల్ చేయబడింది. ఎంటర్‌ప్రైజ్ సామర్థ్యాల నుంచి ప్రయోజనం పొందడానికి, ఈ పరికరాన్ని Google అడ్మిన్ ఖాతాతో నమోదు చేయండి. +ఈ Chromebook ఎంటర్‌ప్రైజ్ డివైజ్ అనేది Chrome ఎంటర్‌ప్రైజ్ అప్‌గ్రేడ్‌తో బండిల్ చేయబడింది. ఎంటర్‌ప్రైజ్ సామర్థ్యాల నుంచి ప్రయోజనం పొందడానికి, ఈ డివైజ్‌ను Google అడ్మిన్ ఖాతాతో ఎన్‌రోల్ చేయండి. యాప్‌లు, పేజీలను రీస్టోర్ చేయండి స్టోరేజ్‌ మీరు మీ Google ఖాతాతో సైన్ ఇన్ చేసినప్పుడు, ఏ ChromeOS పరికరంలోనైనా మీరు సేవ్ చేసిన ప్రాధాన్యతలు, యాక్టివిటీ సిద్ధంగా ఉంటాయి. ఏది సింక్ చేయాలనే దాన్ని, మీరు సెట్టింగ్‌లలో ఎంచుకోవచ్చు. @@ -11868,7 +11869,7 @@ మీ సంస్థ మీ ఖాతా కోసం Google Play Storeను ప్రారంభించలేదు. మరింత సమాచారం కోసం మీ నిర్వాహకులను సంప్రదించండి. చాలా వేగంగా కు ఇకపై సపోర్ట్ లేదు -Google Driveలో బ్యాకప్ చేయండి. సులభంగా మీ డేటాను పునరుద్ధరించండి లేదా ఎప్పుడైనా పరికరాన్ని స్విచ్ చేయండి. మీ బ్యాకప్‌లో యాప్ డేటా కూడా ఉంటుంది. +Google Driveలో బ్యాకప్ చేయండి. సులభంగా మీ డేటాను రీస్టోర్ చేయండి లేదా ఎప్పుడైనా డివైజ్‌ను స్విచ్ చేయండి. మీ బ్యాకప్‌లో యాప్ డేటా కూడా ఉంటుంది. మళ్లీ ట్రై చేయండి మీ iOS పరికరాలలో మీ పాస్‌వర్డ్‌లను ఉపయోగించండి ఫాస్ట్ పెయిర్‌ను డిజేబుల్ చేయండి @@ -12030,7 +12031,7 @@ బ్లాక్ చేసిన సైట్‌లు ఇక్కడ కనిపిస్తాయి బ్లూటూత్ పరికరాలకు మెసేజ్‌లను పంపడానికి మరియు వాటి నుండి స్వీకరించడానికి అనుమతి. సమస్య విశ్లేషణలకు సంబంధించిన డేటా కలెక్షన్ పూర్తి అయింది. మీకు చెందిన కొంత వ్యక్తిగత సమాచారం, ఈ డేటాలో ఉంది. -మీరు ఈ పరికరాన్ని ఇతరులతో షేర్ చేసుకుంటున్నట్లయితే, సేవ్ చేసిన పాస్‌వర్డ్‌ను ఉపయోగించినప్పుడల్లా అది మీరేనని వెరిఫై చేయడానికి స్క్రీన్ లాక్‌ను ఉపయోగించవచ్చు +మీరు ఈ డివైజ్‌ను ఇతరులతో షేర్ చేసుకుంటున్నట్లయితే, సేవ్ చేసిన పాస్‌వర్డ్‌ను ఉపయోగించినప్పుడల్లా అది మీరేనని వెరిఫై చేయడానికి స్క్రీన్ లాక్‌ను ఉపయోగించవచ్చు సురక్షితమైన కంటెంట్‌ను ప్లే చేయడానికి, సైట్‌లు ఐడెంటిఫయర్‌‌లను ఉపయోగించవచ్చు Google Password Managerకు సంబంధించిన మీ ఆల్ఫాన్యూమరిక్ PINను ఎంటర్ చేయండి అసలును చూపించు @@ -12103,7 +12104,7 @@ {NUM_APPS,plural,offset:2 =1{మీ అడ్మినిస్ట్రేటర్ మీ స్క్రీన్‌ను ‌తో రికార్డ్ చేయవచ్చు. రికార్డింగ్ ప్రారంభమైనప్పుడు మీకు నోటిఫికేషన్ రాదు.}=2{మీ అడ్మినిస్ట్రేటర్ మీ స్క్రీన్‌ను , ‌లతో రికార్డ్ చేయవచ్చు. రికార్డింగ్ ప్రారంభమైనప్పుడు మీకు నోటిఫికేషన్ రాదు.}=3{మీ అడ్మినిస్ట్రేటర్ మీ స్క్రీన్‌ను , , ఇంకా మరో 1 యాప్‌తో రికార్డ్ చేయవచ్చు. రికార్డింగ్ ప్రారంభమైనప్పుడు మీకు నోటిఫికేషన్ రాదు.}other{మీ అడ్మినిస్ట్రేటర్ మీ స్క్రీన్‌ను , , ఇంకా మరో # యాప్‌లతో రికార్డ్ చేయవచ్చు. రికార్డింగ్ ప్రారంభమైనప్పుడు మీకు నోటిఫికేషన్ రాదు.}} చిన్నారి Google ఖాతాతో సైన్ ఇన్ చేయండి కీలు మ్యాచ్ కాలేదు. కోసం ఏదైనా కీని నొక్కండి. -'మాటల ప్రతిస్పందన'ను వినండి, తద్వారా మీరు స్క్రీన్‌ను చూడకుండానే మీ పరికరాన్ని ఉపయోగించవచ్చు. కనెక్ట్ అయిన పరికరంలో బ్రెయిలీ ఫీడ్‌బ్యాక్ అందుబాటులో ఉంది. Ctrl + Alt + Zను ఉపయోగించి ChromeVoxను ఆన్, ఆఫ్ చేయండి. సెర్చ్ + ఎడమ వైపు బాణం లేదా కుడి వైపు బాణాన్ని ఉపయోగించి నావిగేట్ చేయండి. సెర్చ్ + స్పేస్‌ను ఉపయోగించి ఎంచుకోండి (యాక్టివేట్ చేయండి). +'మాటల ప్రతిస్పందన'ను వినండి, తద్వారా మీరు స్క్రీన్‌ను చూడకుండానే మీ డివైజ్‌ను ఉపయోగించవచ్చు. కనెక్ట్ అయిన డివైజ్‌లో బ్రెయిలీ ఫీడ్‌బ్యాక్ అందుబాటులో ఉంది. Ctrl + Alt + Zను ఉపయోగించి ChromeVoxను ఆన్, ఆఫ్ చేయండి. సెర్చ్ + ఎడమ వైపు బాణం లేదా కుడి వైపు బాణాన్ని ఉపయోగించి నావిగేట్ చేయండి. సెర్చ్ + స్పేస్‌ను ఉపయోగించి ఎంచుకోండి (యాక్టివేట్ చేయండి). మీ సంస్థ మీ Google ఖాతాకు డేటా సేవింగ్‌ను పరిమితం చేసినప్పుడు, ట్యాబ్ గ్రూప్‌లను షేర్ చేయడానికి లేదా వాటిలో చేరడానికి మీకు ఆప్షన్ ఉండదు మీ యాప్‌లను బ్యాకప్ చేయడం గురించి మరింత తెలుసుకోండి గోప్యతా గైడ్ నుండి దూరంగా నావిగేట్ అవ్వడానికి క్లిక్ చేయండి. @@ -12116,7 +12117,7 @@ ఏదో తప్పు జరిగింది. మీ పరికర ఓనర్‌ను లేదా అడ్మినిస్ట్రేట‌ర్‌ను దయచేసి సంప్రదించండి. ఎర్రర్ కోడ్: . రెడ్-గ్రీన్ ఫిల్టర్, గ్రీన్ కలర్‌ను సరిగా గుర్తించలేకపోవడం (డ్యూటెరానోమలీ) &ప్రొఫైలింగ్ అనుమతించబడింది -ఒక పరికరాన్ని ఎంచుకోండి +ఒక డివైజ్‌ను ఎంచుకోండి మరొక ప్యానెల్‌ను ఎంచుకోవడానికి డ్రాప్-డౌన్‌ను క్లిక్ చేయండి ఆటోమేటిక్‌గా పాస్‌వర్డ్‌ను మార్చడం కొద్దిగా తల కదలికలతో కూడా, కర్సర్‌ను స్థిరంగా ఉంచవచ్చు. దీని కారణంగా, కర్సర్‌ను తరలించడానికి ఎక్కువ శ్రమ అవసరం పడుతుంది. @@ -12187,7 +12188,7 @@ స్క్రీన్‌పై కనిపించే ప్రోడక్ట్‌లు, స్థలాలు లేదా టెక్స్ట్ గురించి మరింత తెలుసుకోండి పరికరం ఆన్ చేయబడినప్పుడు, ఉపయోగించబడుతున్నప్పుడు అది ఆటోమేటిక్‌గా కనెక్ట్ అవుతుంది యాప్ అందుబాటులో లేదు -మీరు మీ పరికరాన్ని యాక్టివ్‌గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్‌లు అనుమతించబడతాయి +మీరు మీ డివైజ్‌ను యాక్టివ్‌గా ఉపయోగించే సమయాలను తెలుసుకోవడానికి సైట్‌లు అనుమతించబడతాయి ఒక కొత్త ప్రొఫైల్‌ను సెటప్ చేయండి భాష, ఇన్‌పుట్ పద్ధతి రైట్-క్లిక్ చేసి కంటెంట్ సారాంశాన్ని పొందండి, నిర్వచనాలు పొందండి, మరింత విశ్వాసంతో రాయండి, ఇమేజ్‌లు, మరిన్నింటిని క్రియేట్ చేయండి. ప్రస్తుతం పరిమిత స్థాయిలో అందుబాటులో ఉంది. diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_th.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_th.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_th.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_th.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7950,6 +7950,7 @@ ไฟล์ภาพ เปลี่ยนช่องและ Powerwash Google Safe Browsing ปกป้องคุณจากผู้โจมตีที่อาจหลอกล่อให้ทำบางสิ่งที่อันตราย เช่น การติดตั้งซอฟต์แวร์ที่ประสงค์ร้ายหรือเปิดเผยข้อมูลส่วนบุคคล เช่น รหัสผ่าน หมายเลขโทรศัพท์ หรือบัตรเครดิต หากคุณปิดใช้ โปรดระวังขณะเรียกดูเว็บไซต์ที่ไม่คุ้นเคยหรือไม่เป็นที่รู้จัก +เมื่อลงชื่อเข้าใช้อยู่ คุณจะใช้ธีม การตั้งค่า และข้อมูลอื่นๆ ที่บันทึกไว้ในบัญชี Google ในอุปกรณ์ทุกเครื่องได้ กดค้างไว้เพื่อพิมพ์อักขระบนแป้นซ้ำโดยอัตโนมัติ เลือกเวอร์ชันของ ที่จะติดตั้ง ติดตั้งอัปเดตและแอป diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_tr.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_tr.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_tr.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_tr.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7953,6 +7953,7 @@ Resim Dosyaları Kanal değiştir ve Powerwash işlemini yap Güvenli Tarama, sizi yanıltarak kötü amaçlı yazılım yüklemek veya kişisel bilgilerinizi (örneğin, şifreler, telefon numaraları veya kredi kartları) ifşa etmek gibi tehlikeli bir şey yapmanıza neden olabilecek saldırganlara karşı korur. Bu özelliği kapatırsanız tanıdık olmayan veya saygınlığı şüpheli sitelere göz atarken dikkatli olun. +Oturumunuz açıkken Google Hesabınızda temalar, ayarlar ve diğer öğeleri tüm cihazlarınızda kullanabilirsiniz. Tuşun otomatik olarak tekrarlanması için basılı tutun Yüklenecek sürümünü seçin. Güncellemeleri ve Uygulamaları Yükle diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_uk.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_uk.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_uk.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_uk.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7968,6 +7968,7 @@ Файли зображень Змінити версію й виконати Powerwash Безпечний перегляд захищає вас від зловмисників, які можуть обманом змусити вас виконати небезпечну дію, наприклад установити шкідливе програмне забезпечення або розкрити особисту інформацію, як-от пароль, номер телефону чи дані кредитної картки. Якщо ви вимкнете цю функцію, будьте обережні на незнайомих і сумнівних сайтах. +Увійшовши в обліковий запис, ви можете використовувати теми, налаштування й інші дані, збережені в обліковому записі Google, на всіх своїх пристроях Автоматично повторювати символ, якщо утримується призначена йому клавіша Виберіть версію віртуальної машини "", яку потрібно встановити. Установити оновлення та додатки diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_ur.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_ur.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_ur.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_ur.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7954,6 +7954,7 @@ تصویری فائلیں چینل اور پاور واش تبدیل کریں محفوظ براؤزنگ ان حملہ آوروں سے آپ کی حفاظت کرتی ہے جو نقصان دہ سافٹ ویئر انسٹال کرنے یا پاس ورڈز، فون نمبرز یا کریڈٹ کارڈز جیسی ذاتی معلومات افشاء کرنے جیسے کچھ خطرناک کام انجام دینے میں آپ کو پھنسا سکتے ہیں۔ اگر آپ اسے آف کرتے ہیں تو غیر مانوس یا غیر معروف سائٹس کو براؤز کرتے وقت محتاط رہیں۔ +‏جب آپ سائن ان ہوتے ہیں تو آپ اپنے تمام آلات پر اپنے Google اکاؤنٹ میں محفوظ کردہ تھیمز، ترتیبات اور بہت کچھ استعمال کر سکتے ہیں کلید کو خودکار طور پر دہرانے کے لیے چھوئیں اور دبائے رکھیں منتخب کریں کہ کا کون سا ورژن انسٹال کرنا ہے۔ اپ ڈیٹس اور ایپس انسٹال کریں diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_uz.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_uz.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_uz.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_uz.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7956,6 +7956,7 @@ Tasvir fayllar Boshqa kanal tanlash va Powerwash amalini ishga tushirish Saytlarni xavfsiz kezish parollar, telefon raqamlari yoki kredit kartalari kabi shaxsiy maʼlumotlaringizni oʻgʻirlash yoki zararli dasturlarni oʻrnatish orqali xavfli ishlarni amalga oshirishga undovchi shubhali kimsalardan himoyalaydi. Agar bu funksiyani faolsizlantirsangiz, notanish va shubhali saytlarga kirishda ehtiyot boʻling. +Hisobga kirilganda Google hisobida saqlangan mavzular, sozlamalar va boshqalardan barcha qurilmalarda foydalanish mumkin Avtomatik qaytarishni yoqish uchun tugmani bosib turing qaysi versiyasini oʻrnatishni tanlang Yangilanish va ilovalarni oʻrnatish diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_vi.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_vi.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_vi.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_vi.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7970,6 +7970,7 @@ Tệp hình ảnh Thay đổi kênh và Powerwash Tính năng Duyệt web an toàn bảo vệ bạn trước những kẻ tấn công có thể đánh lừa bạn làm một việc gì đó nguy hiểm như cài đặt phần mềm độc hại hoặc tiết lộ thông tin cá nhân như mật khẩu, số điện thoại hoặc thẻ tín dụng. Nếu bạn tắt tính năng này, hãy cẩn thận khi duyệt các trang web lạ hoặc không có uy tín. +Khi đăng nhập, bạn có thể sử dụng các giao diện, chế độ cài đặt và nhiều nội dung khác mà bạn đã lưu trong Tài khoản Google của mình trên mọi thiết bị Nhấn và giữ để tự động lặp lại phím Chọn phiên bản bạn muốn cài đặt. Cài đặt bản cập nhật và ứng dụng @@ -8243,7 +8244,7 @@ Cắm và chạm vào khoá bảo mật để dùng khoá cho Quản lý từ điển người dùng Tự động điền và mật khẩu -Hiển thị nhóm thẻ trong thanh dấu trang +Hiện nhóm thẻ trong thanh dấu trang Truy cập vào máy in của bạn Sử dụng các phím mũi tên trái và phải để điều hướng. Chọn có đồng bộ hoá nhật ký hay không diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_zh-CN.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_zh-CN.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_zh-CN.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_zh-CN.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -834,7 +834,7 @@ 这将允许具有位置信息权限的应用和网站以及系统服务使用位置信息 如果您添加了此联系人,当他/她下次分享内容时,系统会识别出此联系人 您的组织 () 要求使用受管资料,并且能够查看某些信息,包括 -Gemini 在执行任务期间使用的网页内容和网址将分享给 Google。 +Gemini 在执行任务期间使用的网页内容和网址会分享给 Google。 网站 所选打印机无法使用或未正确安装。请检查打印机,或尝试选择其他打印机。 处于闲置状态且接通电源时 @@ -7941,6 +7941,7 @@ 图片文件 变更版本并执行 Powerwash “安全浏览”功能可保护您免受攻击者诱骗,以防做出一些危险操作,例如安装恶意软件或泄露个人信息(如密码、电话号码或信用卡信息)。如果关闭此功能,当浏览不熟悉或信誉不佳的网站时,请一定多加小心。 +登录后,您可以在所有设备上使用 Google 账号中保存的主题、设置等信息 按住即可自动重复输入该键对应的字符 选择要安装的 版本。 安装更新和应用 @@ -9831,7 +9832,7 @@ 点击“密码和自动填充” 此文档太大,无法进行安全检查。您只能打印不超过 50 MB 的文档。 某些内容已被屏蔽 -使用 轻松打开 +按下 即可轻松打开 打印机和扫描仪 否,继续将此资料用作学校资料 @@ -11810,7 +11811,7 @@ 正在投放此标签页 版本说明 目前无法使用 Gemini,请稍后重试。 -随着鼠标指针的移动连续移动屏幕 +鼠标指针移动时,画面随之移动 防范已知危险的网站、下载内容和扩展程序。如果发现某个网页有可疑之处,系统会将相应网址连同少量网页内容发送到“Google 安全浏览”功能进行检查。 安装 Linux 需要 的可用空间。如需增加可用空间,请从您的设备中删除文件。 ChromeVox 教程 diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_zh-HK.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_zh-HK.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_zh-HK.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_zh-HK.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7959,6 +7959,7 @@ 圖片檔 變更版本並執行 Powerwash 「安全瀏覽」能保護您免受攻擊,攻擊者可能會誘使您採取一些危險的行動,例如安裝惡意軟件或洩漏您的個人資料 (包括密碼、電話號碼或信用卡資料)。如關閉「安全瀏覽」,請在瀏覽不熟悉或信譽不佳的網站時提高警覺。 +登入後,你可以在所有裝置上使用 Google 帳戶所儲存的主題、設定和其他資料 按住即可自動重複按鍵動作 選取要安裝的 版本。 安裝更新內容和應用程式 diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_zh-TW.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_zh-TW.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_zh-TW.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_zh-TW.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -839,7 +839,7 @@ 系統服務和具有位置存取權的應用程式、網站將可存取位置資訊 新增這位聯絡人後,下次該聯絡人分享內容時,系統將可辨識出該聯絡人 貴機構 () 要求使用受管理設定檔,而且將可查看部分資訊,包括: -系統會將 Gemini 執行工作時,使用的網頁內容和網址提供給 Google。 +Google 會取得 Gemini 執行工作時用到的網頁內容和網址。 網站 選取的印表機無法使用或未正確安裝。請檢查你的印表機,或改選其他印表機。 處於閒置狀態並接上電源時 @@ -6410,7 +6410,7 @@ 如要移除應用程式,請依序前往「設定」>「應用程式」>「Google Play 商店」>「管理 Android 偏好設定」>「應用程式」或「應用程式管理員」,然後輕觸要解除安裝的應用程式 (您可能需要向左或向右滑動才能找出應用程式)。接著,輕觸「解除安裝」或「停用」。 麥克風存取權 指令碼快取 -請以安全方式謹慎使用 Gemini。Gemini 在工作中執行的動作可能會出錯,或是產生不符預期的結果 (例如購物),你必須自行承擔責任。 +請以安全的方式謹慎使用 Gemini。Gemini 執行工作時可能會出錯,或是產生不符預期的結果 (例如購物),你必須自行承擔責任。 這個頁面也會從你的歷史記錄和 活動中移除。 游標和觸控板 實際大小 @@ -7944,6 +7944,7 @@ 圖片檔 變更版本並執行 Powerwash 安全瀏覽功能可保護你不受到攻擊,攻擊者可能會誘騙你從事一些危險行為,例如安裝惡意軟體或洩漏個人資訊 (例如密碼、電話號碼或信用卡資訊)。如果你停用這項功能,瀏覽不熟悉或風評不佳的網站時,請提高警覺。 +登入 Google 帳戶即可在所有裝置使用帳戶儲存的主題、設定和其他資訊 按住即可自動重複按鍵動作 選取要安裝的「」版本。 安裝更新內容和應用程式 @@ -9119,7 +9120,7 @@ 填入密碼時使用 Windows Hello 驗證 找不到網路類型 AI 助理可提供重點摘要、說明概念、尋找答案等 -管理分享的群組 +管理共用設定 下列應用程式也可以處理通訊協定連結。其他應用程式則會要求授權。 如要設定指紋,請讓孩子輕觸鍵盤右上角的指紋感應器。孩子的指紋資料會安全地儲存在這部「」上,絕不會外洩。 螢幕鎖定和登入 @@ -10824,7 +10825,7 @@ 你已註冊這部裝置,因此不必再次註冊。 安裝 Linux 時發生錯誤 你要還原網頁嗎? -向 Google 提問 +問問 Google 儲存在 Google 帳戶中 打造個人化的螢幕主題 提供意見按鈕 diff -Nru chromium-146.0.7680.80/chrome/app/resources/generated_resources_zu.xtb chromium-146.0.7680.153/chrome/app/resources/generated_resources_zu.xtb --- chromium-146.0.7680.80/chrome/app/resources/generated_resources_zu.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/generated_resources_zu.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -7971,6 +7971,7 @@ Amafayela wesithombe Guqula isiteshi Nokuwasha kwamandla Ukuphequlula ngokuphephile kukuvikela kubahlaseli abangase bakukhohlise ukwenza okuthile okuyingozi njengokufaka isofthiwe enonya noma ukuveza ulwazi lomuntu siqu njengamaphasiwedi, izinombolo zefoni, noma amakhadi esikweletu. Uma ukuvala, qaphela lapho uphequlula kumasayithi ongawajwayele noma angathenjwa. +Ngenkathi ungene ngemvume, ungasebenzisa amatimu amasethingi nokunye okulondoloziwe kuGoogle Account yakho kuwo wonke amadivayisi akho Cindezela futhi ubambe ukuze uphinde ukhiye ngokuzenzekelayo Khetha ukuthi yiluphi uhlobo lwe- ozolufaka. Faka Izibuyekezo Nezinhlelo zokusebenza diff -Nru chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_da.xtb chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_da.xtb --- chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_da.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_da.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -779,7 +779,7 @@ Luk Gemini i Chrome Canary Se, hvorfor Chrome blokerer visse filer Markér den tekst, du vil søge efter -Slet også dine browserdata? +Slet også dine browserdata Lektiehjælp Åbn Chrome igen for at anvende ændringerne Afslut diff -Nru chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_it.xtb chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_it.xtb --- chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_it.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_it.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -8,7 +8,7 @@ Personalizza e controlla Google Chrome. È disponibile un nuovo aggiornamento. Per eliminare i dati di navigazione solo da questo dispositivo e conservarli nel tuo Account Google, esci da Chrome. Fai clic per chiudere la finestra di dialogo di accesso a Chrome -Aiutaci a migliorare la modalità di navigazione in incognito partecipando a questo sondaggio di 1 minuto. +Aiutaci a migliorare la modalità Incognito partecipando a questo sondaggio di 1 minuto. Per utilizzare questa estensione con l'account , accedi a Chrome. Impossibile leggere le preferenze. Alcune funzioni potrebbero non essere disponibili e le modifiche alle preferenze non verranno salvate. Un altro programma sul computer ha aggiunto un'estensione che potrebbe modificare il funzionamento di Chrome. @@ -42,7 +42,7 @@ Su questo computer è già installata una versione più recente di Google Chrome. Se il software non funziona, disinstalla Google Chrome e riprova. Mostra sempre AI Mode Condividi le tue opinioni -{COUNT,plural, =0{Chrome ha terminato l'aggiornamento. Puoi utilizzare l'ultima versione non appena eseguirai il riavvio. Dopodiché verranno riaperte le schede correnti.}=1{Chrome ha terminato l'aggiornamento. Puoi utilizzare l'ultima versione non appena eseguirai il riavvio. Dopodiché verranno riaperte le schede correnti. La finestra di navigazione in incognito non verrà riaperta.}other{Chrome ha terminato l'aggiornamento. Puoi utilizzare l'ultima versione non appena eseguirai il riavvio. Dopodiché verranno riaperte le schede correnti. # finestre di navigazione in incognito non verranno riaperte.}} +{COUNT,plural, =0{Chrome ha terminato l'aggiornamento. Puoi utilizzare l'ultima versione non appena eseguirai il riavvio. Dopodiché verranno riaperte le schede correnti.}=1{Chrome ha terminato l'aggiornamento. Puoi utilizzare l'ultima versione non appena eseguirai il riavvio. Dopodiché verranno riaperte le schede correnti. La finestra Incognito non verrà riaperta.}other{Chrome ha terminato l'aggiornamento. Puoi utilizzare l'ultima versione non appena eseguirai il riavvio. Dopodiché verranno riaperte le schede correnti. # finestre Incognito non verranno riaperte.}} Applicazioni Chrome Canary Fissa Chrome Accedere a Chrome? @@ -159,7 +159,7 @@ Apri Gemini in Chrome Beta Seleziona un elemento da cercare con Google Lens o premi Esc per uscire Impossibile connettersi a internet. HTTP 403 Accesso negato. Controlla la configurazione del proxy. -Avviso: Google Chrome non è in grado di impedire alle estensioni di registrare la tua cronologia di navigazione. Per disattivare questa estensione in modalità di navigazione in incognito, deseleziona questa opzione. +Avviso: Google Chrome non è in grado di impedire alle estensioni di registrare la tua cronologia di navigazione. Per disattivare questa estensione in modalità Incognito, deseleziona questa opzione. {count,plural, =1{Alcuni dati di Chrome non sono ancora stati salvati nel tuo Account Google. Prova ad attendere qualche minuto prima di uscire. Se esci ora, questi dati (1 elemento) verranno eliminati.}other{Alcuni dati di Chrome non sono ancora stati salvati nel tuo Account Google. Prova ad attendere qualche minuto prima di uscire. Se esci ora, questi dati ({count} elementi) verranno eliminati.}} Fai clic per cercare {COUNT,plural, =0{La protezione avanzata richiede il riavvio di Chrome per installare un aggiornamento}=1{La protezione avanzata richiede il riavvio di Chrome per installare un aggiornamento. La finestra Incognito non verrà riaperta.}other{La protezione avanzata richiede il riavvio di Chrome per installare un aggiornamento. # finestre Incognito non verranno riaperte.}} @@ -246,7 +246,7 @@ Cerca in questa pagina con Google Lens Chiedi a Google Lens informazioni su questa pagina Accedere a Chrome in un nuovo profilo? -{COUNT,plural, =0{L'amministratore richiede il riavvio di Chrome per installare un aggiornamento}=1{L'amministratore richiede il riavvio di Chrome per installare un aggiornamento. La finestra di navigazione in incognito non verrà riaperta.}other{L'amministratore richiede il riavvio di Chrome per installare un aggiornamento. Le # finestre di navigazione in incognito non verranno riaperte.}} +{COUNT,plural, =0{L'amministratore richiede il riavvio di Chrome per installare un aggiornamento}=1{L'amministratore richiede il riavvio di Chrome per installare un aggiornamento. La finestra Incognito non verrà riaperta.}other{L'amministratore richiede il riavvio di Chrome per installare un aggiornamento. Le # finestre Incognito non verranno riaperte.}} Impossibile eseguire la configurazione con privilegi elevati. Identifica cose o luoghi e copia o traduci testi. Quando usi Google Lens, viene inviato uno screenshot della pagina a Google. Ora è più facile utilizzare Chrome con il tuo Account Google e sui computer condivisi. @@ -322,7 +322,7 @@ Per accedere alla personalizzazione, includi Chrome in Attività web e app Chrome ha bloccato questo download perché il file può danneggiare i tuoi account personali e dei social network Puoi bloccare Google Lens per un facile accesso; fai clic sul pulsante Blocca nella parte superiore del riquadro laterale -Quando navighi in modalità di navigazione in incognito, Chrome ti avvisa prima di caricare un sito utilizzando una connessione non sicura +Quando navighi in modalità Incognito, Chrome ti avvisa prima di caricare un sito utilizzando una connessione non sicura La protezione avanzata blocca malware e tentativi di phishing con maggiore efficacia Errore del programma di installazione: Chrome - Accesso rete - @@ -337,7 +337,7 @@ Non è stato possibile aggiornare Chrome alla versione più recente, quindi non potrai utilizzare le nuove funzioni e gli aggiornamenti di sicurezza. Ricevi un avviso se Chrome rileva che una delle tue password è stata compromessa nell'ambito di una violazione dei dati pubblici Cerca nell'immagine con Google Lens -Navigazione in incognito di Chrome +Modalità Incognito di Chrome Facoltativo: contribuisci a migliorare le funzionalità e le prestazioni di ChromeOS Flex inviando automaticamente a Google dati diagnostici e sull'utilizzo. Per rendere Chrome più sicuro, abbiamo disattivato alcune estensioni che non sono elencate nel e potrebbero essere state aggiunte a tua insaputa. Annulla l'installazione @@ -423,7 +423,7 @@ P&ersonalizza Chrome Chrome risparmia carica della batteria limitando l'attività in background e gli effetti visivi, ad esempio lo scorrimento fluido e le frequenze fotogrammi dei video. Scopri di più sulla modalità Risparmio energetico Cancella i dati di Chrome nel tuo account -{COUNT,plural, =0{L'amministratore raccomanda il riavvio di Chrome per installare questo aggiornamento}=1{L'amministratore raccomanda il riavvio di Chrome per installare questo aggiornamento. La finestra di navigazione in incognito non verrà riaperta.}other{L'amministratore raccomanda il riavvio di Chrome per installare questo aggiornamento. Le # finestre di navigazione in incognito non verranno riaperte.}} +{COUNT,plural, =0{L'amministratore raccomanda il riavvio di Chrome per installare questo aggiornamento}=1{L'amministratore raccomanda il riavvio di Chrome per installare questo aggiornamento. La finestra Incognito non verrà riaperta.}other{L'amministratore raccomanda il riavvio di Chrome per installare questo aggiornamento. Le # finestre Incognito non verranno riaperte.}} Personalizza e controlla Google Chrome. C'è qualcosa che richiede la tua attenzione. Fai clic per avere informazioni dettagliate. Google LLC Impossibile connettersi a internet. Il server proxy richiede l'autenticazione. @@ -588,7 +588,7 @@ Riavvia per aggiornare &Chrome OS Task Manager - Google Chrome Accedi a Chrome -{COUNT,plural, =0{È disponibile un nuovo aggiornamento di Chrome che verrà installato appena eseguirai il riavvio.}=1{È disponibile un nuovo aggiornamento di Chrome che verrà installato appena eseguirai il riavvio. La finestra di navigazione in incognito non verrà riaperta.}other{È disponibile un nuovo aggiornamento di Chrome che verrà installato appena eseguirai il riavvio. Le # finestre di navigazione in incognito non verranno riaperte.}} +{COUNT,plural, =0{È disponibile un nuovo aggiornamento di Chrome che verrà installato appena eseguirai il riavvio.}=1{È disponibile un nuovo aggiornamento di Chrome che verrà installato appena eseguirai il riavvio. La finestra Incognito non verrà riaperta.}other{È disponibile un nuovo aggiornamento di Chrome che verrà installato appena eseguirai il riavvio. Le # finestre Incognito non verranno riaperte.}} In questo caso, modifica la password salvata su Chrome in modo che corrisponda alla nuova password. Ti diamo il benvenuto in Google Chrome La tua organizzazione chiude Chrome quando non viene utilizzato per . @@ -749,7 +749,7 @@ Google Chrome non è in grado di determinare o impostare il browser predefinito angolo in basso a sinistra dell'area di ricerca: sinistra %, in basso % Chrome libera la memoria dalle schede non attive. In questo modo, le schede attive e altre app hanno più risorse per il computer e mantengono Chrome veloce. Le schede inattive si riattivano automaticamente quando ci torni. Scopri di più sulla modalità Risparmio memoria -Quando digiti nella barra degli indirizzi o nella casella di ricerca, Chrome invia ciò che digiti al tuo motore di ricerca predefinito per ricevere suggerimenti migliori. Questa opzione è disattivata nella modalità di navigazione in incognito +Quando digiti nella barra degli indirizzi o nella casella di ricerca, Chrome invia ciò che digiti al tuo motore di ricerca predefinito per ricevere suggerimenti migliori. Questa opzione è disattivata nella modalità Incognito Per usare la fotocamera, consenti l'accesso a Chrome nelle impostazioni di sistema Errore di installazione: l'amministratore di rete ha applicato una policy di gruppo che impedisce l'installazione: P&ersonalizza Chrome diff -Nru chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_te.xtb chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_te.xtb --- chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_te.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_te.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -32,7 +32,7 @@ సెటప్ ఎర్రర్: . దయచేసి Chrome తాజా సిస్టమ్ అప్‌డేట్‌లను ఇన్‌స్టాల్ చేస్తున్నప్పుడు వేచి ఉండండి. భాషను గుర్తించండి - కోసం ఈ పరికరాన్ని ఉపయోగించడానికి ముందు కింది సర్వీస్ నియమాలను మీరు చదివి, అంగీకరించాలి. ఈ నియమాలు Google ChromeOS Flex నియమాలను విస్తరింపజేయవు, సవరించవు లేదా పరిమితం చేయవు. + కోసం ఈ డివైజ్‌ను ఉపయోగించడానికి ముందు కింది సర్వీస్ నియమాలను మీరు చదివి, అంగీకరించాలి. ఈ నియమాలు Google ChromeOS Flex నియమాలను విస్తరింపజేయవు, సవరించవు లేదా పరిమితం చేయవు. మీరు మరొక Chrome ప్రొఫైల్‌కు మారి, పాస్‌వర్డ్‌లను చూడవచ్చు Chromeకు సైన్ ఇన్ చేయండి కొత్తది! మీరు ఇప్పుడు మీ స్క్రీన్‌పై టెక్స్ట్‌ను, ఇమేజ్‌లను రెండింటినీ అనువదించవచ్చు @@ -134,7 +134,7 @@ Chrome మీ పాస్‌వర్డ్‌లను చెక్ చేయలేకపోయింది. తర్వాత మళ్లీ ట్రై చేయండి. కొనసాగించండి స్టార్టప్ ఎర్రర్: ప్రస్తుతం వేరొక సెటప్ రన్ అవుతోంది, దయచేసి తర్వాత మళ్లీ ట్రై చేయండి. -{NUM_DEVICES,plural, =0{ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌లు 1 HID పరికరాన్ని యాక్సెస్ చేస్తున్నాయి}=1{1 HID పరికరం ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌ల ద్వారా యాక్సెస్ చేయబడుతోంది}other{ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌లు # HID పరికరాలను యాక్సెస్ చేస్తున్నాయి}} +{NUM_DEVICES,plural, =0{ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌లు 1 HID డివైజ్‌ను యాక్సెస్ చేస్తున్నాయి}=1{1 HID డివైజ్ ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌ల ద్వారా యాక్సెస్ చేయబడుతోంది}other{ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌లు # HID డివైజ్‌లను యాక్సెస్ చేస్తున్నాయి}} ఈ ఎక్స్‌టెన్ష‌న్ Chrome వెబ్ స్టోర్ పాలసీని ఉల్లంఘిస్తోంది, ఇది సురక్షితం కాకపోవచ్చు. Chrome నుండి దాన్ని తీసివేయండి, తద్వారా ఇది మీ వ్యక్తిగత సమాచారంతో సహా మీరు సందర్శించే సైట్‌లలోని మీ డేటాను ఇకపై చూడలేదు, మార్చలేదు. Google Chrome మీ పాస్‌వర్డ్‌లను ఎగుమతి చేయాలనుకుంటోంది. దీనిని అనుమతించడం కోసం మీ Windows పాస్‌వర్డ్‌ని టైప్ చేయండి. ఈ ఎక్స్‌టెన్షన్‌లో మాల్‌వేర్ ఉంది, ఇది సురక్షితం కాకపోవచ్చు. Chrome నుండి దాన్ని తీసివేయండి, తద్వారా ఇది మీ వ్యక్తిగత సమాచారంతో సహా మీరు సందర్శించే సైట్‌లలోని మీ డేటాను ఇకపై చూడలేదు, మార్చలేదు. @@ -390,7 +390,7 @@ Chromeలో Geminiని ఉపయోగించడానికి, మీ Google ఖాతాతో మీరు Chromeకు సైన్ ఇన్ చేసి ఉండాలి Chromeకు కొత్త రూపాన్ని అందించడానికి దాన్ని అనుకూలంగా మార్చండి Chrome అప్‌డేట్ -మీరు పరికరాన్ని షేర్ చేస్తే, ఫ్రెండ్స్, ఫ్యామిలీ విడివిడిగా బ్రౌజ్ చేయవచ్చు, Chromeను వారికి నచ్చిన విధంగా సెటప్ చేసుకోవచ్చు +మీరు డివైజ్‌ను షేర్ చేస్తే, ఫ్రెండ్స్, ఫ్యామిలీ విడివిడిగా బ్రౌజ్ చేయవచ్చు, Chromeను వారికి నచ్చిన విధంగా సెటప్ చేసుకోవచ్చు తొలగించండి మీరు మెసేజ్‌లలో, డాక్యుమెంట్‌లలో, ఇంకా ఇతర యాప్‌లలో ఉండే లింక్‌లను క్లిక్ చేసినప్పుడల్లా Chromeను ఉపయోగించండి గెస్ట్‌లు ఎటువంటి హిస్టరీని వదలకుండానే Chromeను ఉపయోగించవచ్చు. @@ -608,7 +608,7 @@ మీరు గా Chromeకు సైన్ ఇన్ చేశారు. మళ్లీ సైన్ ఇన్ చేయడానికి, దయచేసి ఇదే ఖాతాను ఉపయోగించండి. Chrome మెనూను క్లిక్ చేయండి Google Lensతో సెర్చ్ చేయడానికి ఏదైనా ఎంచుకోండి -{NUM_DEVICES,plural, =0{ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌లు 1 USB పరికరాన్ని యాక్సెస్ చేస్తున్నాయి}=1{1 USB పరికరం ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌ల ద్వారా యాక్సెస్ చేయబడుతోంది}other{ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌లు # USB పరికరాలను యాక్సెస్ చేస్తున్నాయి}} +{NUM_DEVICES,plural, =0{ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌లు 1 USB డివైజ్‌ను యాక్సెస్ చేస్తున్నాయి}=1{1 USB డివైజ్ ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌ల ద్వారా యాక్సెస్ చేయబడుతోంది}other{ఒకటి లేదా అంతకంటే ఎక్కువ Chrome ఎక్స్‌టెన్షన్‌లు # USB డివైజ్‌లను యాక్సెస్ చేస్తున్నాయి}} Google Chromeకు ఇక ఈ Linux డిస్ట్రిబ్యూషన్‌లో సపోర్ట్ లేనందున అది సరిగ్గా పని చేయకపోవచ్చు Chrome నుండి సైన్ అవుట్ చేయండి {COUNT,plural, =1{Chromeను 1 నిమిషం పాటు ఉపయోగించనప్పుడు, మీ సంస్థ ఆటోమేటిక్‌గా దాన్ని మూసివేస్తుంది.}other{Chromeను # నిమిషాల పాటు ఉపయోగించనప్పుడు, మీ సంస్థ ఆటోమేటిక్‌గా దాన్ని మూసివేస్తుంది.}} @@ -632,7 +632,7 @@ Google ChromeOS Flex - కోసం ఈ పరికరాన్ని ఉపయోగించడానికి ముందు కింది సర్వీస్ నియమాలను మీరు చదివి, అంగీకరించాలి. ఈ నియమాలు Google ChromeOS నియమాలను విస్తరింపజేయవు, సవరించవు లేదా పరిమితం చేయవు. + కోసం ఈ డివైజ్‌ను ఉపయోగించడానికి ముందు కింది సర్వీస్ నియమాలను మీరు చదివి, అంగీకరించాలి. ఈ నియమాలు Google ChromeOS నియమాలను విస్తరింపజేయవు, సవరించవు లేదా పరిమితం చేయవు. మీ డేటాను సురక్షితంగా ఉంచడానికి, మీరు ఇటీవల ఉపయోగించని సైట్‌లకు అనుమతులను తీసివేయడానికి Chromeకు అనుమతినివ్వండి. మీ పాస్‌వర్డ్‌లు ఎప్పుడైనా హ్యాక్ అయితే, Chrome మీకు తెలియచేస్తుంది ను యాక్సెస్ చేయడం కోసం ను తెరిచే విధంగా Google Chromeను మీ సిస్టమ్ నిర్వాహకుడు కాన్ఫిగర్ చేశారు. diff -Nru chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_zh-CN.xtb chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_zh-CN.xtb --- chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_zh-CN.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_zh-CN.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -489,7 +489,7 @@ - Google Chrome 测试版 此标签页正在占用额外的资源。请通过 Chrome 将其设为非活跃状态,以便提升性能。 更新服务器出现内部错误,因此安装失败。 -Chrome 中的 Gemini 会使用自动浏览功能在标签页中运行,完成您交代的各种任务。了解详情 +Chrome 中的 Gemini 利用“自动浏览”功能在标签页中操作,完成您交代的各种任务。了解详情 Chrome 提示:保存密码 设置 Chrome 账号 添加了一个扩展程序,可能会改变 Chrome 的工作方式。 diff -Nru chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_zh-TW.xtb chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_zh-TW.xtb --- chromium-146.0.7680.80/chrome/app/resources/google_chrome_strings_zh-TW.xtb 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/app/resources/google_chrome_strings_zh-TW.xtb 2026-03-17 19:56:22.000000000 +0000 @@ -708,7 +708,7 @@ 當網站要求以私密方式預先載入網頁上的連結時,Chrome 會使用 Google 伺服器進行預先載入作業。這麼做可在預先載入網站中隱藏你的身分,但 Google 會知道這類網站預先載入的內容。 這個檔案並不安全,因此遭到 Chrome 封鎖。 只要登入 Chrome,就能將密碼和其他資訊儲存到 Google 帳戶,方便你隨時取用。 -向 Google 提問 +問問 Google 譯文語言: 降低效能但提高 Chrome 防範攻擊的能力 提出問題 diff -Nru chromium-146.0.7680.80/chrome/browser/BUILD.gn chromium-146.0.7680.153/chrome/browser/BUILD.gn --- chromium-146.0.7680.80/chrome/browser/BUILD.gn 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/BUILD.gn 2026-03-17 19:56:22.000000000 +0000 @@ -3978,6 +3978,8 @@ "page_load_metrics/observers/initial_webui_page_load_metrics_observer.h", "page_load_metrics/observers/non_tab_webui_page_load_metrics_observer.cc", "page_load_metrics/observers/non_tab_webui_page_load_metrics_observer.h", + "page_load_metrics/observers/top_chrome_webui_metrics_observer.cc", + "page_load_metrics/observers/top_chrome_webui_metrics_observer.h", "password_manager/generated_password_leak_detection_pref.cc", "password_manager/generated_password_leak_detection_pref.h", "password_manager/password_change_delegate_impl.cc", diff -Nru chromium-146.0.7680.80/chrome/browser/about_flags.cc chromium-146.0.7680.153/chrome/browser/about_flags.cc --- chromium-146.0.7680.80/chrome/browser/about_flags.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/about_flags.cc 2026-03-17 19:56:22.000000000 +0000 @@ -3443,16 +3443,19 @@ {"Disabled", switches::kDisableFeatures, "ReplaceSyncPromosWithSignInPromos"}, {"Enabled", switches::kEnableFeatures, - "ReplaceSyncPromosWithSignInPromos:explicit_signin_for_extensions/false"}, + "ReplaceSyncPromosWithSignInPromos:explicit_signin_for_extensions/" + "false/explicit_signin_for_bookmarks/false"}, {"Enabled with follow-ups", switches::kEnableFeatures, "ReplaceSyncPromosWithSignInPromos:explicit_signin_for_extensions/" - "false,UnoPhase2FollowUp"}, - {"Enabled with explicit signin for extensions", switches::kEnableFeatures, - "ReplaceSyncPromosWithSignInPromos:explicit_signin_for_extensions/true"}, - {"Enabled with explicit signin for extensions and follow-ups", + "false/explicit_signin_for_bookmarks/false,UnoPhase2FollowUp"}, + {"Enabled with explicit signin for extensions and bookmarks", + switches::kEnableFeatures, + "ReplaceSyncPromosWithSignInPromos:explicit_signin_for_extensions/" + "true/explicit_signin_for_bookmarks/true"}, + {"Enabled with explicit signin for extensions and bookmarks and follow-ups", switches::kEnableFeatures, - "ReplaceSyncPromosWithSignInPromos:explicit_signin_for_extensions/true," - "UnoPhase2FollowUp"}, + "ReplaceSyncPromosWithSignInPromos:explicit_signin_for_extensions/" + "true/explicit_signin_for_bookmarks/true,UnoPhase2FollowUp"}, }; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) @@ -8788,6 +8791,11 @@ FEATURE_VALUE_TYPE(ui::kEnableInputEventLogging)}, #endif + {"lens-enable-raw-file-media-types", + flag_descriptions::kLensEnableSendRawFileMediaTypesName, + flag_descriptions::kLensEnableSendRawFileMediaTypesDescription, kOsAll, + FEATURE_VALUE_TYPE(lens::features::kLensSendRawFileMediaTypes)}, + {flag_descriptions::kEnableLensStandaloneFlagId, flag_descriptions::kEnableLensStandaloneName, flag_descriptions::kEnableLensStandaloneDescription, kOsDesktop, diff -Nru chromium-146.0.7680.80/chrome/browser/android/omnibox/composebox_query_controller_bridge.cc chromium-146.0.7680.153/chrome/browser/android/omnibox/composebox_query_controller_bridge.cc --- chromium-146.0.7680.80/chrome/browser/android/omnibox/composebox_query_controller_bridge.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/android/omnibox/composebox_query_controller_bridge.cc 2026-03-17 19:56:22.000000000 +0000 @@ -40,6 +40,7 @@ #include "content/public/browser/web_contents.h" #include "mojo/public/cpp/base/big_buffer.h" #include "net/base/url_util.h" +#include "third_party/omnibox_proto/chrome_aim_entry_point.pb.h" #include "ui/base/unowned_user_data/user_data_factory.h" #include "ui/gfx/codec/png_codec.h" #include "url/android/gurl_android.h" @@ -252,6 +253,8 @@ search_url_request_info->additional_params = lens::GetParametersMapWithoutQuery(url); search_url_request_info->query_start_time = base::Time::Now(); + search_url_request_info->aim_entry_point = + omnibox::ANDROID_CHROME_FUSEBOX_ENTRY_POINT; search_url_request_info->invocation_source = lens::LensOverlayInvocationSource::kOmniboxContextualQuery; // Read the list of tokens from the fileinfo map in the contextual search diff -Nru chromium-146.0.7680.80/chrome/browser/ash/login/version_info_updater.cc chromium-146.0.7680.153/chrome/browser/ash/login/version_info_updater.cc --- chromium-146.0.7680.80/chrome/browser/ash/login/version_info_updater.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/ash/login/version_info_updater.cc 2026-03-17 19:56:22.000000000 +0000 @@ -7,7 +7,9 @@ #include #include +#include "ash/constants/ash_features.h" #include "base/compiler_specific.h" +#include "base/feature_list.h" #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/strings/string_util.h" @@ -115,6 +117,15 @@ // Update device bluetooth info. device::BluetoothAdapterFactory::Get()->GetAdapter(base::BindOnce( &VersionInfoUpdater::OnGetAdapter, weak_pointer_factory_.GetWeakPtr())); + + // Get ADB sideloading status if supported on device. Otherwise, default is to + // not show. + if (base::FeatureList::IsEnabled(features::kArcAdbSideloadingFeature)) { + SessionManagerClient* client = SessionManagerClient::Get(); + client->QueryAdbSideload( + base::BindOnce(&VersionInfoUpdater::OnQueryAdbSideload, + weak_pointer_factory_.GetWeakPtr())); + } } std::optional VersionInfoUpdater::IsSystemInfoEnforced() const { @@ -211,4 +222,28 @@ UpdateEnterpriseInfo(); } +void VersionInfoUpdater::OnQueryAdbSideload( + SessionManagerClient::AdbSideloadResponseCode response_code, + bool enabled) { + switch (response_code) { + case SessionManagerClient::AdbSideloadResponseCode::SUCCESS: + break; + case SessionManagerClient::AdbSideloadResponseCode::FAILED: + // Pretend to be enabled to show warning at login screen conservatively. + LOG(WARNING) << "Failed to query adb sideload status"; + enabled = true; + break; + case SessionManagerClient::AdbSideloadResponseCode::NEED_POWERWASH: + // This can only happen on device initialized before M74, i.e. not + // powerwashed since then. Treat it as powerwash disabled to not show the + // message. + enabled = false; + break; + } + + if (delegate_) { + delegate_->OnAdbSideloadStatusUpdated(enabled); + } +} + } // namespace ash diff -Nru chromium-146.0.7680.80/chrome/browser/autocomplete/chrome_aim_eligibility_service_browsertest.cc chromium-146.0.7680.153/chrome/browser/autocomplete/chrome_aim_eligibility_service_browsertest.cc --- chromium-146.0.7680.80/chrome/browser/autocomplete/chrome_aim_eligibility_service_browsertest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/autocomplete/chrome_aim_eligibility_service_browsertest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -15,6 +15,7 @@ #include "base/check.h" #include "base/functional/bind.h" #include "base/strings/string_number_conversions.h" +#include "base/task/sequenced_task_runner.h" #include "base/test/bind.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/run_until.h" @@ -156,6 +157,7 @@ using EligibilityResponseSource = AimEligibilityService::EligibilityResponseSource; using RequestSource = AimEligibilityService::RequestSource; + using AuthenticationMethod = AimEligibilityService::AuthenticationMethod; void ProcessServerEligibilityResponse( AimEligibilityService* service, @@ -164,20 +166,17 @@ int response_code, EligibilityRequestStatus request_status, int num_retries, + AuthenticationMethod auth_method, std::optional response_string) { service->ProcessServerEligibilityResponse( request_source, pending_request_account, response_code, request_status, - num_retries, std::move(response_string)); + num_retries, auth_method, std::move(response_string)); } }; -class ChromeAimEligibilityServiceBrowserTest - : public InProcessBrowserTest, - public ::testing::WithParamInterface< - std::tuple> { +class AimEligibilityTestBase : public InProcessBrowserTest { public: - ChromeAimEligibilityServiceBrowserTest() = default; - ~ChromeAimEligibilityServiceBrowserTest() override = default; + ~AimEligibilityTestBase() override = default; signin::IdentityTestEnvironment* identity_test_env() { return identity_test_env_adaptor_->identity_test_env(); @@ -187,6 +186,88 @@ return signin_client_with_url_loader_helper_.test_url_loader_factory(); } + // Returns the service instance, initializing it if it hasn't been created + // yet. This allows tests to control when the service (and its Startup + // request) is initialized, ensuring interceptors and HistogramTesters are + // ready. + AimEligibilityService* GetAimEligibilityService(Profile* profile) { + auto* service = AimEligibilityServiceFactory::GetForProfile(profile); + if (!service) { + service = static_cast( + AimEligibilityServiceFactory::GetInstance()->SetTestingFactoryAndUse( + profile, AimEligibilityServiceFactory::GetDefaultFactory())); + } + return service; + } + + protected: + explicit AimEligibilityTestBase(bool use_null_factory = true) + : use_null_factory_(use_null_factory) {} + + void SetUpInProcessBrowserTestFixture() override { + signin_client_with_url_loader_helper_.SetUp(); + create_services_subscription_ = + BrowserContextDependencyManager::GetInstance() + ->RegisterCreateServicesCallbackForTesting(base::BindRepeating( + &AimEligibilityTestBase::OnWillCreateBrowserContextServices, + use_null_factory_)); + InProcessBrowserTest::SetUpInProcessBrowserTestFixture(); + } + + static void OnWillCreateBrowserContextServices( + bool use_null_factory, + content::BrowserContext* context) { + IdentityTestEnvironmentProfileAdaptor:: + SetIdentityTestEnvironmentFactoriesOnBrowserContext(context); + + if (use_null_factory) { + // Prevent the service from being created automatically during profile + // initialization. Tests will call `GetAimEligibilityService()` when + // ready. + AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( + context, + base::BindRepeating([](content::BrowserContext* context) + -> std::unique_ptr { + return nullptr; + })); + } + } + + void SetUpOnMainThread() override { + InProcessBrowserTest::SetUpOnMainThread(); + + identity_test_env_adaptor_ = + std::make_unique( + browser()->profile()); + + identity_test_env()->SetTestURLLoaderFactory(test_url_loader_factory()); + identity_test_env()->SetAutomaticIssueOfAccessTokens(true); + + identity_test_env()->SetCookieAccounts({{}}); + } + + void TearDownOnMainThread() override { + identity_test_env_adaptor_.reset(); + InProcessBrowserTest::TearDownOnMainThread(); + } + + ChromeSigninClientWithURLLoaderHelper signin_client_with_url_loader_helper_; + base::CallbackListSubscription create_services_subscription_; + std::unique_ptr + identity_test_env_adaptor_; + + private: + const bool use_null_factory_; +}; + +class ChromeAimEligibilityServiceBrowserTest + : public AimEligibilityTestBase, + public ::testing::WithParamInterface< + std::tuple> { + public: + ChromeAimEligibilityServiceBrowserTest() = default; + ~ChromeAimEligibilityServiceBrowserTest() override = default; + protected: void SetUp() override { auto [locale, country, server_eligibility_enabled, allowed_by_policy, @@ -198,7 +279,10 @@ // Needed for bots with field trial testing configs explicitly disabled. enabled_features.push_back( + {omnibox::kAimEligibilityServiceIdentityImprovements, {}}); + enabled_features.push_back( {omnibox::kAimServerEligibilityForPrimaryAccountEnabled, {}}); + enabled_features.push_back({omnibox::kAimUrlNavigationFetchEnabled, {}}); enabled_features.push_back( {omnibox::kAimServerRequestOnStartupEnabled, {}}); enabled_features.push_back( @@ -235,47 +319,19 @@ SetUpDefaultSearchEngine(browser()->profile(), is_google_dse); - // Set the adaptor that supports signin::IdentityTestEnvironment. - identity_test_env_adaptor_ = - std::make_unique( - browser()->profile()); - - // Set the testing factory for AimEligibilityService. - AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( - browser()->profile(), - base::BindOnce(AimEligibilityServiceFactory::GetDefaultFactory())); - - InProcessBrowserTest::SetUpOnMainThread(); + AimEligibilityTestBase::SetUpOnMainThread(); } void TearDownOnMainThread() override { scoped_browser_locale_.reset(); - InProcessBrowserTest::TearDownOnMainThread(); + AimEligibilityTestBase::TearDownOnMainThread(); } - void SetUpInProcessBrowserTestFixture() override { - signin_client_with_url_loader_helper_.SetUp(); - create_services_subscription_ = - BrowserContextDependencyManager::GetInstance() - ->RegisterCreateServicesCallbackForTesting( - base::BindRepeating(&ChromeAimEligibilityServiceBrowserTest:: - OnWillCreateBrowserContextServices)); - } - static void OnWillCreateBrowserContextServices( - content::BrowserContext* context) { - // Set up IdentityTestEnvironment. - IdentityTestEnvironmentProfileAdaptor:: - SetIdentityTestEnvironmentFactoriesOnBrowserContext(context); - } base::test::ScopedFeatureList feature_list_; std::unique_ptr scoped_browser_locale_; - ChromeSigninClientWithURLLoaderHelper signin_client_with_url_loader_helper_; - base::CallbackListSubscription create_services_subscription_; - std::unique_ptr - identity_test_env_adaptor_; }; INSTANTIATE_TEST_SUITE_P(, @@ -296,8 +352,14 @@ // Values for Pdf server response eligibility. ::testing::Values(true, false))); +#if (BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)) +// TODO(crbug.com/488467253): Fix and re-enable this test for CrOS. +#define MAYBE_ComprehensiveEligibilityTest DISABLED_ComprehensiveEligibilityTest +#else +#define MAYBE_ComprehensiveEligibilityTest ComprehensiveEligibilityTest +#endif IN_PROC_BROWSER_TEST_P(ChromeAimEligibilityServiceBrowserTest, - ComprehensiveEligibilityTest) { + MAYBE_ComprehensiveEligibilityTest) { auto [locale, country, server_eligibility_enabled, allowed_by_policy, is_google_dse, is_server_eligible, is_pdf_upload_eligible] = GetParam(); @@ -317,8 +379,7 @@ { base::HistogramTester histogram_tester; - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -465,8 +526,7 @@ /*session_index=*/1); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -617,7 +677,7 @@ } class ChromeAimEligibilityServiceStartupRequestBrowserTest - : public InProcessBrowserTest { + : public AimEligibilityTestBase { public: ChromeAimEligibilityServiceStartupRequestBrowserTest() = default; ~ChromeAimEligibilityServiceStartupRequestBrowserTest() override = default; @@ -637,13 +697,10 @@ } void SetUpOnMainThread() override { - InProcessBrowserTest::SetUpOnMainThread(); + AimEligibilityTestBase::SetUpOnMainThread(); SetUpDefaultSearchEngine(browser()->profile(), /*is_google_dse=*/true); - AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( - browser()->profile(), - base::BindOnce(AimEligibilityServiceFactory::GetDefaultFactory())); } private: @@ -672,8 +729,7 @@ ->SetConnectionType(net::NetworkChangeNotifier::CONNECTION_NONE); // When the service is initialized. - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -715,8 +771,7 @@ })); // Given the user is online at startup. - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -756,8 +811,7 @@ ->SetConnectionType(net::NetworkChangeNotifier::CONNECTION_NONE); // When the service is initialized. - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -799,7 +853,7 @@ } class ChromeAimEligibilityServicePecApiEnabledBrowserTest - : public InProcessBrowserTest { + : public AimEligibilityTestBase { public: ChromeAimEligibilityServicePecApiEnabledBrowserTest() = default; ~ChromeAimEligibilityServicePecApiEnabledBrowserTest() override = default; @@ -814,11 +868,8 @@ } void SetUpOnMainThread() override { - InProcessBrowserTest::SetUpOnMainThread(); + AimEligibilityTestBase::SetUpOnMainThread(); SetUpDefaultSearchEngine(browser()->profile(), /*is_google_dse=*/true); - AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( - browser()->profile(), - base::BindOnce(AimEligibilityServiceFactory::GetDefaultFactory())); } private: @@ -826,7 +877,7 @@ }; class ChromeAimEligibilityServicePecApiDisabledBrowserTest - : public InProcessBrowserTest { + : public AimEligibilityTestBase { public: ChromeAimEligibilityServicePecApiDisabledBrowserTest() = default; ~ChromeAimEligibilityServicePecApiDisabledBrowserTest() override = default; @@ -841,11 +892,8 @@ } void SetUpOnMainThread() override { - InProcessBrowserTest::SetUpOnMainThread(); + AimEligibilityTestBase::SetUpOnMainThread(); SetUpDefaultSearchEngine(browser()->profile(), /*is_google_dse=*/true); - AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( - browser()->profile(), - base::BindOnce(AimEligibilityServiceFactory::GetDefaultFactory())); } private: @@ -872,8 +920,7 @@ request_handled_future.GetRepeatingCallback()); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( @@ -913,8 +960,7 @@ request_handled_future.GetRepeatingCallback()); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( @@ -967,8 +1013,7 @@ request_handled_future.GetRepeatingCallback()); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1002,8 +1047,7 @@ request_handled_future.GetRepeatingCallback()); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( @@ -1015,7 +1059,7 @@ } class ChromeAimEligibilityServiceRetryRequestBrowserTest - : public InProcessBrowserTest { + : public AimEligibilityTestBase { public: ChromeAimEligibilityServiceRetryRequestBrowserTest() = default; ~ChromeAimEligibilityServiceRetryRequestBrowserTest() override = default; @@ -1037,11 +1081,7 @@ void SetUpOnMainThread() override { SetUpDefaultSearchEngine(browser()->profile(), /*is_google_dse=*/true); - AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( - browser()->profile(), - base::BindOnce(AimEligibilityServiceFactory::GetDefaultFactory())); - - InProcessBrowserTest::SetUpOnMainThread(); + AimEligibilityTestBase::SetUpOnMainThread(); } private: @@ -1066,8 +1106,7 @@ })); // When the service is initialized. - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1097,8 +1136,7 @@ })); // When the service is initialized. - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1126,8 +1164,7 @@ })); // When the service is initialized. - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1144,7 +1181,7 @@ } class ChromeAimEligibilityServiceCacheBrowserTest - : public InProcessBrowserTest { + : public AimEligibilityTestBase { public: ChromeAimEligibilityServiceCacheBrowserTest() = default; ~ChromeAimEligibilityServiceCacheBrowserTest() override = default; @@ -1165,11 +1202,7 @@ void SetUpOnMainThread() override { SetUpDefaultSearchEngine(browser()->profile(), /*is_google_dse=*/true); - AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( - browser()->profile(), - base::BindOnce(AimEligibilityServiceFactory::GetDefaultFactory())); - - InProcessBrowserTest::SetUpOnMainThread(); + AimEligibilityTestBase::SetUpOnMainThread(); } private: @@ -1178,8 +1211,7 @@ IN_PROC_BROWSER_TEST_F(ChromeAimEligibilityServiceCacheBrowserTest, RequestFromCache) { - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); omnibox::AimEligibilityResponse response; response.set_is_eligible(true); @@ -1194,7 +1226,9 @@ 200, AimEligibilityServiceFriend::EligibilityRequestStatus:: kSuccessBrowserCache, - /*num_retries=*/0, std::move(response_string)); + /*num_retries=*/0, + AimEligibilityServiceFriend::AuthenticationMethod::kCookie, + std::move(response_string)); service->IsAimEligible(); histogram_tester.ExpectUniqueSample( @@ -1208,7 +1242,7 @@ } class ChromeAimEligibilityServiceOffTheRecordBrowserTest - : public InProcessBrowserTest { + : public AimEligibilityTestBase { public: ChromeAimEligibilityServiceOffTheRecordBrowserTest() = default; ~ChromeAimEligibilityServiceOffTheRecordBrowserTest() override = default; @@ -1227,11 +1261,7 @@ void SetUpOnMainThread() override { SetUpDefaultSearchEngine(browser()->profile(), /*is_google_dse=*/true); - AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( - browser()->profile(), - base::BindOnce(AimEligibilityServiceFactory::GetDefaultFactory())); - - InProcessBrowserTest::SetUpOnMainThread(); + AimEligibilityTestBase::SetUpOnMainThread(); } private: @@ -1241,34 +1271,26 @@ IN_PROC_BROWSER_TEST_F(ChromeAimEligibilityServiceOffTheRecordBrowserTest, IsCreateImagesEligibleReturnsFalseForOffTheRecord) { // Check regular profile. - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); ASSERT_TRUE(service); EXPECT_TRUE(service->IsCreateImagesEligible()); // Check off-the-record profile. Profile* otr_profile = browser()->profile()->GetPrimaryOTRProfile( /*create_if_needed=*/true); - auto* otr_service = AimEligibilityServiceFactory::GetForProfile(otr_profile); + auto* otr_service = GetAimEligibilityService(otr_profile); ASSERT_TRUE(otr_service); EXPECT_NE(service, otr_service); EXPECT_FALSE(otr_service->IsCreateImagesEligible()); } class ChromeAimEligibilityServiceOAuthBrowserTest - : public InProcessBrowserTest { + : public AimEligibilityTestBase { public: - ChromeAimEligibilityServiceOAuthBrowserTest() = default; + ChromeAimEligibilityServiceOAuthBrowserTest() + : AimEligibilityTestBase(false) {} ~ChromeAimEligibilityServiceOAuthBrowserTest() override = default; - signin::IdentityTestEnvironment* identity_test_env() { - return identity_test_env_adaptor_->identity_test_env(); - } - - network::TestURLLoaderFactory* test_url_loader_factory() { - return signin_client_with_url_loader_helper_.test_url_loader_factory(); - } - protected: void SetUp() override { feature_list_.InitWithFeaturesAndParameters( @@ -1278,53 +1300,17 @@ {omnibox::kAimServerRequestOnStartupEnabled, {}}, {omnibox::kAimEligibilityServiceIdentityImprovements, {}}}, // Disabled features. - {contextual_tasks::kContextualTasks, - omnibox::kAimEligibilityServiceDebounce}); + {}); InProcessBrowserTest::SetUp(); } void SetUpOnMainThread() override { - InProcessBrowserTest::SetUpOnMainThread(); + AimEligibilityTestBase::SetUpOnMainThread(); SetUpDefaultSearchEngine(browser()->profile(), /*is_google_dse=*/true); - // Set the adaptor that supports signin::IdentityTestEnvironment. - identity_test_env_adaptor_ = - std::make_unique( - browser()->profile()); - - AimEligibilityServiceFactory::GetInstance()->SetTestingFactory( - browser()->profile(), - base::BindOnce(AimEligibilityServiceFactory::GetDefaultFactory())); - - identity_test_env()->SetTestURLLoaderFactory(test_url_loader_factory()); - identity_test_env()->SetAutomaticIssueOfAccessTokens(true); } - void TearDownOnMainThread() override { - InProcessBrowserTest::TearDownOnMainThread(); - } - - void SetUpInProcessBrowserTestFixture() override { - signin_client_with_url_loader_helper_.SetUp(); - create_services_subscription_ = - BrowserContextDependencyManager::GetInstance() - ->RegisterCreateServicesCallbackForTesting(base::BindRepeating( - &ChromeAimEligibilityServiceOAuthBrowserTest:: - OnWillCreateBrowserContextServices)); - } - - static void OnWillCreateBrowserContextServices( - content::BrowserContext* context) { - // Set up IdentityTestEnvironment. - IdentityTestEnvironmentProfileAdaptor:: - SetIdentityTestEnvironmentFactoriesOnBrowserContext(context); - } - - ChromeSigninClientWithURLLoaderHelper signin_client_with_url_loader_helper_; - base::CallbackListSubscription create_services_subscription_; - std::unique_ptr - identity_test_env_adaptor_; base::test::ScopedFeatureList feature_list_; }; @@ -1362,8 +1348,7 @@ })); // Trigger the request. - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1372,9 +1357,14 @@ EXPECT_TRUE(request_handled_future.Get()); } - +#if (BUILDFLAG(IS_CHROMEOS) && (!defined(NDEBUG))) || BUILDFLAG(IS_MAC) +// TODO(crbug.com/488467253): Fix and re-enable this test for CrOS. +#define MAYBE_OTRRequestIsNotDropped DISABLED_OTRRequestIsNotDropped +#else +#define MAYBE_OTRRequestIsNotDropped OTRRequestIsNotDropped +#endif IN_PROC_BROWSER_TEST_F(ChromeAimEligibilityServiceOAuthBrowserTest, - OTRRequestIsNotDropped) { + MAYBE_OTRRequestIsNotDropped) { // Expectation: The request should include the Authorization header. omnibox::AimEligibilityResponse response; response.set_is_eligible(true); @@ -1393,7 +1383,7 @@ // Check off-the-record profile. Profile* otr_profile = browser()->profile()->GetPrimaryOTRProfile( /*create_if_needed=*/true); - auto* service = AimEligibilityServiceFactory::GetForProfile(otr_profile); + auto* service = GetAimEligibilityService(otr_profile); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1425,8 +1415,7 @@ request_handled_future.GetRepeatingCallback()); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1493,8 +1482,7 @@ request_handled_future.GetRepeatingCallback()); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1518,8 +1506,7 @@ request_handled_future.GetRepeatingCallback()); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1568,8 +1555,7 @@ request_handled_future.GetRepeatingCallback()); })); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); @@ -1677,8 +1663,7 @@ identity_test_env()->SetCookieAccounts( {{account_b.email, account_b.gaia}, {account_a.email, account_a.gaia}}); - auto* service = - AimEligibilityServiceFactory::GetForProfile(browser()->profile()); + auto* service = GetAimEligibilityService(browser()->profile()); base::test::TestFuture eligibility_changed_future; auto eligibility_subscription = service->RegisterEligibilityChangedCallback( eligibility_changed_future.GetRepeatingCallback()); diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_cueing/contextual_cueing_helper.cc chromium-146.0.7680.153/chrome/browser/contextual_cueing/contextual_cueing_helper.cc --- chromium-146.0.7680.80/chrome/browser/contextual_cueing/contextual_cueing_helper.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_cueing/contextual_cueing_helper.cc 2026-03-17 19:56:22.000000000 +0000 @@ -396,8 +396,24 @@ return; } - const GURL& url = web_contents()->GetLastCommittedURL(); - auto can_show_decision = contextual_cueing_service_->CanShowNudge(url); + const bool should_open_side_panel = + decision_result->auto_open_eligible && + base::FeatureList::IsEnabled(kEnableAutoOpenGlicSidePanel); + + const bool is_auto_open_pdf_side_panel_cue = + should_open_side_panel && + web_contents()->GetContentsMimeType() == pdf::kPDFMimeType && + base::FeatureList::IsEnabled(features::kAutoOpenGlicForPdf); + + // Check nudge rate-limiting/backoff caps. Auto-open PDF side panel bypasses + // this check for a more detemrinistic feel. + NudgeDecision can_show_decision; + if (is_auto_open_pdf_side_panel_cue) { + can_show_decision = NudgeDecision::kSuccess; + } else { + const GURL& url = web_contents()->GetLastCommittedURL(); + can_show_decision = contextual_cueing_service_->CanShowNudge(url); + } decision_recorder->set_nudge_decision(can_show_decision); if (can_show_decision != NudgeDecision::kSuccess) { return; @@ -405,10 +421,6 @@ // Handle side panel auto-open case: bypass nudge and open panel directly. // If auto-open fails or is disabled, falls through to standard nudge. - const bool should_open_side_panel = - decision_result->auto_open_eligible && - base::FeatureList::IsEnabled(kEnableAutoOpenGlicSidePanel); - if (should_open_side_panel) { auto* tab_interface = tabs::TabInterface::GetFromContents(web_contents()); auto* browser_window_interface = tab_interface->GetBrowserWindowInterface(); @@ -424,8 +436,7 @@ glic::mojom::InvocationSource invocation_source = glic::mojom::InvocationSource::kAutoOpenedByContextualCue; - if (web_contents()->GetContentsMimeType() == pdf::kPDFMimeType && - base::FeatureList::IsEnabled(features::kAutoOpenGlicForPdf)) { + if (is_auto_open_pdf_side_panel_cue) { invocation_source = glic::mojom::InvocationSource::kAutoOpenedForPdf; } diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_cueing/contextual_cueing_helper_interactive_uitest.cc chromium-146.0.7680.153/chrome/browser/contextual_cueing/contextual_cueing_helper_interactive_uitest.cc --- chromium-146.0.7680.80/chrome/browser/contextual_cueing/contextual_cueing_helper_interactive_uitest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_cueing/contextual_cueing_helper_interactive_uitest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -11,6 +11,7 @@ #include "chrome/browser/contextual_cueing/contextual_cueing_features.h" #include "chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator.h" #include "chrome/browser/glic/glic_pref_names.h" +#include "chrome/browser/glic/public/features.h" #include "chrome/browser/glic/test_support/interactive_glic_test.h" #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h" #include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h" @@ -745,4 +746,79 @@ contextual_cueing::NudgeDecision::kSuccess, 1); } +// Test fixture to verify that auto-open for PDF bypasses nudge caps. +class ContextualCueingBypassNudgeCapsTest + : public glic::test::InteractiveGlicTest { + public: + ContextualCueingBypassNudgeCapsTest() { + scoped_feature_list_.InitWithFeaturesAndParameters( + {{contextual_cueing::kContextualCueing, + {{"BackoffTime", "0h"}, + {"BackoffMultiplierBase", "0.0"}, + {"NudgeCapTime", "0h"}, + {"NudgeCapCount", "10"}, + {"MinPageCountBetweenNudges", "0"}, + {"UseDynamicCues", "true"}}}, + {contextual_cueing::kEnableAutoOpenGlicSidePanel, {}}, + {features::kAutoOpenGlicForPdf, {}}, + {page_content_annotations::features::kAnnotatedPageContentExtraction, + {}}, + {contextual_tasks::kContextualTasks, {}}}, + /*disabled_features=*/{}); + } + + void SetUp() override { + https_server_.SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES); + https_server_.ServeFilesFromSourceDirectory(GetChromeTestDataDir()); + ASSERT_TRUE(https_server_.Start()); + + glic::test::InteractiveGlicTest::SetUp(); + } + + void SetUpOnMainThread() override { + glic::test::InteractiveGlicTest::SetUpOnMainThread(); + host_resolver()->AddRule("*", "127.0.0.1"); + } + + void SetUpBypassHints() { + optimization_guide::proto::GlicContextualCueingMetadata cueing_metadata; + auto* cueing_config = cueing_metadata.add_cueing_configurations(); + cueing_config->set_cue_label("auto open label"); + cueing_config->set_dynamic_cue_label("auto open dynamic label"); + cueing_config->set_default_text("Summarize this page"); + cueing_config->set_auto_open_eligible(true); + + optimization_guide::OptimizationMetadata metadata; + metadata.set_any_metadata( + optimization_guide::AnyWrapProto(cueing_metadata)); + OptimizationGuideKeyedServiceFactory::GetForProfile(browser()->profile()) + ->AddHintForTesting( + https_server_.GetURL("autoopen.com", + "/optimization_guide/hello.html"), + optimization_guide::proto::GLIC_CONTEXTUAL_CUEING, metadata); + } + + protected: + base::test::ScopedFeatureList scoped_feature_list_; + net::EmbeddedTestServer https_server_{net::EmbeddedTestServer::TYPE_HTTPS}; +}; + +// Verify that kAutoOpenGlicForPdf + auto_open_eligible=true correctly +// opens the panel via the auto-open path, bypassing nudge caps. +IN_PROC_BROWSER_TEST_F(ContextualCueingBypassNudgeCapsTest, + TestAutoOpenBypassesNudgeCaps) { + SetUpBypassHints(); + + ASSERT_TRUE(ui_test_utils::NavigateToURLWithDisposition( + browser(), + https_server_.GetURL("autoopen.com", "/optimization_guide/hello.html"), + WindowOpenDisposition::NEW_FOREGROUND_TAB, + ui_test_utils::BROWSER_TEST_WAIT_FOR_LOAD_STOP)); + + // kAutoOpenGlicForPdf + auto_open_eligible should open the panel. + auto* glic_service = glic::GlicKeyedService::Get(browser()->profile()); + ASSERT_TRUE(glic_service); + EXPECT_TRUE(glic_service->IsWindowShowing()); +} + #endif // BUILDFLAG(ENABLE_GLIC) diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_search/contextual_search_web_contents_helper.cc chromium-146.0.7680.153/chrome/browser/contextual_search/contextual_search_web_contents_helper.cc --- chromium-146.0.7680.80/chrome/browser/contextual_search/contextual_search_web_contents_helper.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_search/contextual_search_web_contents_helper.cc 2026-03-17 19:56:22.000000000 +0000 @@ -19,4 +19,9 @@ return std::move(input_state_model_); } +std::unique_ptr +ContextualSearchWebContentsHelper::TakeSessionHandle() { + return std::move(session_handle_); +} + WEB_CONTENTS_USER_DATA_KEY_IMPL(ContextualSearchWebContentsHelper); diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_search/contextual_search_web_contents_helper.h chromium-146.0.7680.153/chrome/browser/contextual_search/contextual_search_web_contents_helper.h --- chromium-146.0.7680.80/chrome/browser/contextual_search/contextual_search_web_contents_helper.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_search/contextual_search_web_contents_helper.h 2026-03-17 19:56:22.000000000 +0000 @@ -47,9 +47,15 @@ return session_handle_.get(); } - // Returns the input state model. May return nullptr. + // Returns the input state model. May return nullptr. This transfers + // ownership to the caller. std::unique_ptr TakeInputStateModel(); + // Returns the session handle. May return nullptr. This transfers ownership + // to the caller. + std::unique_ptr + TakeSessionHandle(); + // Returns the task ID associated with the current contextual search session. // std::nullopt if the web_contents isn't showing a contextual task. const std::optional& task_id() const { return task_id_; } @@ -68,6 +74,9 @@ std::unique_ptr TakeInputStateModelForTask(const base::Uuid& task_id) { + if (!task_id_) { + task_id_ = std::make_optional(task_id); + } // Return and transfer ownership of the model if it matches the task. if (task_id_ == task_id) { return TakeInputStateModel(); diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/BUILD.gn chromium-146.0.7680.153/chrome/browser/contextual_tasks/BUILD.gn --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/BUILD.gn 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/BUILD.gn 2026-03-17 19:56:22.000000000 +0000 @@ -213,6 +213,7 @@ "//chrome/browser:global_features", "//chrome/browser/autocomplete:aim_eligibility_service", "//chrome/browser/contextual_search", + "//chrome/browser/devtools", "//chrome/browser/feedback:feedback_enum", "//chrome/browser/optimization_guide", "//chrome/browser/profiles:profile", diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks.mojom chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks.mojom --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks.mojom 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks.mojom 2026-03-17 19:56:22.000000000 +0000 @@ -49,6 +49,15 @@ int32? margin_left; }; +enum IconType { + kUnspecified = 0, + kAdd = 9, + kCheck = 30, + kFormatQuoteFilled = 79, + kImage = 84, + kDrivePdf = 101, +}; + // Browser-side handler for requests from the WebUI page. // The WebUI page calls these methods to interact with the browser process. // (TypeScript -> C++) @@ -137,6 +146,12 @@ // Increments the counter for how many times the onboarding tooltip is // dismissed. OnboardingTooltipDismissed(); + + // Called when the user clicks the 'Reopen tabs' button which will be + // displayed when user revisits an expired thread. Tabs which were added + // to context may or may not be opened in new tabs depending upon what + // option user selects. + ReopenTabs(); }; // WebUI-side handler for requests from the browser. @@ -189,15 +204,31 @@ RestoreInput(); // Called by the browser process (C++) when the AIM server sends an - // InjectInput command to inject an input into the compose box. + // InjectInput command to inject an input into the compose box and specifies + // a thumbnail source. `file_token` is an identifier for the input generated + // by ContextualSearchSessionHandle. `supports_unimodal` specifies whether the + // input may be submitted as a query without any accompanying text query. InjectInput( string title, string thumbnail, - mojo_base.mojom.UnguessableToken file_token); + mojo_base.mojom.UnguessableToken file_token, + bool supports_unimodal); + + // Called by the browser process (C++) when the AIM server sends an + // InjectInput command to inject an input into the compose box and specifies + // an icon type. `file_token` is an identifier for the input generated + // by ContextualSearchSessionHandle. `supports_unimodal` specifies whether the + // input may be submitted as a query without any accompanying text query. + InjectInputWithIcon( + string title, + IconType icon_id, + mojo_base.mojom.UnguessableToken file_token, + bool supports_unimodal); // Called by the browser process (C++) when the AIM server sends a // RemoveInjectedInput command to remove an injected input from the compose - // box. + // box. `file_token` is the identifier passed when the input was originally + // injected. RemoveInjectedInput(mojo_base.mojom.UnguessableToken file_token); // Communicates to WebUI that the AIM page that is loaded is the zero state. @@ -235,6 +266,10 @@ // Called by the browser process (C++) to unlock/enable the input in the // WebUI. UnlockInput(); + + // Called by the browser process (C++) to show or hide the reopen tabs + // section. + SetShowReopenTabs(bool show); }; // Used to bootstrip bi-directional communication between the browser and webui. diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.cc 2026-03-17 19:56:22.000000000 +0000 @@ -160,6 +160,7 @@ mojo::PendingReceiver pending_searchbox_handler, GetSessionHandleCallback get_session_callback, + ClearSessionHandleCallback clear_session_callback, TakeInputStateModelCallback take_input_model_callback) : ComposeboxHandler( std::move(pending_handler), @@ -171,7 +172,8 @@ std::make_unique(profile, web_contents, this)), - std::move(get_session_callback)), + std::move(get_session_callback), + std::move(clear_session_callback)), take_input_model_callback_(std::move(take_input_model_callback)), web_ui_interface_(web_ui_interface), contextual_tasks_service_( @@ -420,6 +422,10 @@ return; } + // Set the is_implicit_upload field for the page content data since this + // callback runs for re-contextualization from the contextual tasks page. + page_content_data->is_implicit_upload = true; + if (web_ui_interface_->GetTaskId() != original_task_id) { single_tab_upload_callback.Run(); return; diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.h chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.h --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler.h 2026-03-17 19:56:22.000000000 +0000 @@ -62,6 +62,7 @@ mojo::PendingReceiver pending_searchbox_handler, GetSessionHandleCallback get_session_callback, + ClearSessionHandleCallback clear_session_callback, TakeInputStateModelCallback take_input_model_callback); ~ContextualTasksComposeboxHandler() override; diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler_unittest.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler_unittest.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_composebox_handler_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -290,6 +290,8 @@ base::BindRepeating( &ContextualTasksUI::GetOrCreateContextualSessionHandle, base::Unretained(mock_ui_.get())), + base::BindRepeating(&ContextualTasksUI::ClearContextualSessionHandle, + base::Unretained(mock_ui_.get())), base::BindRepeating(&ContextualTasksUI::TakeInputStateModel, base::Unretained(mock_ui_.get()))); handler_->SetMockContextualTasksService(mock_contextual_tasks_service_ptr_); @@ -527,6 +529,7 @@ [](int32_t tab_id, std::optional context_id, std::unique_ptr data, ContextualSearchboxHandler::RecontextualizeTabCallback callback) { + EXPECT_TRUE(data->is_implicit_upload); std::move(callback).Run(true); }); @@ -623,6 +626,7 @@ [](int32_t tab_id, std::optional context_id, std::unique_ptr data, ContextualSearchboxHandler::RecontextualizeTabCallback callback) { + EXPECT_TRUE(data->is_implicit_upload); std::move(callback).Run(true); }); @@ -968,6 +972,7 @@ [](int32_t tab_id, std::optional context_id, std::unique_ptr data, ContextualSearchboxHandler::RecontextualizeTabCallback callback) { + EXPECT_TRUE(data->is_implicit_upload); std::move(callback).Run(true); }); @@ -1255,6 +1260,7 @@ [](int32_t tab_id, std::optional context_id, std::unique_ptr data, ContextualSearchboxHandler::RecontextualizeTabCallback callback) { + EXPECT_TRUE(data->is_implicit_upload); std::move(callback).Run(true); }); @@ -1829,6 +1835,7 @@ [](int32_t tab_id, std::optional context_id, std::unique_ptr data, ContextualSearchboxHandler::RecontextualizeTabCallback callback) { + EXPECT_TRUE(data->is_implicit_upload); std::move(callback).Run(true); }); @@ -2000,9 +2007,13 @@ EXPECT_CALL(*handler_, UploadTabContextWithData(testing::_, testing::_, testing::_, testing::_)) - .WillRepeatedly([](int32_t, auto, auto, auto callback) { - std::move(callback).Run(true); - }); + .WillRepeatedly( + [](int32_t tab_id, std::optional context_id, + std::unique_ptr data, + ContextualSearchboxHandler::RecontextualizeTabCallback callback) { + EXPECT_TRUE(data->is_implicit_upload); + std::move(callback).Run(true); + }); EXPECT_CALL(*mock_controller_, CreateClientToAimRequest(testing::_)) .WillOnce(testing::Return(lens::ClientToAimMessage())); @@ -2615,7 +2626,6 @@ } TEST_F(ContextualTasksComposeboxHandlerTest, UpdateSuggestedTabContext) { - GURL url("https://example.com"); auto tab_info = searchbox::mojom::TabInfo::New(); tab_info->url = url; @@ -2730,6 +2740,7 @@ []() -> contextual_search::ContextualSearchSessionHandle* { return nullptr; }), + base::DoNothing(), base::BindRepeating(&ContextualTasksUI::TakeInputStateModel, base::Unretained(mock_ui_.get()))); auto file_info = searchbox::mojom::SelectedFileInfo::New(); @@ -2799,6 +2810,8 @@ base::BindRepeating( &ContextualTasksUI::GetOrCreateContextualSessionHandle, base::Unretained(mock_ui_.get())), + base::BindRepeating(&ContextualTasksUI::ClearContextualSessionHandle, + base::Unretained(mock_ui_.get())), std::move(mock_callback)); // 2. Act: Trigger the handler to fetch the model via the callback. diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_page_handler.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_page_handler.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_page_handler.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_page_handler.cc 2026-03-17 19:56:22.000000000 +0000 @@ -11,6 +11,7 @@ #include "base/uuid.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/contextual_tasks/ai_mode_context_library_converter.h" +#include "chrome/browser/contextual_tasks/contextual_tasks.mojom-shared.h" #include "chrome/browser/contextual_tasks/contextual_tasks_ui_service.h" #include "chrome/browser/contextual_tasks/contextual_tasks_utils.h" #include "chrome/browser/feedback/public/feedback_source.h" @@ -110,6 +111,23 @@ return context_items; } +contextual_tasks::mojom::IconType IconTypeToMojom(lens::IconType icon_id) { + switch (icon_id) { + case lens::IconType::ICON_TYPE_ADD: + return contextual_tasks::mojom::IconType::kAdd; + case lens::IconType::ICON_TYPE_CHECK: + return contextual_tasks::mojom::IconType::kCheck; + case lens::IconType::ICON_TYPE_FORMAT_QUOTE_FILLED: + return contextual_tasks::mojom::IconType::kFormatQuoteFilled; + case lens::IconType::ICON_TYPE_IMAGE: + return contextual_tasks::mojom::IconType::kImage; + case lens::IconType::ICON_TYPE_DRIVE_PDF: + return contextual_tasks::mojom::IconType::kDrivePdf; + default: + return contextual_tasks::mojom::IconType::kUnspecified; + } +} + } // namespace namespace contextual_tasks { @@ -406,6 +424,10 @@ count + 1); } +void ContextualTasksPageHandler::ReopenTabs() { + // TODO(crbug.com/489832161): Implement tab restoration logic. +} + void ContextualTasksPageHandler::PostMessageToWebview( const lens::ClientToAimMessage& message) { DCHECK(web_ui_controller_->GetPageRemote()); @@ -510,9 +532,15 @@ contextual_search::ContextualSearchSessionHandle* handle = web_ui_controller_->GetOrCreateContextualSessionHandle(); auto token = handle->CreateContextToken(); - web_ui_controller_->GetPageRemote()->InjectInput( - std::string(modality->title()), std::string(modality->thumbnail_src()), - token); + if (modality->has_icon_id()) { + web_ui_controller_->GetPageRemote()->InjectInputWithIcon( + std::string(modality->title()), IconTypeToMojom(modality->icon_id()), + token, modality->is_unimodal()); + } else { + web_ui_controller_->GetPageRemote()->InjectInput( + std::string(modality->title()), std::string(modality->thumbnail_src()), + token, modality->is_unimodal()); + } // This does not actually upload anything, but allows the injected input to be // shown in the chip carousel in the UI. handle->StartModalityChipUploadFlow(token, std::move(modality)); diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_page_handler.h chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_page_handler.h --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_page_handler.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_page_handler.h 2026-03-17 19:56:22.000000000 +0000 @@ -69,6 +69,7 @@ bool is_side_panel, GetCommonSearchParamsCallback callback) override; void OnboardingTooltipDismissed() override; + void ReopenTabs() override; void PostMessageToWebview(const lens::ClientToAimMessage& message); // contextual_tasks::ContextualTasksService::Observer: diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_page_handler_unittest.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_page_handler_unittest.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_page_handler_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_page_handler_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -13,6 +13,7 @@ #include "base/test/scoped_feature_list.h" #include "base/unguessable_token.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/contextual_tasks/contextual_tasks.mojom.h" #include "chrome/browser/contextual_tasks/contextual_tasks_service_factory.h" #include "chrome/browser/contextual_tasks/contextual_tasks_ui.h" #include "chrome/browser/contextual_tasks/contextual_tasks_ui_service.h" @@ -88,11 +89,20 @@ (override)); MOCK_METHOD(void, LockInput, (), (override)); MOCK_METHOD(void, UnlockInput, (), (override)); + MOCK_METHOD(void, SetShowReopenTabs, (bool show), (override)); MOCK_METHOD(void, InjectInput, (const std::string& title, const std::string& thumbnail, - const base::UnguessableToken& file_token), + const base::UnguessableToken& file_token, + bool supports_unimodal), + (override)); + MOCK_METHOD(void, + InjectInputWithIcon, + (const std::string& title, + contextual_tasks::mojom::IconType icon_id, + const base::UnguessableToken& file_token, + bool supports_unimodal), (override)); MOCK_METHOD(void, RemoveInjectedInput, diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator.cc 2026-03-17 19:56:22.000000000 +0000 @@ -30,6 +30,8 @@ #include "chrome/browser/contextual_tasks/contextual_tasks_utils.h" #include "chrome/browser/contextual_tasks/contextual_tasks_web_view.h" #include "chrome/browser/contextual_tasks/entry_point_eligibility_manager.h" +#include "chrome/browser/devtools/devtools_ui_bindings.h" +#include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/tab_list/tab_list_interface.h" @@ -380,6 +382,16 @@ web_contents->GetController().PruneAllButLastCommitted(); } + // If dev tools were open, close them. This prevents issues where the tab + // backing the WebContents disappears and confuses the dev tools. + // TODO(489511091): Ideally an event is triggered that allows dev tools to + // react by popping the tools out into their own window. + DevToolsUIBindings::Delegate* dev_tools_delegate = + DevToolsWindow::GetInstanceForInspectedWebContents(web_contents.get()); + if (dev_tools_delegate) { + dev_tools_delegate->CloseWindow(); + } + SetBrowserWindowInterface(web_contents.get(), browser_window_); auto it = task_id_to_web_contents_cache_.find(task_id); if (it == task_id_to_web_contents_cache_.end()) { diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator_interactive_uitest.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator_interactive_uitest.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator_interactive_uitest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_side_panel_coordinator_interactive_uitest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -53,6 +53,7 @@ mojo::PendingReceiver pending_searchbox_handler, GetSessionHandleCallback get_session_callback, + ClearSessionHandleCallback clear_session_callback, TakeInputStateModelCallback get_inputstatemodel_callback) : ContextualTasksComposeboxHandler( ui_controller, @@ -62,6 +63,7 @@ std::move(pending_page), std::move(pending_searchbox_handler), std::move(get_session_callback), + std::move(clear_session_callback), std::move(get_inputstatemodel_callback)) {} ~MockContextualTasksComposeboxHandler() override = default; @@ -678,6 +680,7 @@ base::BindRepeating( &ContextualTasksUI::GetOrCreateContextualSessionHandle, base::Unretained(ui)), + base::DoNothing(), base::BindRepeating(&ContextualTasksUI::TakeInputStateModel, base::Unretained(ui))); MockContextualTasksComposeboxHandler* mock_handler = diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui.cc 2026-03-17 19:56:22.000000000 +0000 @@ -158,6 +158,42 @@ source->AddString("friendlyZeroStateTitleAfterName", ""); } +bool ContextualTasksUI::AreUrlsEqual(const GURL& a, + const GURL& b) { + if (a == b) { + return true; + } + + if (a.host() != b.host()) { + return false; + } + + GURL::Replacements replacements; + replacements.ClearQuery(); + if (a.ReplaceComponents(replacements) != b.ReplaceComponents(replacements)) { + return false; + } + + std::vector> a_params; + for (net::QueryIterator it(a); !it.IsAtEnd(); it.Advance()) { + a_params.emplace_back(it.GetKey(), it.GetValue()); + } + + std::vector> b_params; + for (net::QueryIterator it(b); !it.IsAtEnd(); it.Advance()) { + b_params.emplace_back(it.GetKey(), it.GetValue()); + } + + if (a_params.size() != b_params.size()) { + return false; + } + + std::sort(a_params.begin(), a_params.end()); + std::sort(b_params.begin(), b_params.end()); + + return a_params == b_params; +} + void AddZeroStateStrings(content::WebUIDataSource* source, Profile* profile) { if (!profile) { AddDefaultZeroStateStrings(source); @@ -191,9 +227,8 @@ source->AddString("friendlyZeroStateGaiaName", gaia_name); source->AddString("friendlyZeroStateTitleBeforeName", parts[0].substr(0, offsets[0])); - source->AddString( - "friendlyZeroStateTitleAfterName", - parts[0].substr(offsets[0] + gaia_name.length())); + source->AddString("friendlyZeroStateTitleAfterName", + parts[0].substr(offsets[0] + gaia_name.length())); } else { // Fallback to default behavior if name replacement fails. source->AddString("friendlyZeroStateGaiaName", ""); @@ -629,6 +664,8 @@ base::BindRepeating( &ContextualTasksUI::GetOrCreateContextualSessionHandle, base::Unretained(this)), + base::BindRepeating(&ContextualTasksUI::ClearContextualSessionHandle, + base::Unretained(this)), base::BindRepeating(&ContextualTasksUI::TakeInputStateModel, base::Unretained(this))); composebox_handler_->SetPage(std::move(pending_searchbox_page)); @@ -685,6 +722,11 @@ return helper->session_handle(); } +// Empty implementation, does not need to be cleared in contextual tasks. Only +// needs to be cleared when transferring ownership to a new web contents / UI +// controller which never happens for contextual tasks. +void ContextualTasksUI::ClearContextualSessionHandle() {} + std::unique_ptr ContextualTasksUI::TakeInputStateModel() { if (!task_id_.has_value()) { @@ -993,6 +1035,13 @@ // accordingly. const bool is_zero_state = ContextualTasksUI::IsZeroState(url, ui_service_); + // Record the HTTP response code of the inner frame contents if response + // headers are available. + if (auto* response_headers = navigation_handle->GetResponseHeaders()) { + contextual_tasks::RecordInnerFrameContentsHttpResponseCode( + response_headers->response_code(), is_zero_state); + } + // Check if the zero state status has changed since the last navigation. const bool has_zero_state_changed = is_zero_state != @@ -1003,7 +1052,8 @@ } bool is_url_changed = false; - if (url != last_committed_url_) { + if (!ContextualTasksUI::AreUrlsEqual( + url, last_committed_url_)) { last_committed_url_ = url; is_url_changed = true; } diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui.h chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui.h --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui.h 2026-03-17 19:56:22.000000000 +0000 @@ -155,6 +155,9 @@ void PostMessageToWebview(const lens::ClientToAimMessage& message) override; contextual_search::ContextualSearchSessionHandle* GetOrCreateContextualSessionHandle() override; + + void ClearContextualSessionHandle(); + std::unique_ptr TakeInputStateModel() override; mojo::Remote& GetPageRemote() override; @@ -172,6 +175,10 @@ const GURL& url, contextual_tasks::ContextualTasksUiService* ui_service); + // Returns true if two URLs are equal. Unlike GURL::operator==, this method + // ignores the order of query parameters. + static bool AreUrlsEqual(const GURL& a, const GURL& b); + // Returns whether OnActiveTabContextStatusChanged should proceed with trying // to add the current tab as an auto-chip. bool CanUpdateSuggestedTabContext(tabs::TabInterface* tab, diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_browsertest.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_browsertest.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_browsertest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_browsertest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -93,11 +93,20 @@ (override)); MOCK_METHOD(void, LockInput, (), (override)); MOCK_METHOD(void, UnlockInput, (), (override)); + MOCK_METHOD(void, SetShowReopenTabs, (bool show), (override)); MOCK_METHOD(void, InjectInput, (const std::string& title, const std::string& thumbnail, - const base::UnguessableToken& file_token), + const base::UnguessableToken& file_token, + bool supports_unimodal), + (override)); + MOCK_METHOD(void, + InjectInputWithIcon, + (const std::string& title, + contextual_tasks::mojom::IconType icon_id, + const base::UnguessableToken& file_token, + bool supports_unimodal), (override)); MOCK_METHOD(void, RemoveInjectedInput, @@ -141,7 +150,9 @@ class ContextualTasksUIBrowserTest : public InProcessBrowserTest { public: - ContextualTasksUIBrowserTest() = default; + ContextualTasksUIBrowserTest() { + feature_list_.InitAndEnableFeature(contextual_tasks::kContextualTasks); + } ~ContextualTasksUIBrowserTest() override = default; // This override is required to inject the FakeProfileOAuth2TokenService @@ -212,6 +223,7 @@ std::unique_ptr test_web_ui_; std::unique_ptr controller_; base::CallbackListSubscription create_services_subscription_; + base::test::ScopedFeatureList feature_list_; }; IN_PROC_BROWSER_TEST_F(ContextualTasksUIBrowserTest, @@ -280,17 +292,8 @@ run_loop.Run(); } -class ContextualTasksLensBrowserTest : public ContextualTasksUIBrowserTest { - public: - ContextualTasksLensBrowserTest() { - feature_list_.InitAndEnableFeature(contextual_tasks::kContextualTasks); - } - private: - base::test::ScopedFeatureList feature_list_; -}; - -IN_PROC_BROWSER_TEST_F(ContextualTasksLensBrowserTest, HandleLensButtonClick) { +IN_PROC_BROWSER_TEST_F(ContextualTasksUIBrowserTest, HandleLensButtonClick) { // Setup LensController auto override = tabs::TabFeatures::GetUserDataFactoryForTesting().AddOverrideForTesting( @@ -438,6 +441,31 @@ EXPECT_EQ(controller_->GetInnerFrameUrl(), url3); } +IN_PROC_BROWSER_TEST_F(ContextualTasksUIBrowserTest, + RecordsHttpResponseCodeHistograms) { + base::HistogramTester histogram_tester; + + // Create inner contents to trigger the observer. + std::unique_ptr inner_contents = + content::WebContents::Create( + content::WebContents::CreateParams(browser()->profile())); + TriggerOnInnerWebContentsCreated(inner_contents.get()); + + GURL url = embedded_test_server()->GetURL("/title1.html"); + inner_contents->GetController().LoadURL( + url, content::Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); + EXPECT_TRUE(content::WaitForLoadStop(inner_contents.get())); + + // Since the URL is not an AI URL, IsZeroState will return false. + // Both histograms should be recorded. + histogram_tester.ExpectUniqueSample( + "ContextualTasks.InnerFrameContents.HttpResponseCode", 200, 1); + histogram_tester.ExpectUniqueSample( + "ContextualTasks.InnerFrameContents.HttpResponseCode." + "ExcludeZeroStateLoads", + 200, 1); +} + class ContextualTasksNoMockBrowserTest : public InProcessBrowserTest { public: ContextualTasksNoMockBrowserTest() { diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_service.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_service.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_service.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_service.cc 2026-03-17 19:56:22.000000000 +0000 @@ -103,6 +103,8 @@ constexpr char kAiPageHost[] = "https://google.com"; constexpr char kTaskQueryParam[] = "task"; constexpr char kAimUrlQueryParam[] = "aim_url"; +constexpr char kDebugParam[] = "deb"; +constexpr char kDebugNoCobrowseValue[] = "nocobrowse1"; // Parameters that the search results page must contain at least one of to be // considered a valid search results page. @@ -229,27 +231,8 @@ auto* helper = ContextualSearchWebContentsHelper::FromWebContents( source_tab->GetContents()); if (helper && helper->session_handle()) { - source = helper->session_handle()->GetMetricsRecorder()->source(); - - auto* service = - ContextualSearchServiceFactory::GetForProfile(profile_.get()); - if (service) { - // Create a new handle for existing session. The session handle should - // not be moved because there can be cases where a user opens the WebUI - // in a new tab (and would therefore leave the source tab without a - // handle). - session_handle = - service->GetSession(helper->session_handle()->session_id(), - helper->session_handle()->invocation_source()); - if (session_handle) { - session_handle->set_submitted_context_tokens( - helper->session_handle()->GetSubmittedContextTokens()); - // TODO(crbug.com/469877869): Determine what to do with the return - // value of this call, or move this call to a different location. - session_handle->CheckSearchContentSharingSettings( - profile_->GetPrefs()); - } - } + session_handle = helper->TakeSessionHandle(); + source = session_handle->GetMetricsRecorder()->source(); } } base::UmaHistogramEnumeration( @@ -683,7 +666,9 @@ // If the target URL is a contextual tasks "display URL", then replace it with // the proper AIM URL. + bool original_url_is_virtual = false; if (IsContextualTasksDisplayUrl(url_params.url)) { + original_url_is_virtual = true; const GURL aim_url = GetUrlForAim(TemplateURLServiceFactory::GetForProfile(profile_.get()), omnibox::UNKNOWN_AIM_ENTRY_POINT, base::Time::Now(), u"", @@ -704,6 +689,31 @@ bool is_nav_to_ai = IsAiUrl(url_params.url); + // The "deb" param is a debugging tool that allows a client to specify whether + // the browser intercepts an AI navigation, optionally allowing it to be shown + // in a top-level tab. In this case, if "nocobrowse1" is the value of this + // param and if set on a "virtual" URL, will cause a new navigation to the AI + // URL. If specified on a non-virtual AI URL, the navigation is simply allowed + // to proceed. + std::string debug_param_value; + if (is_nav_to_ai && + net::GetValueForKeyInQuery(url_params.url, kDebugParam, + &debug_param_value) && + debug_param_value.contains(kDebugNoCobrowseValue)) { + if (original_url_is_virtual) { + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, + base::BindOnce(&ContextualTasksUiService::LoadUrlInWebContents, + weak_ptr_factory_.GetWeakPtr(), + net::AppendQueryParameter(url_params.url, kDebugParam, + kDebugNoCobrowseValue), + source_contents)); + return true; + } else { + return false; + } + } + // If the user is not signed in to Chrome, do not intercept. if (!IsSignedInToBrowserWithValidCredentials()) { return false; @@ -827,6 +837,14 @@ return false; } +void ContextualTasksUiService::LoadUrlInWebContents( + const GURL& url, + content::WebContents* web_contents) { + content::NavigationController::LoadURLParams params(url); + params.transition_type = ::ui::PAGE_TRANSITION_AUTO_TOPLEVEL; + web_contents->GetController().LoadURLWithParams(params); +} + bool ContextualTasksUiService::IsUrlForPrimaryAccount(const GURL& url) { return contextual_tasks::IsUrlForPrimaryAccount(identity_manager_, url); } diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_service.h chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_service.h --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_service.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_service.h 2026-03-17 19:56:22.000000000 +0000 @@ -254,6 +254,10 @@ // Returns whether the provided URL is for the primary account in Chrome. virtual bool IsUrlForPrimaryAccount(const GURL& url); + // Used primarily for debugging - loads a URL in the specified WebContents. + virtual void LoadUrlInWebContents(const GURL& url, + content::WebContents* web_contents); + private: void StartAccessTokenFetch(); diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_service_unittest.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_service_unittest.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_service_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_service_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -109,6 +109,10 @@ (override)); MOCK_METHOD(bool, IsUrlForPrimaryAccount, (const GURL& url), (override)); MOCK_METHOD(bool, IsSignedInToBrowserWithValidCredentials, (), (override)); + MOCK_METHOD(void, + LoadUrlInWebContents, + (const GURL& url, content::WebContents* web_contents), + (override)); // Make the impl method public for this test. bool HandleNavigationImpl(content::OpenURLParams url_params, @@ -343,8 +347,6 @@ auto web_contents = content::WebContentsTester::CreateTestWebContents( profile_.get(), content::SiteInstance::Create(profile_.get())); - EXPECT_CALL(*aim_eligibility_service_, IsCobrowseEligible()) - .WillOnce(Return(true)); base::RunLoop run_loop; EXPECT_CALL(*service_for_nav_, OnNavigationToAiPageIntercepted(ai_url, _, _)) .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); @@ -354,6 +356,70 @@ /*is_from_embedded_page=*/false, /*is_to_new_tab=*/false)); run_loop.Run(); +} + +TEST_F(ContextualTasksUiServiceTest, HandleNavigation_AiPage_DebugParam) { + GURL ai_url(kAiPageUrl); + ai_url = net::AppendQueryParameter(ai_url, "deb", "nocobrowse1"); + auto web_contents = content::WebContentsTester::CreateTestWebContents( + profile_.get(), content::SiteInstance::Create(profile_.get())); + + EXPECT_CALL(*service_for_nav_, OnNavigationToAiPageIntercepted(_, _, _)) + .Times(0); + + EXPECT_FALSE(service_for_nav_->HandleNavigation( + CreateOpenUrlParams(ai_url, false), web_contents.get(), + /*is_from_embedded_page=*/false, /*is_to_new_tab=*/false)); + + base::RunLoop run_loop; + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, run_loop.QuitClosure()); + run_loop.Run(); +} + +TEST_F(ContextualTasksUiServiceTest, + HandleNavigation_AiPage_DebugParam_Substring) { + GURL ai_url(kAiPageUrl); + // Have the known debug value be a substring of the broader value. + ai_url = net::AppendQueryParameter(ai_url, "deb", "nocobrowse1moredebug1"); + auto web_contents = content::WebContentsTester::CreateTestWebContents( + profile_.get(), content::SiteInstance::Create(profile_.get())); + + EXPECT_CALL(*service_for_nav_, OnNavigationToAiPageIntercepted(_, _, _)) + .Times(0); + + EXPECT_FALSE(service_for_nav_->HandleNavigation( + CreateOpenUrlParams(ai_url, false), web_contents.get(), + /*is_from_embedded_page=*/false, /*is_to_new_tab=*/false)); + + base::RunLoop run_loop; + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, run_loop.QuitClosure()); + run_loop.Run(); +} + +TEST_F(ContextualTasksUiServiceTest, + HandleNavigation_AiPage_DebugParam_VirtualUrl) { + GURL virtual_url("chrome://google.com/search?udm=50&q=test&deb=nocobrowse1"); + auto web_contents = content::WebContentsTester::CreateTestWebContents( + profile_.get(), content::SiteInstance::Create(profile_.get())); + + EXPECT_CALL(*service_for_nav_, OnNavigationToAiPageIntercepted(_, _, _)) + .Times(0); + base::RunLoop run_loop; + ON_CALL(*service_for_nav_, LoadUrlInWebContents(_, _)) + .WillByDefault([&](const GURL& url, content::WebContents* web_contents) { + std::string value; + EXPECT_TRUE(net::GetValueForKeyInQuery(url, "deb", &value)); + EXPECT_EQ("nocobrowse1", value); + run_loop.Quit(); + }); + + EXPECT_TRUE(service_for_nav_->HandleNavigation( + CreateOpenUrlParams(virtual_url, false), web_contents.get(), + /*is_from_embedded_page=*/false, /*is_to_new_tab=*/false)); + + run_loop.Run(); } TEST_F(ContextualTasksUiServiceTest, LinkFromWebUiIntercepted) { diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_unittest.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_unittest.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_ui_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_ui_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -601,6 +601,38 @@ observer.reset(); } +TEST_F(ContextualTasksUiTest, AreUrlsEqual) { + EXPECT_TRUE(ContextualTasksUI::AreUrlsEqual( + GURL("https://google.com/search?q=test&udm=50"), + GURL("https://google.com/search?udm=50&q=test"))); + + EXPECT_TRUE(ContextualTasksUI::AreUrlsEqual( + GURL("https://google.com/search?a=1&b=2&c=3"), + GURL("https://google.com/search?c=3&a=1&b=2"))); + + EXPECT_TRUE(ContextualTasksUI::AreUrlsEqual( + GURL("https://google.com/search"), GURL("https://google.com/search"))); + + // Different query keys/values + EXPECT_FALSE(ContextualTasksUI::AreUrlsEqual( + GURL("https://google.com/search?q=test&udm=50"), + GURL("https://google.com/search?udm=50&q=test2"))); + + EXPECT_FALSE(ContextualTasksUI::AreUrlsEqual( + GURL("https://google.com/search?q=test&udm=50"), + GURL("https://google.com/search?udm=50&q2=test"))); + + // Different paths + EXPECT_FALSE(ContextualTasksUI::AreUrlsEqual( + GURL("https://google.com/search?q=test&udm=50"), + GURL("https://google.com/search2?udm=50&q=test"))); + + // Different query param sizes + EXPECT_FALSE(ContextualTasksUI::AreUrlsEqual( + GURL("https://google.com/search?q=test&udm=50"), + GURL("https://google.com/search?udm=50&q=test&extra=1"))); +} + TEST_F(ContextualTasksUiTest, DidFinishNavigation_ZeroState) { struct TestCase { GURL url; @@ -758,8 +790,6 @@ observer->DidFinishNavigation(handle_query2.get()); } - - TEST_F(ContextualTasksUiTest, OnZeroStateChange_SameDocument_ZeroStateChanged_FeatureEnabled) { base::test::ScopedFeatureList feature_list; diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_utils.cc chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_utils.cc --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_utils.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_utils.cc 2026-03-17 19:56:22.000000000 +0000 @@ -34,6 +34,18 @@ contextual_search::ContextualSearchErrorPage::kPageContextNotEligible); } +void RecordInnerFrameContentsHttpResponseCode(int http_status_code, + bool is_zero_state) { + base::UmaHistogramSparse( + "ContextualTasks.InnerFrameContents.HttpResponseCode", http_status_code); + if (!is_zero_state) { + base::UmaHistogramSparse( + "ContextualTasks.InnerFrameContents.HttpResponseCode." + "ExcludeZeroStateLoads", + http_status_code); + } +} + ContextualTasksUIInterface* GetWebUiInterface( content::WebContents* web_contents) { #if !BUILDFLAG(IS_ANDROID) diff -Nru chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_utils.h chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_utils.h --- chromium-146.0.7680.80/chrome/browser/contextual_tasks/contextual_tasks_utils.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/contextual_tasks/contextual_tasks_utils.h 2026-03-17 19:56:22.000000000 +0000 @@ -35,6 +35,10 @@ // Records the error page shown metric for the given source. void RecordErrorPageShown(contextual_search::ContextualSearchSource source); +// Records the HTTP response code of the inner frame contents. +void RecordInnerFrameContentsHttpResponseCode(int http_status_code, + bool is_zero_state); + } // namespace contextual_tasks #endif // CHROME_BROWSER_CONTEXTUAL_TASKS_CONTEXTUAL_TASKS_UTILS_H_ diff -Nru chromium-146.0.7680.80/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc chromium-146.0.7680.153/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc --- chromium-146.0.7680.80/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc 2026-03-17 19:56:22.000000000 +0000 @@ -320,9 +320,14 @@ // rule multiple times. EvaluationScope evaluation_scope(this, IGNORE_REQUESTS); + // Deduplicate the list of rule identifiers to prevent removing the same + // rule multiple times and invalidating iterators. + std::set deduplicated_rule_identifiers(rule_identifiers.begin(), + rule_identifiers.end()); + std::vector rules_to_erase; std::vector predicate_groups_to_stop_tracking; - for (const std::string& id : rule_identifiers) { + for (const std::string& id : deduplicated_rule_identifiers) { // Skip unknown rules. auto content_rules_entry = content_rules_.find(std::make_pair(extension_id, id)); diff -Nru chromium-146.0.7680.80/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc chromium-146.0.7680.153/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc --- chromium-146.0.7680.80/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -219,4 +219,38 @@ EXPECT_EQ(0u, registry->GetActiveRulesCountForTesting()); } +TEST_F(DeclarativeChromeContentRulesRegistryTest, RemoveDuplicateRules) { + TestPredicateEvaluator* evaluator = nullptr; + scoped_refptr registry( + new ChromeContentRulesRegistry( + env()->profile(), nullptr, + base::BindOnce(&CreateTestEvaluator, &evaluator))); + + auto rule = api::events::Rule::FromValue(base::test::ParseJsonDict(R"({ + "id": "rule1", + "priority": 100, + "conditions": [ + { + "instanceType": "declarativeContent.PageStateMatcher", + "test_predicate": [] + }], + "actions": [ + {"instanceType": "declarativeContent.ShowAction"} + ] + })")); + ASSERT_TRUE(rule.has_value()); + std::vector rules({&rule.value()}); + + const Extension* extension = + env()->MakeExtension(base::test::ParseJsonDict("{\"page_action\": {}}")); + registry->AddRulesImpl(extension->id(), rules); + + // Removing duplicate rule IDs should not cause memory corruption. + // This test validates that passing the same rule ID multiple times + // into RemoveRulesImpl does not result in the same internal rule + // iterator being erased more than once. + std::vector remove_rules_dup = {"rule1", "rule1"}; + registry->RemoveRulesImpl(extension->id(), remove_rules_dup); +} + } // namespace extensions diff -Nru chromium-146.0.7680.80/chrome/browser/extensions/renderer_startup_helper_browsertest.cc chromium-146.0.7680.153/chrome/browser/extensions/renderer_startup_helper_browsertest.cc --- chromium-146.0.7680.80/chrome/browser/extensions/renderer_startup_helper_browsertest.cc 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/extensions/renderer_startup_helper_browsertest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,146 @@ +// Copyright 2026 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "extensions/browser/renderer_startup_helper.h" + +#include "base/test/scoped_feature_list.h" +#include "chrome/browser/chrome_content_browser_client.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "content/public/browser/browser_context.h" +#include "content/public/browser/render_process_host.h" +#include "content/public/browser/site_instance.h" +#include "content/public/browser/web_contents.h" +#include "content/public/browser/web_contents_delegate.h" +#include "content/public/browser/web_ui_controller.h" +#include "content/public/browser/web_ui_controller_factory.h" +#include "content/public/browser/web_ui_data_source.h" +#include "content/public/common/content_client.h" +#include "content/public/common/content_features.h" +#include "content/public/common/url_utils.h" +#include "content/public/test/browser_test.h" +#include "content/public/test/mock_render_process_host.h" +#include "content/public/test/test_navigation_observer.h" +#include "third_party/blink/public/common/features.h" +#include "url/gurl.h" + +namespace extensions { + +namespace { + +// A generic factory that returns a base WebUIController for any WebUI URL. +// This avoids the dependency-heavy WebUIToolbarUI and its associated crashes. +class WebUITestWebUIControllerFactory : public content::WebUIControllerFactory { + public: + std::unique_ptr CreateWebUIControllerForURL( + content::WebUI* web_ui, + const GURL& url) override { + return content::HasWebUIScheme(url) + ? std::make_unique(web_ui) + : nullptr; + } + content::WebUI::TypeID GetWebUIType(content::BrowserContext* browser_context, + const GURL& url) override { + return content::HasWebUIScheme(url) + ? reinterpret_cast(1) + : nullptr; + } + bool UseWebUIForURL(content::BrowserContext* browser_context, + const GURL& url) override { + return content::HasWebUIScheme(url); + } +}; + +// Overrides the BrowserClient to mark our dummy URL as an "Initial WebUI". +class InitialWebUIOverrideChromeContentBrowserClient + : public ChromeContentBrowserClient { + public: + explicit InitialWebUIOverrideChromeContentBrowserClient( + const GURL& initial_webui_url) + : initial_webui_url_(initial_webui_url) {} + + bool IsInitialWebUIURL(const GURL& url) override { + return initial_webui_url_ == url; + } + + private: + GURL initial_webui_url_; +}; + +} // namespace + +class RendererStartupHelperBrowserTest : public InProcessBrowserTest { + public: + RendererStartupHelperBrowserTest() { + content::WebUIControllerFactory::RegisterFactory( + &webui_controller_factory_); + + // Enable the feature and any WebUI dependencies. + feature_list_.InitWithFeatures( + {blink::features::kInitialWebUIWithoutExtensions, + features::kInitialWebUISyncNavStartToCommit}, + {}); + } + + protected: + // Helper to check if a process is initialized for extensions. + bool IsInitialized(content::RenderProcessHost* process) { + return RendererStartupHelperFactory::GetForBrowserContext( + process->GetBrowserContext()) + ->IsProcessInitializedForTesting(process); + } + + content::WebContents* contents() const { + return browser()->tab_strip_model()->GetActiveWebContents(); + } + + private: + WebUITestWebUIControllerFactory webui_controller_factory_; + base::test::ScopedFeatureList feature_list_; +}; + +IN_PROC_BROWSER_TEST_F(RendererStartupHelperBrowserTest, + DeferredInitializationPerNavigation) { + ASSERT_TRUE(embedded_test_server()->Start()); + GURL initial_url("chrome://test-initial/"); + + // Mark our test URL as an "Initial WebUI" URL. + InitialWebUIOverrideChromeContentBrowserClient test_client(initial_url); + content::ContentBrowserClient* old_client = + content::SetBrowserClientForTesting(&test_client); + + // Create a new WebContents manually to ensure it is the "first navigation." + content::WebContents::CreateParams params(contents()->GetBrowserContext()); + params.site_instance = content::SiteInstance::CreateForURL( + contents()->GetBrowserContext(), initial_url); + std::unique_ptr new_web_contents = + content::WebContents::Create(params); + + // Force process initialization. This should trigger OnRenderProcessCreated. + // Because we marked it as Initial WebUI, initialization should be skipped. + EXPECT_TRUE(new_web_contents->GetPrimaryMainFrame()->GetProcess()->Init()); + + content::RenderProcessHost* process = + new_web_contents->GetPrimaryMainFrame()->GetProcess(); + + // Verify the process should NOT be initialized for extensions. + EXPECT_FALSE(IsInitialized(process)); + + content::SetBrowserClientForTesting(old_client); + + // Navigate to a regular site in the same WebContents. + GURL normal_url = embedded_test_server()->GetURL("/simple.html"); + content::TestNavigationObserver observer2(new_web_contents.get()); + new_web_contents->GetController().LoadURL(normal_url, content::Referrer(), + ui::PAGE_TRANSITION_TYPED, + std::string()); + observer2.Wait(); + + // Verify the process should now be initialized. + EXPECT_TRUE( + IsInitialized(new_web_contents->GetPrimaryMainFrame()->GetProcess())); +} + +} // namespace extensions diff -Nru chromium-146.0.7680.80/chrome/browser/flag-metadata.json chromium-146.0.7680.153/chrome/browser/flag-metadata.json --- chromium-146.0.7680.80/chrome/browser/flag-metadata.json 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/flag-metadata.json 2026-03-17 19:56:22.000000000 +0000 @@ -5519,6 +5519,12 @@ "expiry_milestone": 150 }, { + "name": "hide-fusebox-voice-lens-actions", + "owners": [ + "stkhapugin@chromium.org", "bling-flags@google.com"], + "expiry_milestone": 150 + }, + { "name": "hide-toolbars-in-overflow-menu", "owners": [ "alionadangla@chromium.org", "bling-flags@google.com"], @@ -6123,6 +6129,11 @@ "expiry_milestone": 145 }, { + "name": "lens-enable-raw-file-media-types", + "owners": ["hujasonx@google.com"], + "expiry_milestone": 150 + }, + { "name": "lens-exact-matches-enabled", "owners": ["cmyang@google.com", "brandonli@google.com", "lens-chrome@google.com"], "expiry_milestone": 145 diff -Nru chromium-146.0.7680.80/chrome/browser/flag_descriptions.h chromium-146.0.7680.153/chrome/browser/flag_descriptions.h --- chromium-146.0.7680.80/chrome/browser/flag_descriptions.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/flag_descriptions.h 2026-03-17 19:56:22.000000000 +0000 @@ -2619,6 +2619,11 @@ "Enables page annotation logic to source related searches data from " "prefetched ZPS responses"; +inline constexpr char kLensEnableSendRawFileMediaTypesName[] = + "Lens enable send raw file media types"; +inline constexpr char kLensEnableSendRawFileMediaTypesDescription[] = + "Enables sending raw file media types in the Lens overlay."; + inline constexpr char kLensOverlayName[] = "Lens overlay"; inline constexpr char kLensOverlayDescription[] = "Enables Lens search via an overlay on any page."; diff -Nru chromium-146.0.7680.80/chrome/browser/glic/BUILD.gn chromium-146.0.7680.153/chrome/browser/glic/BUILD.gn --- chromium-146.0.7680.80/chrome/browser/glic/BUILD.gn 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/BUILD.gn 2026-03-17 19:56:22.000000000 +0000 @@ -356,6 +356,9 @@ "//components/sessions", "//components/skills:features", "//components/skills/public", + "//components/skills/public:mojo_bindings", + "//components/startup_metric_utils", + "//components/url_formatter", "//components/variations/service", "//components/webui/chrome_urls", "//third_party/metrics_proto", @@ -460,12 +463,14 @@ sources += [ "common/glic_panel_hotkey_delegate_unittest.cc", "common/local_hotkey_manager_unittest.cc", + "glic_metrics_provider_unittest.cc", "glic_metrics_unittest.cc", "host/context/glic_pin_candidate_comparator_unittest.cc", "host/context/glic_screenshot_capturer_unittest.cc", "host/context/glic_tab_data_unittest.cc", "host/glic_cookie_synchronizer_unittest.cc", "host/guest_util_unittest.cc", + "public/glic_enabling_metrics_unittest.cc", "public/glic_enabling_unittest.cc", "service/glic_instance_helper_unittest.cc", "service/metrics/glic_instance_coordinator_metrics_unittest.cc", @@ -620,9 +625,7 @@ deps += [ "//ui/ozone" ] } - if (!is_android) { - data_deps = [ "//chrome/test/data/webui/glic:generate_test_files" ] - } + data_deps = [ "//chrome/test/data/webui/glic:generate_test_files" ] # TODO(crbug.com/432285114): Fix code that adds exit-time destructors and # enable the diagnostic by removing this line. diff -Nru chromium-146.0.7680.80/chrome/browser/glic/browser_ui/glic_button_controller.cc chromium-146.0.7680.153/chrome/browser/glic/browser_ui/glic_button_controller.cc --- chromium-146.0.7680.80/chrome/browser/glic/browser_ui/glic_button_controller.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/browser_ui/glic_button_controller.cc 2026-03-17 19:56:22.000000000 +0000 @@ -57,6 +57,14 @@ GlicButtonController::~GlicButtonController() = default; void GlicButtonController::UpdateButton() { + // Attempt to record startup metrics when the button controller is first + // created, no-op if startup metrics have already been measured. + // Note that this will not record metrics for profiles that are not eligible + // for Glic (i.e. GlicEnabling::IsProfileEligible() is false), as they will + // never have a GlicButtonController created. Recording metrics for those + // cases is handled by GlicProfileManager instead. + glic_keyed_service_->enabling().MaybeRecordStartupMetrics(); + const bool is_enabled_for_profile = GlicEnabling::IsEnabledForProfile(profile_); const bool is_pinned_to_tabstrip = diff -Nru chromium-146.0.7680.80/chrome/browser/glic/browser_ui/glic_button_controller_unittest.cc chromium-146.0.7680.153/chrome/browser/glic/browser_ui/glic_button_controller_unittest.cc --- chromium-146.0.7680.80/chrome/browser/glic/browser_ui/glic_button_controller_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/browser_ui/glic_button_controller_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -6,6 +6,7 @@ #include +#include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "build/build_config.h" #include "chrome/browser/actor/actor_keyed_service_fake.h" @@ -178,6 +179,8 @@ mock_browser_window_interface_ = std::make_unique(); + histograms_ = std::make_unique(); + glic_button_controller_ = std::make_unique( profile_, *mock_browser_window_interface_, &mock_tab_strip_glic_controller_delegate_, @@ -218,6 +221,8 @@ return &mock_toolbar_glic_controller_delegate_; } + base::HistogramTester& histograms() { return *histograms_; } + Profile* profile() { return profile_; } MockGlicKeyedService* glic_keyed_service() { return mock_glic_service_.get(); @@ -243,6 +248,7 @@ GlicProfileManager glic_profile_manager_; MockGlicButtonControllerDelegate mock_tab_strip_glic_controller_delegate_; MockGlicButtonControllerDelegate mock_toolbar_glic_controller_delegate_; + std::unique_ptr histograms_; std::unique_ptr actor_keyed_service_; std::unique_ptr mock_glic_service_; std::unique_ptr glic_button_controller_; @@ -314,4 +320,18 @@ EXPECT_FALSE(toolbar_controller_delegate()->panel_open()); } +TEST_F(GlicButtonControllerTest, RecordStartupMetrics) { + // Initial state: IsEnabled() is false because of lack sign in. + histograms().ExpectUniqueSample("Glic.ProfileEnablement.IsEnabled.Startup", + false, 1); + + // Updating the 'PinnedToTabstrip' pref triggers a second call to + // MaybeRecordStartupMetrics. + profile()->GetPrefs()->SetBoolean(glic::prefs::kGlicPinnedToTabstrip, true); + + // Startup metrics should not have been logged again. + histograms().ExpectUniqueSample("Glic.ProfileEnablement.IsEnabled.Startup", + false, 1); +} + } // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_enums.h chromium-146.0.7680.153/chrome/browser/glic/glic_enums.h --- chromium-146.0.7680.80/chrome/browser/glic/glic_enums.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_enums.h 2026-03-17 19:56:22.000000000 +0000 @@ -27,6 +27,18 @@ }; // LINT.ThenChange(//tools/metrics/histograms/metadata/glic/enums.xml:GlicGetContextFromTabError) +// LINT.IfChange(GeminiNavigationCaptureResult) +enum class GeminiNavigationCaptureResult { + kSuccess = 0, + kInvalidUrl = 1, + kNonHttpsScheme = 2, + kCIDTooLong = 3, + kTargetUrlTooLong = 4, + kNoTargetUrl = 5, + kMaxValue = kNoTargetUrl, +}; +// LINT.ThenChange(//tools/metrics/histograms/metadata/glic/enums.xml:GeminiNavigationCaptureResult) + } // namespace glic #endif // CHROME_BROWSER_GLIC_GLIC_ENUMS_H_ diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_metrics.cc chromium-146.0.7680.153/chrome/browser/glic/glic_metrics.cc --- chromium-146.0.7680.80/chrome/browser/glic/glic_metrics.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_metrics.cc 2026-03-17 19:56:22.000000000 +0000 @@ -27,6 +27,7 @@ #include "chrome/common/actor/task_id.h" #include "chrome/common/chrome_features.h" #include "components/prefs/pref_service.h" +#include "components/startup_metric_utils/browser/startup_metric_utils.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" #include "services/metrics/public/cpp/ukm_builders.h" @@ -319,6 +320,10 @@ &GlicMetrics::OnMaybeEnabledAndConsentForProfileChanged, base::Unretained(this)))); + if (enabling_->IsAllowed()) { + RecordStartupEnablement(); + } + is_enabled_ = enabling_->IsEnabledAndConsentForProfile(profile_); is_pinned_ = profile_->GetPrefs()->GetBoolean(prefs::kGlicPinnedToTabstrip); pref_registrar_.Init(profile_->GetPrefs()); @@ -857,9 +862,9 @@ delegate_ = std::move(delegate); } -void GlicMetrics::DidRequestContextFromTab(content::WebContents& web_contents) { +void GlicMetrics::DidRequestContextFromTab(tabs::TabInterface& tab) { last_tab_context_source_id_ = - web_contents.GetPrimaryMainFrame()->GetPageUkmSourceId(); + tab.GetContents()->GetPrimaryMainFrame()->GetPageUkmSourceId(); } void GlicMetrics::SetWebClientMode(mojom::WebClientMode mode) { @@ -934,6 +939,10 @@ } void GlicMetrics::OnMaybeEnabledAndConsentForProfileChanged() { + if (!recorded_startup_enablement_ && enabling_->IsAllowed()) { + RecordStartupEnablement(); + } + bool is_enabled = enabling_->IsEnabledAndConsentForProfile(profile_); if (is_enabled == is_enabled_) { // No change, early exit. @@ -978,6 +987,19 @@ } } +void GlicMetrics::RecordStartupEnablement() { + base::TimeTicks startup_time = + startup_metric_utils::GetBrowser().GetApplicationStartTicksForStartup(); + if (startup_time.is_null()) { + return; + } + + base::TimeDelta delta = base::TimeTicks::Now() - startup_time; + base::UmaHistogramLongTimes("Glic.ProfileEnablement.TimeToEnabledFromStartup", + delta); + recorded_startup_enablement_ = true; +} + DisplayPosition GlicMetrics::GetDisplayPositionOfPoint( std::optional display, const gfx::Point& glic_center_point) { diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_metrics.h chromium-146.0.7680.153/chrome/browser/glic/glic_metrics.h --- chromium-146.0.7680.80/chrome/browser/glic/glic_metrics.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_metrics.h 2026-03-17 19:56:22.000000000 +0000 @@ -300,21 +300,23 @@ ~GlicMetrics() override; // `GlicInstanceMetricsBackwardsCompatibility`: + void OnUserInputSubmitted(mojom::WebClientMode mode) override; + void OnReaction(mojom::MetricUserInputReactionType reaction_type) override; + void OnResponseStarted() override; + void OnResponseStopped(mojom::ResponseStopCause cause) override; + void OnTurnCompleted(mojom::WebClientModel model, + base::TimeDelta duration) override; + void DidRequestContextFromTab(tabs::TabInterface& tab) override; void OnGlicScrollAttempt() override; void OnGlicScrollComplete(bool success) override; // See glic.mojom for details. These are events from the web client. The // lifetime of the web client is scoped to that of the window, so if these // methods are called then controller_ is guaranteed to exist. - void OnUserInputSubmitted(mojom::WebClientMode mode); void OnContextUploadStarted(); void OnContextUploadCompleted(); - void OnReaction(mojom::MetricUserInputReactionType reaction_type); - void OnResponseStarted(); - void OnResponseStopped(mojom::ResponseStopCause cause); void OnSessionTerminated(); void OnResponseRated(bool positive); - void OnTurnCompleted(mojom::WebClientModel model, base::TimeDelta duration); void OnRecordUseCounter(uint16_t counter); void OnAttachedToBrowser(AttachChangeReason reason); @@ -391,9 +393,6 @@ void SetDelegateForTesting(std::unique_ptr delegate); - // Must be called when context is requested from a tab. - void DidRequestContextFromTab(content::WebContents& web_contents); - // Sets the input mode of the web client. Should be called when the panel is // opened and in every subsequent mode change. void SetWebClientMode(mojom::WebClientMode mode); @@ -417,6 +416,9 @@ // Called when kGlicTabContextEnabled changes. void OnTabContextEnabledPrefChanged(); + // Records the time from startup until Glic was enabled for the profile. + void RecordStartupEnablement(); + // Returns the area in the display a given center point is. DisplayPosition GetDisplayPositionOfPoint( std::optional display, @@ -487,6 +489,10 @@ // metric(s) on change. bool is_enabled_ = false; + // Whether we have already recorded the metric that tracks how long it took + // for Glic to be enabled since startup. + bool recorded_startup_enablement_ = false; + std::vector subscriptions_; // Cache the last value of the kGlicPinnedToTabstrip pref so that we only emit diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_metrics_browsertest.cc chromium-146.0.7680.153/chrome/browser/glic/glic_metrics_browsertest.cc --- chromium-146.0.7680.80/chrome/browser/glic/glic_metrics_browsertest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_metrics_browsertest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -10,6 +10,7 @@ #include "chrome/browser/glic/public/glic_keyed_service_factory.h" #include "chrome/browser/glic/test_support/glic_test_environment.h" #include "chrome/browser/glic/test_support/glic_test_util.h" +#include "chrome/browser/glic/widget/glic_window_controller.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/chrome_features.h" @@ -106,5 +107,62 @@ 1); } +IN_PROC_BROWSER_TEST_F(GlicMetricsMultiInstanceBrowserTest, + ToggleAndOpenSourceMetrics_SidePanel) { + ASSERT_TRUE(GlicEnabling::IsMultiInstanceEnabled()); + + base::HistogramTester histogram_tester; + + // Open the side panel + GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile()) + ->ToggleUI(browser(), /*prevent_close=*/false, + mojom::InvocationSource::kOsButton); + + histogram_tester.ExpectUniqueSample("Glic.Instance.SidePanel.ToggleSource", + mojom::InvocationSource::kOsButton, 1); + histogram_tester.ExpectUniqueSample("Glic.Instance.SidePanel.OpenSource", + mojom::InvocationSource::kOsButton, 1); + + // Close the side panel + GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile()) + ->ToggleUI(browser(), /*prevent_close=*/false, + mojom::InvocationSource::kOsButton); + + histogram_tester.ExpectUniqueSample("Glic.Instance.SidePanel.ToggleSource", + mojom::InvocationSource::kOsButton, 2); + histogram_tester.ExpectUniqueSample("Glic.Instance.SidePanel.OpenSource", + mojom::InvocationSource::kOsButton, 1); +} + +IN_PROC_BROWSER_TEST_F(GlicMetricsMultiInstanceBrowserTest, + ToggleAndOpenSourceMetrics_Floaty) { + ASSERT_TRUE(GlicEnabling::IsMultiInstanceEnabled()); + + base::HistogramTester histogram_tester; + + auto* glic_service = + GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile()); + + // First toggle the UI to create the floaty instance. + glic_service->window_controller().Toggle( + /*browser=*/nullptr, /*prevent_close=*/false, + mojom::InvocationSource::kOsHotkey, std::nullopt, false, std::nullopt); + + histogram_tester.ExpectUniqueSample("Glic.Instance.Floaty.ToggleSource", + mojom::InvocationSource::kOsHotkey, 1); + histogram_tester.ExpectUniqueSample("Glic.Instance.Floaty.OpenSource", + mojom::InvocationSource::kOsHotkey, 1); + + // Close the floaty panel. + glic_service->window_controller().Toggle( + /*browser=*/nullptr, /*prevent_close=*/false, + mojom::InvocationSource::kOsHotkey, std::nullopt, false, std::nullopt); + + histogram_tester.ExpectUniqueSample("Glic.Instance.Floaty.ToggleSource", + mojom::InvocationSource::kOsHotkey, 2); + histogram_tester.ExpectUniqueSample("Glic.Instance.Floaty.OpenSource", + mojom::InvocationSource::kOsHotkey, 1); +} + } // namespace } // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_metrics_provider.cc chromium-146.0.7680.153/chrome/browser/glic/glic_metrics_provider.cc --- chromium-146.0.7680.80/chrome/browser/glic/glic_metrics_provider.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_metrics_provider.cc 2026-03-17 19:56:22.000000000 +0000 @@ -30,6 +30,7 @@ int num_enabled_profiles_enabled_for_tiered_rollout = 0; int num_enabled_profiles = 0; for (auto* profile : profile_list) { + GlicEnabling::EnablementForProfile(profile).RecordSteadyStateMetrics(); if (GlicEnabling::IsEnabledForProfile(profile)) { num_enabled_profiles++; if (GlicEnabling::IsEligibleForGlicTieredRollout(profile)) { diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_metrics_provider_unittest.cc chromium-146.0.7680.153/chrome/browser/glic/glic_metrics_provider_unittest.cc --- chromium-146.0.7680.80/chrome/browser/glic/glic_metrics_provider_unittest.cc 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_metrics_provider_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,53 @@ +// Copyright 2026 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/glic/glic_metrics_provider.h" + +#include + +#include "base/test/metrics/histogram_tester.h" +#include "chrome/browser/glic/public/glic_enabling.h" +#include "chrome/test/base/testing_browser_process.h" +#include "chrome/test/base/testing_profile.h" +#include "chrome/test/base/testing_profile_manager.h" +#include "content/public/test/browser_task_environment.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace glic { + +class GlicMetricsProviderTest : public testing::Test { + public: + void SetUp() override { + testing_profile_manager_ = std::make_unique( + TestingBrowserProcess::GetGlobal()); + ASSERT_TRUE(testing_profile_manager_->SetUp()); + } + + void TearDown() override { testing_profile_manager_.reset(); } + + protected: + TestingProfileManager* profile_manager() { + return testing_profile_manager_.get(); + } + + private: + content::BrowserTaskEnvironment task_environment_; + std::unique_ptr testing_profile_manager_; +}; + +TEST_F(GlicMetricsProviderTest, ProvideCurrentSessionData) { + profile_manager()->CreateTestingProfile("profile1"); + profile_manager()->CreateTestingProfile("profile2"); + + GlicMetricsProvider provider; + base::HistogramTester histograms; + + provider.ProvideCurrentSessionData(nullptr); + + // Should have recorded metrics for both profiles. + histograms.ExpectTotalCount("Glic.ProfileEnablement.IsEnabled.SteadyState", + 2); +} + +} // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_metrics_unittest.cc chromium-146.0.7680.153/chrome/browser/glic/glic_metrics_unittest.cc --- chromium-146.0.7680.80/chrome/browser/glic/glic_metrics_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_metrics_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -32,6 +32,8 @@ #include "components/prefs/testing_pref_service.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/signin/public/identity_manager/identity_test_environment.h" +#include "components/startup_metric_utils/browser/startup_metric_utils.h" +#include "components/tabs/public/mock_tab_interface.h" #include "components/ukm/test_ukm_recorder.h" #include "content/public/test/browser_task_environment.h" #include "content/public/test/test_renderer_host.h" @@ -55,6 +57,7 @@ using ::testing::_; using ::testing::IsEmpty; using ::testing::Pair; +using ::testing::Return; using ::testing::UnorderedElementsAre; class MockDelegate : public GlicMetrics::Delegate { @@ -136,6 +139,7 @@ : task_environment_(base::test::TaskEnvironment::TimeSource::MOCK_TIME) {} void SetUp() override { + startup_metric_utils::GetBrowser().ResetSessionForTesting(); TestingBrowserProcess::GetGlobal()->SetStatusTray( std::make_unique()); raw_ptr testing_profile_manager = @@ -144,10 +148,11 @@ #if BUILDFLAG(IS_CHROMEOS) glic_user_session_test_helper_.PreProfileSetUp( testing_profile_manager->profile_manager()); + startup_metric_utils::GetBrowser().RecordWebContentsStartTime( + base::TimeTicks::Now()); #endif // BUILDFLAG(IS_CHROMEOS) profile_ = testing_profile_manager->CreateTestingProfile("profile"); - ForceSigninAndGlicCapability(profile_); } void TearDown() override { @@ -328,7 +333,10 @@ InitializeTestWebContents(); delegate()->SetFocusedWebContents(test_web_contents()); - metrics()->DidRequestContextFromTab(*test_web_contents()); + tabs::MockTabInterface mock_tab; + EXPECT_CALL(mock_tab, GetContents()) + .WillRepeatedly(Return(test_web_contents())); + metrics()->DidRequestContextFromTab(mock_tab); metrics()->OnUserInputSubmitted(mojom::WebClientMode::kText); metrics()->OnResponseStarted(); @@ -350,7 +358,10 @@ InitializeTestWebContents(); delegate()->AddToPinnedSharedTabs(test_web_contents()); - metrics()->DidRequestContextFromTab(*test_web_contents()); + tabs::MockTabInterface mock_tab; + EXPECT_CALL(mock_tab, GetContents()) + .WillRepeatedly(Return(test_web_contents())); + metrics()->DidRequestContextFromTab(mock_tab); metrics()->OnUserInputSubmitted(mojom::WebClientMode::kAudio); metrics()->OnResponseStarted(); @@ -411,7 +422,10 @@ metrics()->OnGlicWindowStartedOpening(/*attached=*/false, mojom::InvocationSource::kFre); - metrics()->DidRequestContextFromTab(*test_web_contents()); + tabs::MockTabInterface mock_tab; + EXPECT_CALL(mock_tab, GetContents()) + .WillRepeatedly(Return(test_web_contents())); + metrics()->DidRequestContextFromTab(mock_tab); metrics()->OnUserInputSubmitted(mojom::WebClientMode::kText); metrics()->OnResponseStarted(); metrics()->OnResponseStopped(mojom::ResponseStopCause::kUnknown); @@ -651,10 +665,51 @@ // subscribers are notified. The following tests turn the feature flags on // before setup happens, so that glic is enabled from the start. class GlicMetricsFeaturesEnabledTest : public GlicMetricsTestBase { + public: + void SetUp() override { + GlicMetricsTestBase::SetUp(); + glic_test_env_.SetupProfile(profile()); + } + + GlicMetrics* metrics() { + return static_cast( + &GlicKeyedService::Get(profile()) + ->instance_metrics_backwards_compatibility()); + } + private: GlicUnitTestEnvironment glic_test_env_; }; +TEST_F(GlicMetricsFeaturesEnabledTest, TimeToEnabledFromStartupRecorded) { + // Glic is enabled by default in SetUp(). + histogram_tester().ExpectTotalCount( + "Glic.ProfileEnablement.TimeToEnabledFromStartup", 1); +} + +TEST_F(GlicMetricsFeaturesEnabledTest, TimeToEnabledFromStartupDelayed) { + // Disable glic capability. + SetGlicCapability(profile(), false); + + // Create new GlicMetrics that starts with glic disabled. + // We use a manual instance here to avoid interference with the one in + // GlicKeyedService which might already have recorded something. + auto enabling = std::make_unique( + profile(), &profile_manager()->GetProfileAttributesStorage()); + base::HistogramTester delayed_histogram_tester; + auto manual_metrics = + std::make_unique(profile(), enabling.get()); + + delayed_histogram_tester.ExpectTotalCount( + "Glic.ProfileEnablement.TimeToEnabledFromStartup", 0); + + // Enable glic capability. + SetGlicCapability(profile(), true); + + delayed_histogram_tester.ExpectTotalCount( + "Glic.ProfileEnablement.TimeToEnabledFromStartup", 1); +} + TEST_F(GlicMetricsFeaturesEnabledTest, ImpressionBeforeFre) { profile()->GetPrefs()->SetInteger( prefs::kGlicCompletedFre, diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_navigation_throttle.cc chromium-146.0.7680.153/chrome/browser/glic/glic_navigation_throttle.cc --- chromium-146.0.7680.80/chrome/browser/glic/glic_navigation_throttle.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_navigation_throttle.cc 2026-03-17 19:56:22.000000000 +0000 @@ -6,6 +6,8 @@ #include "base/functional/bind.h" #include "base/json/json_reader.h" +#include "base/metrics/histogram_functions.h" +#include "base/metrics/user_metrics.h" #include "base/strings/escape.h" #include "base/task/single_thread_task_runner.h" #include "build/buildflag.h" @@ -143,6 +145,10 @@ std::optional cid; std::optional target_url_str; + Profile* profile = + Profile::FromBrowserContext(web_contents->GetBrowserContext()); + bool is_glic_enabled = GlicEnabling::IsEnabledForProfile(profile); + size_t max_cid_length = features::kGlicWebContinuityMaxCIDLength.Get(); size_t max_target_url_length = features::kGlicWebContinuityMaxTargetUrlLength.Get(); @@ -151,61 +157,79 @@ if (it.GetKey() == "cid") { std::string unescaped_cid = it.GetUnescapedValue(); if (unescaped_cid.length() > max_cid_length) { + LogCaptureResult(is_glic_enabled, + GeminiNavigationCaptureResult::kCIDTooLong); return PROCEED; } cid = unescaped_cid; } else if (it.GetKey() == "targetUrl") { target_url_str = it.GetUnescapedValue(); if (target_url_str->length() > max_target_url_length) { + LogCaptureResult(is_glic_enabled, + GeminiNavigationCaptureResult::kTargetUrlTooLong); return PROCEED; } } } - Profile* profile = - Profile::FromBrowserContext(web_contents->GetBrowserContext()); + if (!target_url_str) { + LogCaptureResult(is_glic_enabled, + GeminiNavigationCaptureResult::kNoTargetUrl); + return PROCEED; + } + GURL target_url(*target_url_str); + if (!target_url.is_valid()) { + LogCaptureResult(is_glic_enabled, + GeminiNavigationCaptureResult::kInvalidUrl); + return PROCEED; + } + if (!target_url.SchemeIs(url::kHttpsScheme)) { + LogCaptureResult(is_glic_enabled, + GeminiNavigationCaptureResult::kNonHttpsScheme); + return PROCEED; + } - if (target_url_str) { - GURL target_url(*target_url_str); - // TODO (b/484408637): Add support for non-HTTPS schemes. - CHECK(target_url.is_valid() && target_url.SchemeIs(url::kHttpsScheme)); - if (target_url.is_valid() && target_url.SchemeIs(url::kHttpsScheme)) { - if (GlicEnabling::IsEnabledForProfile( - Profile::FromBrowserContext(web_contents->GetBrowserContext())) && - base::FeatureList::IsEnabled(features::kGlicWebContinuity)) { - GlicKeyedService* glic_service = GlicKeyedService::Get(profile); - if (glic_service) { - tabs::TabInterface* tab = - tabs::TabInterface::MaybeGetFromContents(web_contents); - if (tab && tab->GetBrowserWindowInterface()) { + GlicKeyedService* glic_service = GlicKeyedService::Get(profile); + if (is_glic_enabled && glic_service && + base::FeatureList::IsEnabled(features::kGlicWebContinuity)) { + tabs::TabInterface* tab = + tabs::TabInterface::MaybeGetFromContents(web_contents); + if (tab && tab->GetBrowserWindowInterface()) { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" - glic_service->ShowUiWithConversationID( - tab->GetBrowserWindowInterface(), - glic::mojom::InvocationSource::kNavigationCapture, *cid); + glic_service->ShowUiWithConversationID( + tab->GetBrowserWindowInterface(), + glic::mojom::InvocationSource::kNavigationCapture, cid ? *cid : ""); #pragma clang diagnostic pop - } - } - } - - // Navigate to the target URL. - NavigateParams params(profile, target_url, - ui::PAGE_TRANSITION_AUTO_TOPLEVEL); - params.disposition = WindowOpenDisposition::CURRENT_TAB; - params.source_contents = web_contents; - base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( - FROM_HERE, - base::BindOnce([](NavigateParams params) { Navigate(¶ms); }, - std::move(params))); - return CANCEL; } } - return PROCEED; + // Navigate to the target URL. + NavigateParams params(profile, target_url, ui::PAGE_TRANSITION_AUTO_TOPLEVEL); + params.disposition = WindowOpenDisposition::CURRENT_TAB; + params.source_contents = web_contents; + base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, + base::BindOnce([](NavigateParams params) { Navigate(¶ms); }, + std::move(params))); + LogCaptureResult(is_glic_enabled, GeminiNavigationCaptureResult::kSuccess); + return CANCEL; } const char* GlicNavigationThrottle::GetNameForLogging() { return "GlicNavigationThrottle"; } +void GlicNavigationThrottle::LogCaptureResult( + bool is_glic_enabled, + glic::GeminiNavigationCaptureResult result) { + bool is_web_continuity_enabled = + base::FeatureList::IsEnabled(features::kGlicWebContinuity); + std::string_view status_string = is_glic_enabled && is_web_continuity_enabled + ? "GlicWebContinuityFeatureEnabled" + : "GlicWebContinuityFeatureDisabled"; + base::UmaHistogramEnumeration( + base::StrCat({"Glic.NavigationCapture.", status_string}), result); +} + } // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_navigation_throttle.h chromium-146.0.7680.153/chrome/browser/glic/glic_navigation_throttle.h --- chromium-146.0.7680.80/chrome/browser/glic/glic_navigation_throttle.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_navigation_throttle.h 2026-03-17 19:56:22.000000000 +0000 @@ -5,6 +5,8 @@ #ifndef CHROME_BROWSER_GLIC_GLIC_NAVIGATION_THROTTLE_H_ #define CHROME_BROWSER_GLIC_GLIC_NAVIGATION_THROTTLE_H_ +#include "chrome/browser/glic/glic_enums.h" +#include "chrome/browser/glic/public/glic_keyed_service.h" #include "content/public/browser/navigation_throttle.h" namespace content { @@ -28,6 +30,10 @@ // content::NavigationThrottle implementation: ThrottleCheckResult WillStartRequest() override; const char* GetNameForLogging() override; + + private: + void LogCaptureResult(bool is_glic_enabled, + glic::GeminiNavigationCaptureResult result); }; } // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_navigation_throttle_browsertest.cc chromium-146.0.7680.153/chrome/browser/glic/glic_navigation_throttle_browsertest.cc --- chromium-146.0.7680.80/chrome/browser/glic/glic_navigation_throttle_browsertest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_navigation_throttle_browsertest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -5,10 +5,12 @@ #include "chrome/browser/glic/glic_navigation_throttle.h" #include "base/memory/raw_ptr.h" +#include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "chrome/browser/actor/actor_keyed_service_factory.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/contextual_cueing/contextual_cueing_service_factory.h" +#include "chrome/browser/glic/glic_enums.h" #include "chrome/browser/glic/glic_profile_manager.h" #include "chrome/browser/glic/public/glic_keyed_service.h" #include "chrome/browser/glic/public/glic_keyed_service_factory.h" @@ -54,6 +56,20 @@ return std::make_unique(context); } +void NavigateToURL(Browser* browser, const GURL& url) { + content::TestNavigationObserver observer( + browser->tab_strip_model()->GetActiveWebContents()); + content::NavigationController::LoadURLParams params(url); + params.initiator_origin = url::Origin::Create( + GURL(features::kGlicWebContinuityOriginatingHost.Get())); + params.transition_type = ui::PAGE_TRANSITION_LINK; + browser->tab_strip_model() + ->GetActiveWebContents() + ->GetController() + .LoadURLWithParams(params); + observer.Wait(); +} + class GlicNavigationThrottleBrowserTest : public InProcessBrowserTest { public: GlicNavigationThrottleBrowserTest() { @@ -93,6 +109,7 @@ IN_PROC_BROWSER_TEST_F(GlicNavigationThrottleBrowserTest, InterceptGlicContinueUrlFromGeminiAndOpenGlicUi) { + base::HistogramTester histogram_tester; MockGlicKeyedService* mock_service = static_cast( GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile(), /*create=*/true)); @@ -107,21 +124,137 @@ GURL continue_url(features::kGlicWebContinuityUrl.Get() + "?cid=123&targetUrl=" + target_url.spec()); - content::TestNavigationObserver observer( - browser()->tab_strip_model()->GetActiveWebContents()); - content::NavigationController::LoadURLParams params(continue_url); - params.initiator_origin = url::Origin::Create( - GURL(features::kGlicWebContinuityOriginatingHost.Get())); - params.transition_type = ui::PAGE_TRANSITION_LINK; - browser() - ->tab_strip_model() - ->GetActiveWebContents() - ->GetController() - .LoadURLWithParams(params); - observer.Wait(); + NavigateToURL(browser(), continue_url); EXPECT_EQ(browser()->tab_strip_model()->GetActiveWebContents()->GetURL(), target_url); + + histogram_tester.ExpectUniqueSample( + "Glic.NavigationCapture.GlicWebContinuityFeatureEnabled", + GeminiNavigationCaptureResult::kSuccess, 1); +} + +IN_PROC_BROWSER_TEST_F(GlicNavigationThrottleBrowserTest, Metrics_CIDTooLong) { + base::HistogramTester histogram_tester; + MockGlicKeyedService* mock_service = static_cast( + GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile(), + /*create=*/true)); + ASSERT_TRUE(mock_service); + + EXPECT_CALL(*mock_service, ShowUiWithConversationID(_, _, _)).Times(0); + + GURL target_url("https://www.google.com/"); + std::string long_cid(features::kGlicWebContinuityMaxCIDLength.Get() + 1, 'a'); + GURL continue_url(features::kGlicWebContinuityUrl.Get() + "?cid=" + long_cid + + "&targetUrl=" + target_url.spec()); + + NavigateToURL(browser(), continue_url); + + histogram_tester.ExpectUniqueSample( + "Glic.NavigationCapture.GlicWebContinuityFeatureEnabled", + GeminiNavigationCaptureResult::kCIDTooLong, 1); +} + +IN_PROC_BROWSER_TEST_F(GlicNavigationThrottleBrowserTest, + Metrics_TargetUrlTooLong) { + base::HistogramTester histogram_tester; + MockGlicKeyedService* mock_service = static_cast( + GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile(), + /*create=*/true)); + ASSERT_TRUE(mock_service); + + EXPECT_CALL(*mock_service, ShowUiWithConversationID(_, _, _)).Times(0); + + std::string long_target_url( + features::kGlicWebContinuityMaxTargetUrlLength.Get() + 1, 'a'); + GURL target_url("https://" + long_target_url + ".com/"); + GURL continue_url(features::kGlicWebContinuityUrl.Get() + + "?cid=123&targetUrl=" + target_url.spec()); + + NavigateToURL(browser(), continue_url); + + histogram_tester.ExpectUniqueSample( + "Glic.NavigationCapture.GlicWebContinuityFeatureEnabled", + GeminiNavigationCaptureResult::kTargetUrlTooLong, 1); +} + +IN_PROC_BROWSER_TEST_F(GlicNavigationThrottleBrowserTest, Metrics_InvalidUrl) { + base::HistogramTester histogram_tester; + MockGlicKeyedService* mock_service = static_cast( + GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile(), + /*create=*/true)); + ASSERT_TRUE(mock_service); + + EXPECT_CALL(*mock_service, ShowUiWithConversationID(_, _, _)).Times(0); + + GURL continue_url(features::kGlicWebContinuityUrl.Get() + + "?cid=123&targetUrl=invalidurl"); + + NavigateToURL(browser(), continue_url); + + histogram_tester.ExpectUniqueSample( + "Glic.NavigationCapture.GlicWebContinuityFeatureEnabled", + GeminiNavigationCaptureResult::kInvalidUrl, 1); +} + +IN_PROC_BROWSER_TEST_F(GlicNavigationThrottleBrowserTest, + InterceptGlicContinueUrlFromGemini_NonHttpsTargetUrl) { + base::HistogramTester histogram_tester; + MockGlicKeyedService* mock_service = static_cast( + GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile(), + /*create=*/true)); + ASSERT_TRUE(mock_service); + + EXPECT_CALL(*mock_service, ShowUiWithConversationID(_, _, _)).Times(0); + + GURL target_url("http://www.example.com/"); + GURL continue_url(features::kGlicWebContinuityUrl.Get() + + "?cid=123&targetUrl=" + target_url.spec()); + + NavigateToURL(browser(), continue_url); + + histogram_tester.ExpectUniqueSample( + "Glic.NavigationCapture.GlicWebContinuityFeatureEnabled", + GeminiNavigationCaptureResult::kNonHttpsScheme, 1); +} + +IN_PROC_BROWSER_TEST_F(GlicNavigationThrottleBrowserTest, + InterceptGlicContinueUrlFromGemini_NoTargetURL) { + base::HistogramTester histogram_tester; + MockGlicKeyedService* mock_service = static_cast( + GlicKeyedServiceFactory::GetGlicKeyedService(browser()->profile(), + /*create=*/true)); + ASSERT_TRUE(mock_service); + + EXPECT_CALL(*mock_service, ShowUiWithConversationID(_, _, _)).Times(0); + + GURL continue_url(features::kGlicWebContinuityUrl.Get() + "?cid=123"); + + NavigateToURL(browser(), continue_url); + + histogram_tester.ExpectUniqueSample( + "Glic.NavigationCapture.GlicWebContinuityFeatureEnabled", + GeminiNavigationCaptureResult::kNoTargetUrl, 1); +} + +IN_PROC_BROWSER_TEST_F(GlicNavigationThrottleBrowserTest, Incognito) { + base::HistogramTester histogram_tester; + + GURL target_url("https://www.google.com/"); + GURL continue_url(features::kGlicWebContinuityUrl.Get() + + "?cid=123&targetUrl=" + target_url.spec()); + + Browser* incognito_browser = CreateIncognitoBrowser(); + + NavigateToURL(incognito_browser, continue_url); + + EXPECT_EQ( + incognito_browser->tab_strip_model()->GetActiveWebContents()->GetURL(), + target_url); + + histogram_tester.ExpectUniqueSample( + "Glic.NavigationCapture.GlicWebContinuityFeatureDisabled", + GeminiNavigationCaptureResult::kSuccess, 1); } class GlicNavigationThrottleBrowserTestWithNoFeatures @@ -150,25 +283,19 @@ IN_PROC_BROWSER_TEST_F(GlicNavigationThrottleBrowserTestWithNoFeatures, InterceptGlicContinueUrlFromGemini) { + base::HistogramTester histogram_tester; GURL target_url("https://www.google.com/"); GURL continue_url(features::kGlicWebContinuityUrl.Get() + "?cid=123&targetUrl=" + target_url.spec()); - content::TestNavigationObserver observer( - browser()->tab_strip_model()->GetActiveWebContents()); - content::NavigationController::LoadURLParams params(continue_url); - params.initiator_origin = url::Origin::Create( - GURL(features::kGlicWebContinuityOriginatingHost.Get())); - params.transition_type = ui::PAGE_TRANSITION_LINK; - browser() - ->tab_strip_model() - ->GetActiveWebContents() - ->GetController() - .LoadURLWithParams(params); - observer.Wait(); + NavigateToURL(browser(), continue_url); EXPECT_EQ(browser()->tab_strip_model()->GetActiveWebContents()->GetURL(), target_url); + + histogram_tester.ExpectUniqueSample( + "Glic.NavigationCapture.GlicWebContinuityFeatureDisabled", + GeminiNavigationCaptureResult::kSuccess, 1); } } // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_profile_manager.cc chromium-146.0.7680.153/chrome/browser/glic/glic_profile_manager.cc --- chromium-146.0.7680.80/chrome/browser/glic/glic_profile_manager.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_profile_manager.cc 2026-03-17 19:56:22.000000000 +0000 @@ -93,6 +93,9 @@ ProfileManager* profile_manager = g_browser_process->profile_manager(); if (profile_manager) { profile_manager->AddObserver(this); + for (Profile* profile : profile_manager->GetLoadedProfiles()) { + profile_observations_.AddObservation(profile); + } } } @@ -348,6 +351,11 @@ return last_active_glic_->IsWindowOrFreShowing(); } +void GlicProfileManager::OnProfileAdded(Profile* profile) { + GlicEnabling::RecordProfileIneligibilityMetricsAtStartup(profile); + profile_observations_.AddObservation(profile); +} + void GlicProfileManager::OnProfileMarkedForPermanentDeletion(Profile* profile) { GlicKeyedService* glic_keyed_service = glic::GlicKeyedServiceFactory::GetGlicKeyedService(profile); @@ -357,6 +365,20 @@ glic_keyed_service->Shutdown(); } +void GlicProfileManager::OnOffTheRecordProfileCreated(Profile* profile) { + // Guest and System profiles are managed by their own "backing" parent + // profiles. The creation of these parent profiles is already captured by + // `OnProfileAdded`. Thus, avoid logging again here. + if (profile->IsGuestSession() || profile->IsSystemProfile()) { + return; + } + GlicEnabling::RecordProfileIneligibilityMetricsAtStartup(profile); +} + +void GlicProfileManager::OnProfileWillBeDestroyed(Profile* profile) { + profile_observations_.RemoveObservation(profile); +} + void GlicProfileManager::OnMemoryPressure(base::MemoryPressureLevel level) { memory_pressure_level_ = level; } diff -Nru chromium-146.0.7680.80/chrome/browser/glic/glic_profile_manager.h chromium-146.0.7680.153/chrome/browser/glic/glic_profile_manager.h --- chromium-146.0.7680.80/chrome/browser/glic/glic_profile_manager.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/glic_profile_manager.h 2026-03-17 19:56:22.000000000 +0000 @@ -8,8 +8,10 @@ #include "base/callback_list.h" #include "base/memory/raw_ptr.h" #include "base/observer_list_types.h" +#include "base/scoped_multi_source_observation.h" #include "chrome/browser/glic/public/glic_keyed_service.h" #include "chrome/browser/profiles/profile_manager_observer.h" +#include "chrome/browser/profiles/profile_observer.h" #include "services/network/public/cpp/network_connection_tracker.h" class Profile; @@ -22,6 +24,7 @@ // Among other things it is used for determining which profile to launch from an // OS Entry point and ensuring that just one panel is shown across all profiles. class GlicProfileManager : public ProfileManagerObserver, + public ProfileObserver, public base::MemoryPressureListener { public: GlicProfileManager(); @@ -93,8 +96,13 @@ bool IsShowing() const; // ProfileManagerObserver: + void OnProfileAdded(Profile* profile) override; void OnProfileMarkedForPermanentDeletion(Profile* profile) override; + // ProfileObserver: + void OnOffTheRecordProfileCreated(Profile* profile) override; + void OnProfileWillBeDestroyed(Profile* profile) override; + // base::MemoryPressureListener: void OnMemoryPressure(base::MemoryPressureLevel level) override; @@ -140,6 +148,9 @@ base::MemoryPressureLevel memory_pressure_level_ = base::MEMORY_PRESSURE_LEVEL_NONE; + base::ScopedMultiSourceObservation + profile_observations_{this}; + base::WeakPtrFactory weak_ptr_factory_{this}; }; diff -Nru chromium-146.0.7680.80/chrome/browser/glic/host/context/glic_sharing_manager_impl.cc chromium-146.0.7680.153/chrome/browser/glic/host/context/glic_sharing_manager_impl.cc --- chromium-146.0.7680.80/chrome/browser/glic/host/context/glic_sharing_manager_impl.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/host/context/glic_sharing_manager_impl.cc 2026-03-17 19:56:22.000000000 +0000 @@ -14,6 +14,7 @@ #include "chrome/browser/glic/host/context/glic_tab_data.h" #include "chrome/browser/glic/host/glic.mojom.h" #include "chrome/browser/glic/host/glic_features.mojom.h" +#include "chrome/browser/glic/public/glic_enabling.h" #include "chrome/browser/page_content_annotations/multi_source_page_context_fetcher.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/webui_url_constants.h" @@ -274,7 +275,12 @@ } // If tab context was allowed to be extracted, report to metrics. - metrics_->DidRequestContextFromTab(*tab->GetContents()); + // Instance-level metrics for context requests are recorded by the caller + // (e.g., GlicPageHandler) to ensure correct attribution in multi-instance + // mode. + if (!GlicEnabling::IsMultiInstanceEnabled()) { + metrics_->DidRequestContextFromTab(*tab); + } GetContextFromTabImpl(tab, options, std::move(callback)); } diff -Nru chromium-146.0.7680.80/chrome/browser/glic/host/glic_api_browsertest.cc chromium-146.0.7680.153/chrome/browser/glic/host/glic_api_browsertest.cc --- chromium-146.0.7680.80/chrome/browser/glic/host/glic_api_browsertest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/host/glic_api_browsertest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -2537,7 +2537,7 @@ // 4. Verify no action yet. histogram_tester->ExpectTotalCount( - "Glic.Instance.FirstActionInDaisyChainPanel.GlicContents", 0); + "Glic.Instance.AutoOpenedPanel.FirstAction.GlicContents", 0); // 5. Trigger "createTab" (recursive) from the second tab's panel. ExecuteJsTest({.params = base::Value("createTab")}); @@ -2549,7 +2549,7 @@ // 7. Verify recursive metric for the second tab (which was daisy chained). ASSERT_TRUE(base::test::RunUntil([&]() { return histogram_tester->GetBucketCount( - "Glic.Instance.FirstActionInDaisyChainPanel.GlicContents", + "Glic.Instance.AutoOpenedPanel.FirstAction.GlicContents", DaisyChainFirstAction::kRecursiveDaisyChain) == 1; })); @@ -2563,7 +2563,7 @@ // 10. Verify inputSubmitted metric for the third tab. ASSERT_TRUE(base::test::RunUntil([&]() { return histogram_tester->GetBucketCount( - "Glic.Instance.FirstActionInDaisyChainPanel.GlicContents", + "Glic.Instance.AutoOpenedPanel.FirstAction.GlicContents", DaisyChainFirstAction::kInputSubmitted) == 1; })); } @@ -2595,7 +2595,7 @@ // 5. Verify Metric. ASSERT_TRUE(base::test::RunUntil([&]() { return histogram_tester->GetBucketCount( - "Glic.Instance.FirstActionInDaisyChainPanel.NewTab", + "Glic.Instance.AutoOpenedPanel.FirstAction.NewTab", DaisyChainFirstAction::kInputSubmitted) == 1; })); } diff -Nru chromium-146.0.7680.80/chrome/browser/glic/host/glic_cookie_synchronizer.cc chromium-146.0.7680.153/chrome/browser/glic/host/glic_cookie_synchronizer.cc --- chromium-146.0.7680.80/chrome/browser/glic/host/glic_cookie_synchronizer.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/host/glic_cookie_synchronizer.cc 2026-03-17 19:56:22.000000000 +0000 @@ -4,6 +4,7 @@ #include "chrome/browser/glic/host/glic_cookie_synchronizer.h" +#include #include #include #include @@ -40,6 +41,11 @@ #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) namespace glic { +// If enabled, clears the glic partition's cookies before the first cookie sync. +// This ensures a fresh cookie state after restart. +BASE_FEATURE(kGlicClearCookiesOnFirstSync, base::FEATURE_DISABLED_BY_DEFAULT); + +namespace { BASE_FEATURE(kGlicCookieSyncTimeout, base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE_PARAM(base::TimeDelta, @@ -48,8 +54,6 @@ "glic_cookie_sync_timeout_duration", GlicCookieSynchronizer::kCookieSyncDefaultTimeout); -namespace { - content::StoragePartitionConfig GetGlicMainStoragePartitionConfig( content::BrowserContext* browser_context) { // This storage partition must match the partition attribute in @@ -75,6 +79,27 @@ } // namespace +class GlicCookieSynchronizer::ClearCookiesTask { + public: + ClearCookiesTask(content::StoragePartition* storage_partition, + base::OnceClosure callback) + : callback_(std::move(callback)) { + network::mojom::CookieManager* cookie_manager = + storage_partition->GetCookieManagerForBrowserProcess(); + + cookie_manager->DeleteCookies( + network::mojom::CookieDeletionFilter::New(), + base::BindOnce(&ClearCookiesTask::DeleteDone, + weak_ptr_factory_.GetWeakPtr())); + } + + private: + void DeleteDone(uint32_t num_deleted) { std::move(callback_).Run(); } + + base::OnceClosure callback_; + base::WeakPtrFactory weak_ptr_factory_{this}; +}; + // Synchronize cookies from the main partition to the webview partition. This // is an alternative way to sync cookies which supports glic development, and // won't be part of the launched feature. @@ -230,7 +255,8 @@ CHECK(!callback.is_null()); callbacks_.push_back(std::move(callback)); - if (cookie_loader_ || sync_cookies_for_development_task_) { + if (cookie_loader_ || sync_cookies_for_development_task_ || + clear_cookies_task_) { // A request is in progress already. return; } @@ -240,8 +266,8 @@ base::BindOnce(&GlicCookieSynchronizer::OnTimeout, base::Unretained(this))); } - - if (!GetStoragePartition()) { + auto* glic_storage_partition = GetStoragePartition(); + if (!glic_storage_partition) { DLOG(ERROR) << "glic webview storage partition does not exist"; CompleteAuth(false); return; @@ -256,6 +282,12 @@ base::BindOnce( &GlicCookieSynchronizer::SyncCookiesForDevelopmentComplete, GetWeakPtr())); + } else if (base::FeatureList::IsEnabled(kGlicClearCookiesOnFirstSync) && + !has_cleared_cookies_) { + clear_cookies_task_ = std::make_unique( + glic_storage_partition, + base::BindOnce(&GlicCookieSynchronizer::ClearCookiesComplete, + GetWeakPtr())); } else { BeginCookieSync(); } @@ -267,6 +299,12 @@ cookie_loader_.reset(); } +void GlicCookieSynchronizer::ClearCookiesComplete() { + clear_cookies_task_.reset(); + has_cleared_cookies_ = true; + BeginCookieSync(); +} + void GlicCookieSynchronizer::SyncCookiesForDevelopmentComplete(bool success) { sync_cookies_for_development_task_.reset(); if (!success) { diff -Nru chromium-146.0.7680.80/chrome/browser/glic/host/glic_cookie_synchronizer.h chromium-146.0.7680.153/chrome/browser/glic/host/glic_cookie_synchronizer.h --- chromium-146.0.7680.80/chrome/browser/glic/host/glic_cookie_synchronizer.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/host/glic_cookie_synchronizer.h 2026-03-17 19:56:22.000000000 +0000 @@ -27,6 +27,7 @@ } // namespace signin namespace glic { +BASE_DECLARE_FEATURE(kGlicClearCookiesOnFirstSync); // Helper to sync cookies to the webview storage partition. class GlicCookieSynchronizer @@ -70,11 +71,13 @@ private: class SyncCookiesForDevelopmentTask; + class ClearCookiesTask; base::WeakPtr GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); } void SyncCookiesForDevelopmentComplete(bool success); + void ClearCookiesComplete(); void BeginCookieSync(); // signin::AccountsCookieMutator::PartitionDelegate: @@ -92,6 +95,7 @@ void CompleteAuth(bool is_success); void OnTimeout(); + bool has_cleared_cookies_ = false; const raw_ptr context_; const raw_ptr identity_manager_; base::ScopedObservation cookie_loader_; + std::unique_ptr clear_cookies_task_; std::unique_ptr sync_cookies_for_development_task_; base::WeakPtrFactory weak_ptr_factory_{this}; diff -Nru chromium-146.0.7680.80/chrome/browser/glic/host/glic_cookie_synchronizer_unittest.cc chromium-146.0.7680.153/chrome/browser/glic/host/glic_cookie_synchronizer_unittest.cc --- chromium-146.0.7680.80/chrome/browser/glic/host/glic_cookie_synchronizer_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/host/glic_cookie_synchronizer_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -93,6 +93,26 @@ } // namespace +class GlicTestCookieManager : public network::TestCookieManager { + public: + GlicTestCookieManager() = default; + ~GlicTestCookieManager() override = default; + + void DeleteCookies(network::mojom::CookieDeletionFilterPtr filter, + DeleteCookiesCallback callback) override { + delete_cookies_called_count_++; + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), 0)); + } + + int delete_cookies_called_count() const { + return delete_cookies_called_count_; + } + + private: + int delete_cookies_called_count_ = 0; +}; + class GlicCookieSynchronizerTest : public testing::Test { public: GlicCookieSynchronizerTest() = default; @@ -101,6 +121,8 @@ protected: GlicCookieSynchronizer& cookie_synchronizer() { return cookie_synchronizer_; } + GlicTestCookieManager& test_cookie_manager() { return test_cookie_manager_; } + // Sets the network response to the given result. Applies to all subsequent // network requests. void SetResponseForResult(signin::SetAccountsInCookieResult result) { @@ -139,7 +161,7 @@ /*test_url_loader_factory=*/nullptr, &prefs_, &test_signin_client_}; content::TestStoragePartition test_storage_partition_; - network::TestCookieManager test_cookie_manager_; + GlicTestCookieManager test_cookie_manager_; GlicCookieSynchronizerWithTestPartition cookie_synchronizer_{ &test_profile_, identity_test_env_.identity_manager(), @@ -318,4 +340,26 @@ } } +TEST_F(GlicCookieSynchronizerTest, ClearsCookiesOnFirstSync) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature(kGlicClearCookiesOnFirstSync); + + base::test::TestFuture result; + SetResponseForResult(signin::SetAccountsInCookieResult::kSuccess); + EXPECT_EQ(0, test_cookie_manager().delete_cookies_called_count()); + cookie_synchronizer().CopyCookiesToWebviewStoragePartition( + result.GetCallback()); + EXPECT_TRUE(result.Get()); + + EXPECT_EQ(1, test_cookie_manager().delete_cookies_called_count()); + + // Second sync should not clear cookies again. + result.Clear(); + SetResponseForResult(signin::SetAccountsInCookieResult::kSuccess); + cookie_synchronizer().CopyCookiesToWebviewStoragePartition( + result.GetCallback()); + EXPECT_TRUE(result.Get()); + EXPECT_EQ(1, test_cookie_manager().delete_cookies_called_count()); +} + } // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/host/glic_page_handler.cc chromium-146.0.7680.153/chrome/browser/glic/host/glic_page_handler.cc --- chromium-146.0.7680.80/chrome/browser/glic/host/glic_page_handler.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/host/glic_page_handler.cc 2026-03-17 19:56:22.000000000 +0000 @@ -1170,8 +1170,10 @@ } tabs::TabInterface* tab = ftd.focus(); - if (auto* instance_metrics = host().instance_metrics()) { - instance_metrics->DidRequestContextFromFocusedTab(); + if (tab) { + host() + .instance_metrics_backwards_compatibility() + .DidRequestContextFromTab(*tab); } auto tab_handle = tab ? tab->GetHandle() : tabs::TabHandle::Null(); sharing_manager().GetContextFromTab( @@ -1704,10 +1706,8 @@ // non-profile-scoped metrics are logged entirely from GlicInstanceMetrics. void OnUserInputSubmitted(mojom::WebClientMode mode) override { glic_service_->OnUserInputSubmitted(mode); - glic_service_->metrics()->OnUserInputSubmitted(mode); - if (auto* instance_metrics = host().instance_metrics()) { - instance_metrics->OnUserInputSubmitted(mode); - } + host().instance_metrics_backwards_compatibility().OnUserInputSubmitted( + mode); // TODO(crbug.com/462769104): move this to a non-metrics API. sharing_manager().OnConversationTurnSubmitted(); @@ -1724,18 +1724,14 @@ // TODO(crbug.com/450026474): Remove call to GlicMetrics once // non-profile-scoped metrics are logged entirely from GlicInstanceMetrics. void OnReaction(mojom::MetricUserInputReactionType reaction_type) override { - glic_service_->metrics()->OnReaction(reaction_type); - if (auto* instance_metrics = host().instance_metrics()) { - instance_metrics->OnReaction(reaction_type); - } + host().instance_metrics_backwards_compatibility().OnReaction(reaction_type); } // TODO(crbug.com/450026474): Remove call to GlicMetrics once // non-profile-scoped metrics are logged entirely from GlicInstanceMetrics. void OnResponseStarted() override { - glic_service_->metrics()->OnResponseStarted(); + host().instance_metrics_backwards_compatibility().OnResponseStarted(); if (auto* instance_metrics = host().instance_metrics()) { - instance_metrics->OnResponseStarted(); instance_metrics->RecordAttachedContextTabCount( sharing_manager().GetNumPinnedTabs()); } @@ -1748,10 +1744,7 @@ if (details) { cause = details->cause; } - glic_service_->metrics()->OnResponseStopped(cause); - if (auto* instance_metrics = host().instance_metrics()) { - instance_metrics->OnResponseStopped(cause); - } + host().instance_metrics_backwards_compatibility().OnResponseStopped(cause); } void OnSessionTerminated() override { @@ -1762,10 +1755,8 @@ // non-profile-scoped metrics are logged entirely from GlicInstanceMetrics. void OnTurnCompleted(glic::mojom::WebClientModel model, base::TimeDelta duration) override { - glic_service_->metrics()->OnTurnCompleted(model, duration); - if (auto* instance_metrics = host().instance_metrics()) { - instance_metrics->OnTurnCompleted(model, duration); - } + host().instance_metrics_backwards_compatibility().OnTurnCompleted(model, + duration); } void OnRecordUseCounter(uint16_t counter) override { diff -Nru chromium-146.0.7680.80/chrome/browser/glic/host/host.cc chromium-146.0.7680.153/chrome/browser/glic/host/host.cc --- chromium-146.0.7680.80/chrome/browser/glic/host/host.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/host/host.cc 2026-03-17 19:56:22.000000000 +0000 @@ -131,6 +131,14 @@ class MetricsBackwardsCompatibilityStub : public GlicInstanceMetricsBackwardsCompatibility { public: + void OnUserInputSubmitted(mojom::WebClientMode mode) override {} + void DidRequestContextFromTab(tabs::TabInterface& tab) override {} + void OnResponseStarted() override {} + void OnResponseStopped(mojom::ResponseStopCause cause) override {} + void OnTurnCompleted(mojom::WebClientModel model, + base::TimeDelta duration) override {} + void OnReaction(mojom::MetricUserInputReactionType reaction_type) override { + } void OnGlicScrollAttempt() override {} void OnGlicScrollComplete(bool success) override {} }; @@ -239,6 +247,9 @@ if (GlicEnabling::IsMultiInstanceEnabled() && base::FeatureList::IsEnabled(kGlicReloadUsesFreshWebContents)) { + if (handler_info_ && handler_info_->web_client) { + UnsetWebClient(handler_info_->web_client); + } Shutdown(); CreateContents(/*initially_hidden=*/false); delegate_->OnReload(); diff -Nru chromium-146.0.7680.80/chrome/browser/glic/public/glic_enabling.cc chromium-146.0.7680.153/chrome/browser/glic/public/glic_enabling.cc --- chromium-146.0.7680.80/chrome/browser/glic/public/glic_enabling.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/public/glic_enabling.cc 2026-03-17 19:56:22.000000000 +0000 @@ -8,6 +8,8 @@ #include "base/command_line.h" #include "base/feature_list.h" +#include "base/metrics/histogram_functions.h" +#include "base/strings/strcat.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "chrome/browser/browser_process.h" @@ -215,6 +217,51 @@ default; GlicEnabling::ProfileEnablement::~ProfileEnablement() = default; +void GlicEnabling::ProfileEnablement::RecordMetrics( + const std::string& suffix) const { + base::UmaHistogramBoolean( + base::StrCat({"Glic.ProfileEnablement.IsEnabled.", suffix}), IsEnabled()); + + auto record_reason = [&](Reason reason) { + base::UmaHistogramEnumeration( + base::StrCat({"Glic.ProfileEnablement.DisabledReason.", suffix}), + reason); + }; + + if (feature_disabled) { + record_reason(Reason::kFeatureDisabled); + } + if (not_regular_profile) { + record_reason(Reason::kNotRegularProfile); + } + if (not_rolled_out) { + record_reason(Reason::kNotRolledOut); + } + if (primary_account_not_capable) { + record_reason(Reason::kPrimaryAccountNotCapable); + } + if (disallowed_by_chrome_policy) { + record_reason(Reason::kDisallowedByChromePolicy); + } + if (disallowed_by_remote_admin) { + record_reason(Reason::kDisallowedByRemoteAdmin); + } + if (disallowed_by_remote_other) { + record_reason(Reason::kDisallowedByRemoteOther); + } + + base::UmaHistogramBoolean( + base::StrCat({"Glic.ProfileEnablement.IsConsented.", suffix}), + !not_consented); + base::UmaHistogramBoolean( + base::StrCat({"Glic.ProfileEnablement.EligibleForLive.", suffix}), + EligibleForLive()); + base::UmaHistogramBoolean( + base::StrCat( + {"Glic.ProfileEnablement.IsPrimaryAccountFullySignedIn.", suffix}), + !primary_account_not_fully_signed_in); +} + GlicEnabling::ProfileEnablement GlicEnabling::EnablementForProfile( Profile* profile) { ProfileEnablement result; @@ -378,35 +425,9 @@ } #if BUILDFLAG(IS_CHROMEOS) - // Due to the tight coupling of the browser Profile and OS users in ChromeOS, - // we check the user session type to align with other desktop browser - // behavior. - if (!ash::IsUserBrowserContext(profile)) { - // We only allow regular user session profiles. - // E.g. disallowed on login screen. + if (!IsChromeOSProfileEligible(profile)) { return false; } - auto* user = ash::BrowserContextHelper::Get()->GetUserByBrowserContext( - const_cast(profile)); - if (user == nullptr) { - // When there is no signed in user on ChromeOS, assume that the profile is - // not eligible. - return false; - } - switch (user->GetType()) { - case user_manager::UserType::kRegular: - case user_manager::UserType::kChild: - // These are ok to use glic. - break; - case user_manager::UserType::kGuest: - case user_manager::UserType::kPublicAccount: - case user_manager::UserType::kKioskChromeApp: - case user_manager::UserType::kKioskWebApp: - case user_manager::UserType::kKioskIWA: - case user_manager::UserType::kKioskArcvmApp: - // Disallows guest session, and device local account sessions. - return false; - } #endif // BUILDFLAG(IS_CHROMEOS) // Glic is supported only in regular profiles, i.e. disable in incognito, @@ -414,6 +435,45 @@ return IsEnabledByFlags() && profile && profile->IsRegularProfile(); } +void GlicEnabling::RecordProfileIneligibilityMetricsAtStartup( + Profile* profile) { + if (g_bypass_enablement_checks_for_testing) { + return; + } + + // Only record related metrics if the profile is ineligible. + if (IsProfileEligible(profile)) { + return; + } + + base::UmaHistogramBoolean("Glic.ProfileEnablement.IsEnabled.Startup", false); + + // Log specific causes of ineligibility. + if (!IsEnabledByFlags()) { + base::UmaHistogramEnumeration( + "Glic.ProfileEnablement.DisabledReason.Startup", + ProfileEnablement::Reason::kFeatureDisabled); + } + // Aside from flag enablement, `profile` can also be ineligible if it is not + // a regular profile, or it fails ChromeOS-specific checks in + // `IsProfileEligible`. + bool not_regular_profile = false; + if (!profile || !(profile->IsRegularProfile())) { + not_regular_profile = true; + } +#if BUILDFLAG(IS_CHROMEOS) + if (!IsChromeOSProfileEligible(profile)) { + not_regular_profile = true; + } +#endif // BUILDFLAG(IS_CHROMEOS) + + if (not_regular_profile) { + base::UmaHistogramEnumeration( + "Glic.ProfileEnablement.DisabledReason.Startup", + ProfileEnablement::Reason::kNotRegularProfile); + } +} + bool GlicEnabling::IsEnabledForProfile(Profile* profile) { return EnablementForProfile(profile).IsEnabled(); } @@ -478,6 +538,39 @@ UpdateEnabledStatus(); } +#if BUILDFLAG(IS_CHROMEOS) +// static +bool GlicEnabling::IsChromeOSProfileEligible(const Profile* profile) { + if (!ash::IsUserBrowserContext(profile)) { + // We only allow regular user session profiles. + // E.g. disallowed on login screen. + return false; + } + auto* user = ash::BrowserContextHelper::Get()->GetUserByBrowserContext( + const_cast(profile)); + if (user == nullptr) { + // When there is no signed in user on ChromeOS, assume that the profile is + // not eligible. + return false; + } + switch (user->GetType()) { + case user_manager::UserType::kRegular: + case user_manager::UserType::kChild: + // These are ok to use glic. + break; + case user_manager::UserType::kGuest: + case user_manager::UserType::kPublicAccount: + case user_manager::UserType::kKioskChromeApp: + case user_manager::UserType::kKioskWebApp: + case user_manager::UserType::kKioskIWA: + case user_manager::UserType::kKioskArcvmApp: + // Disallows guest session, and device local account sessions. + return false; + } + return true; +} +#endif // BUILDFLAG(IS_CHROMEOS) + bool GlicEnabling::IsUnifiedFreEnabled(Profile* profile) { return IsMultiInstanceEnabled() && base::FeatureList::IsEnabled(features::kGlicUnifiedFreScreen); @@ -709,6 +802,15 @@ return HasConsentedForProfile(profile_); } +void GlicEnabling::MaybeRecordStartupMetrics() { + if (recorded_startup_metrics_) { + return; + } + + recorded_startup_metrics_ = true; + EnablementForProfile(profile_).RecordStartupMetrics(); +} + base::CallbackListSubscription GlicEnabling::RegisterAllowedChanged( EnableChangedCallback callback) { return enable_changed_callback_list_.Add(std::move(callback)); diff -Nru chromium-146.0.7680.80/chrome/browser/glic/public/glic_enabling.h chromium-146.0.7680.153/chrome/browser/glic/public/glic_enabling.h --- chromium-146.0.7680.80/chrome/browser/glic/public/glic_enabling.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/public/glic_enabling.h 2026-03-17 19:56:22.000000000 +0000 @@ -210,6 +210,22 @@ // Whether live (audio) functionality is disallowed for this account type. bool live_disallowed : 1 = false; + enum class Reason { + kFeatureDisabled = 0, + kNotRegularProfile = 1, + kNotRolledOut = 2, + kPrimaryAccountNotCapable = 3, + kDisallowedByChromePolicy = 4, + kDisallowedByRemoteAdmin = 5, + kDisallowedByRemoteOther = 6, + kMaxValue = kDisallowedByRemoteOther, + }; + + // Record the state of this struct to UMA. + void RecordStartupMetrics() const { RecordMetrics("Startup"); } + void RecordSteadyStateMetrics() const { RecordMetrics("SteadyState"); } + + public: bool IsProfileEligible() const { return !feature_disabled && !not_regular_profile; } @@ -245,6 +261,10 @@ bool DisallowedByAdmin() const { return disallowed_by_chrome_policy || disallowed_by_remote_admin; } + + private: + // `suffix` should be either "Startup" or "SteadyState". + void RecordMetrics(const std::string& suffix) const; }; static ProfileEnablement EnablementForProfile(Profile* profile); @@ -260,19 +280,28 @@ // This value can change at runtime. // // Once a profile is allowed to run glic, there are several more checks that - // are required to use glic although many callsites may not care about all of - // these: + // are required to use glic although many callsites may not care about all + // of these: // * FRE has been passed. There is no way to permanently decline FRE, as // it's only invoked on user interaction with glic entry points. // * Entry point specific flags (e.g. kGlicPinnedToTabstrip). // * Profile is not paused. - // If all entry-points have been disabled, then glic is functionally disabled. + // If all entry-points have been disabled, then glic is functionally + // disabled. bool IsAllowed(); // Returns true if the given profile has completed the FRE and false // otherwise. bool HasConsented(); + // Checks if startup metrics have already been recorded, and if not, records + // them. + void MaybeRecordStartupMetrics(); + + // Records startup metrics related to profile ineligibility. Should only be + // called once per profile. + static void RecordProfileIneligibilityMetricsAtStartup(Profile* profile); + void SetGlicUserStatusUrlForTest(const GURL& test_url) { glic_user_status_fetcher_->SetGlicUserStatusUrlForTest(test_url); } @@ -339,6 +368,12 @@ void UpdateEnabledStatus(); void UpdateConsentStatus(); +#if BUILDFLAG(IS_CHROMEOS) + static bool IsChromeOSProfileEligible(const Profile* profile); +#endif // BUILDFLAG(IS_CHROMEOS) + + bool recorded_startup_metrics_ = false; + raw_ptr profile_; raw_ptr profile_attributes_storage_; using EnableChangedCallbackList = base::RepeatingCallbackList; diff -Nru chromium-146.0.7680.80/chrome/browser/glic/public/glic_enabling_metrics_unittest.cc chromium-146.0.7680.153/chrome/browser/glic/public/glic_enabling_metrics_unittest.cc --- chromium-146.0.7680.80/chrome/browser/glic/public/glic_enabling_metrics_unittest.cc 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/public/glic_enabling_metrics_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,100 @@ +// Copyright 2026 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/test/metrics/histogram_tester.h" +#include "base/test/scoped_feature_list.h" +#include "chrome/browser/glic/public/glic_enabling.h" +#include "chrome/common/chrome_features.h" +#include "chrome/test/base/testing_profile.h" +#include "content/public/test/browser_task_environment.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace glic { + +TEST(GlicProfileEnablementTest, + RecordProfileIneligibilityMetricsAtStartup_FeatureDisabled) { + content::BrowserTaskEnvironment task_environment; + base::HistogramTester histograms; + TestingProfile profile; + + base::test::ScopedFeatureList feature_list; + feature_list.InitAndDisableFeature(features::kGlic); + + GlicEnabling::RecordProfileIneligibilityMetricsAtStartup(&profile); + + histograms.ExpectUniqueSample("Glic.ProfileEnablement.IsEnabled.Startup", + false, 1); + histograms.ExpectBucketCount( + "Glic.ProfileEnablement.DisabledReason.Startup", + GlicEnabling::ProfileEnablement::Reason::kFeatureDisabled, 1); +} + +TEST(GlicProfileEnablementTest, + RecordProfileIneligibilityMetricsAtStartup_NotRegularProfile) { + content::BrowserTaskEnvironment task_environment; + base::HistogramTester histograms; + + TestingProfile::Builder builder; + builder.SetGuestSession(); + std::unique_ptr profile = builder.Build(); + + GlicEnabling::RecordProfileIneligibilityMetricsAtStartup(profile.get()); + + histograms.ExpectUniqueSample("Glic.ProfileEnablement.IsEnabled.Startup", + false, 1); + histograms.ExpectBucketCount( + "Glic.ProfileEnablement.DisabledReason.Startup", + GlicEnabling::ProfileEnablement::Reason::kNotRegularProfile, 1); +} + +TEST(GlicProfileEnablementTest, RecordMetrics) { + base::HistogramTester histograms; + GlicEnabling::ProfileEnablement enablement; + + enablement.RecordStartupMetrics(); + + histograms.ExpectUniqueSample("Glic.ProfileEnablement.IsEnabled.Startup", + true, 1); + histograms.ExpectUniqueSample("Glic.ProfileEnablement.IsConsented.Startup", + true, 1); + histograms.ExpectUniqueSample( + "Glic.ProfileEnablement.EligibleForLive.Startup", true, 1); + histograms.ExpectUniqueSample( + "Glic.ProfileEnablement.IsPrimaryAccountFullySignedIn.Startup", true, 1); + histograms.ExpectTotalCount("Glic.ProfileEnablement.DisabledReason.Startup", + 0); + + // Set some reasons for disablement + enablement.feature_disabled = true; + enablement.not_rolled_out = true; + enablement.not_consented = true; + enablement.live_disallowed = true; + enablement.primary_account_not_fully_signed_in = true; + + enablement.RecordSteadyStateMetrics(); + + histograms.ExpectUniqueSample("Glic.ProfileEnablement.IsEnabled.SteadyState", + false, 1); + histograms.ExpectBucketCount( + "Glic.ProfileEnablement.DisabledReason.SteadyState", + GlicEnabling::ProfileEnablement::Reason::kFeatureDisabled, 1); + histograms.ExpectBucketCount( + "Glic.ProfileEnablement.DisabledReason.SteadyState", + GlicEnabling::ProfileEnablement::Reason::kNotRolledOut, 1); + histograms.ExpectTotalCount( + "Glic.ProfileEnablement.DisabledReason.SteadyState", 2); + + // Sub-features + histograms.ExpectUniqueSample( + "Glic.ProfileEnablement.IsConsented.SteadyState", false, 1); + // EligibleForLive is false because feature_disabled is true + // (IsProfileEligible() is false) + histograms.ExpectUniqueSample( + "Glic.ProfileEnablement.EligibleForLive.SteadyState", false, 1); + histograms.ExpectUniqueSample( + "Glic.ProfileEnablement.IsPrimaryAccountFullySignedIn.SteadyState", false, + 1); +} + +} // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/public/glic_instance_metrics_backwards_compatibility.h chromium-146.0.7680.153/chrome/browser/glic/public/glic_instance_metrics_backwards_compatibility.h --- chromium-146.0.7680.80/chrome/browser/glic/public/glic_instance_metrics_backwards_compatibility.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/public/glic_instance_metrics_backwards_compatibility.h 2026-03-17 19:56:22.000000000 +0000 @@ -5,8 +5,13 @@ #ifndef CHROME_BROWSER_GLIC_PUBLIC_GLIC_INSTANCE_METRICS_BACKWARDS_COMPATIBILITY_H_ #define CHROME_BROWSER_GLIC_PUBLIC_GLIC_INSTANCE_METRICS_BACKWARDS_COMPATIBILITY_H_ +#include "base/time/time.h" #include "chrome/browser/glic/host/glic.mojom.h" +namespace tabs { +class TabInterface; +} + namespace glic { // Interface that's compatible for both `GlicInstanceMetrics` and @@ -17,6 +22,14 @@ public: virtual ~GlicInstanceMetricsBackwardsCompatibility() = default; + virtual void OnUserInputSubmitted(mojom::WebClientMode mode) = 0; + virtual void DidRequestContextFromTab(tabs::TabInterface& tab) = 0; + virtual void OnResponseStarted() = 0; + virtual void OnResponseStopped(mojom::ResponseStopCause cause) = 0; + virtual void OnTurnCompleted(mojom::WebClientModel model, + base::TimeDelta duration) = 0; + virtual void OnReaction(mojom::MetricUserInputReactionType reaction_type) = 0; + // Called when glic requests a scroll. virtual void OnGlicScrollAttempt() = 0; diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/glic_instance_coordinator_browsertest.cc chromium-146.0.7680.153/chrome/browser/glic/service/glic_instance_coordinator_browsertest.cc --- chromium-146.0.7680.80/chrome/browser/glic/service/glic_instance_coordinator_browsertest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/glic_instance_coordinator_browsertest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -704,6 +704,58 @@ #endif } +#if !BUILDFLAG(IS_ANDROID) +class GlicInstanceCoordinatorActorTaskTest + : public GlicInstanceCoordinatorBrowserTest { + public: + GlicInstanceCoordinatorActorTaskTest() { + feature_list_.InitAndEnableFeatureWithParameters( + ::features::kGlicActor, + {{::features::kGlicActorPolicyControlExemption.name, "true"}}); + } + + private: + base::test::ScopedFeatureList feature_list_; +}; + +IN_PROC_BROWSER_TEST_F(GlicInstanceCoordinatorActorTaskTest, + ReloadCancelsActorTask) { + GlicInstanceImpl* instance = OpenGlicForActiveTab(); + ASSERT_TRUE(instance); + + // Wait for WebUI to be ready to ensure handler_info_ is set. + EXPECT_TRUE(base::test::RunUntil([&]() { + return instance->host().GetPrimaryWebUiState() == + glic::mojom::WebUiState::kReady && + instance->host().GetPrimaryWebClient(); + })); + + // Create a task to make it "actuating". + base::test::TestFuture< + base::expected> + create_task_future; + instance->CreateTask(nullptr, actor::webui::mojom::TaskOptions::New(), + create_task_future.GetCallback()); + ASSERT_TRUE(create_task_future.Get().has_value()); + EXPECT_TRUE(instance->IsActuating()); + + // Reload the instance. + instance->host().Reload(); + + // Wait for StopTask to complete and verify that it is no longer actuating. + EXPECT_TRUE(base::test::RunUntil([&]() { return !instance->IsActuating(); })); + + // verify that task can be crreated again. + base::test::TestFuture< + base::expected> + create_task_future2; + instance->CreateTask(nullptr, actor::webui::mojom::TaskOptions::New(), + create_task_future2.GetCallback()); + ASSERT_TRUE(create_task_future2.Get().has_value()); + EXPECT_TRUE(instance->IsActuating()); +} +#endif + class GlicInstanceCoordinatorToggleWithConversationTest : public GlicInstanceCoordinatorBrowserTest { public: diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/glic_instance_helper_unittest.cc chromium-146.0.7680.153/chrome/browser/glic/service/glic_instance_helper_unittest.cc --- chromium-146.0.7680.80/chrome/browser/glic/service/glic_instance_helper_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/glic_instance_helper_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -116,7 +116,7 @@ // Destructor triggers logging. } histogram_tester_.ExpectUniqueSample( - "Glic.Instance.FirstActionInDaisyChainPanel.TabContents", + "Glic.Instance.AutoOpenedPanel.FirstAction.TabContents", DaisyChainFirstAction::kNoAction, 1); } @@ -127,7 +127,7 @@ helper.OnDaisyChainAction(DaisyChainFirstAction::kInputSubmitted); } histogram_tester_.ExpectUniqueSample( - "Glic.Instance.FirstActionInDaisyChainPanel.GlicContents", + "Glic.Instance.AutoOpenedPanel.FirstAction.GlicContents", DaisyChainFirstAction::kInputSubmitted, 1); } @@ -136,14 +136,14 @@ GlicInstanceHelper helper(&mock_tab_); helper.SetIsDaisyChained(DaisyChainSource::kActorAddTab); helper.OnDaisyChainAction(DaisyChainFirstAction::kSidePanelClosed); - // Should not log immediately. + // Should not log immediately since kSidePanelClosed is ambiguous. histogram_tester_.ExpectTotalCount( - "Glic.Instance.FirstActionInDaisyChainPanel.ActorAddTab", 0); + "Glic.Instance.AutoOpenedPanel.FirstAction.ActorAddTab", 0); // Fast forward to trigger timeout. task_environment_.FastForwardBy(base::Seconds(6)); } histogram_tester_.ExpectUniqueSample( - "Glic.Instance.FirstActionInDaisyChainPanel.ActorAddTab", + "Glic.Instance.AutoOpenedPanel.FirstAction.ActorAddTab", DaisyChainFirstAction::kSidePanelClosed, 1); } @@ -151,36 +151,53 @@ { GlicInstanceHelper helper(&mock_tab_); helper.SetIsDaisyChained(DaisyChainSource::kTabContents); - helper.OnDaisyChainAction(DaisyChainFirstAction::kSidePanelClosed); + helper.OnDaisyChainAction(DaisyChainFirstAction::kTabSwitched); // Ambiguous action start timer. histogram_tester_.ExpectTotalCount( - "Glic.Instance.FirstActionInDaisyChainPanel.TabContents", 0); + "Glic.Instance.AutoOpenedPanel.FirstAction.TabContents", 0); // Terminal action happens before timeout. helper.OnDaisyChainAction(DaisyChainFirstAction::kRecursiveDaisyChain); } - // Should log terminal action immediately and ignore side panel closed. + // Should log terminal action immediately and ignore intermediate ambiguous + // action. histogram_tester_.ExpectUniqueSample( - "Glic.Instance.FirstActionInDaisyChainPanel.TabContents", + "Glic.Instance.AutoOpenedPanel.FirstAction.TabContents", DaisyChainFirstAction::kRecursiveDaisyChain, 1); } -TEST_F(GlicInstanceHelperTest, - LogsDaisyChainOutcomeSidePanelClosedDestruction) { +TEST_F(GlicInstanceHelperTest, LogsDaisyChainOutcomeTabSwitchedDestruction) { { GlicInstanceHelper helper(&mock_tab_); helper.SetIsDaisyChained(DaisyChainSource::kNewTab); - helper.OnDaisyChainAction(DaisyChainFirstAction::kSidePanelClosed); + helper.OnDaisyChainAction(DaisyChainFirstAction::kTabSwitched); // Should not log immediately. histogram_tester_.ExpectTotalCount( - "Glic.Instance.FirstActionInDaisyChainPanel.NewTab", 0); + "Glic.Instance.AutoOpenedPanel.FirstAction.NewTab", 0); // Destruction happens before timeout (timer was 5s). task_environment_.FastForwardBy(base::Seconds(2)); } // Should log on destruction. histogram_tester_.ExpectUniqueSample( - "Glic.Instance.FirstActionInDaisyChainPanel.NewTab", - DaisyChainFirstAction::kSidePanelClosed, 1); + "Glic.Instance.AutoOpenedPanel.FirstAction.NewTab", + DaisyChainFirstAction::kTabSwitched, 1); +} + +TEST_F(GlicInstanceHelperTest, LogsDaisyChainOutcomeTabSwitchedDelayed) { + { + GlicInstanceHelper helper(&mock_tab_); + helper.SetIsDaisyChained(DaisyChainSource::kActorAddTab); + helper.OnDaisyChainAction(DaisyChainFirstAction::kTabSwitched); + // Should not log immediately. + histogram_tester_.ExpectTotalCount( + "Glic.Instance.AutoOpenedPanel.FirstAction.ActorAddTab", 0); + // Fast forward to trigger timeout. + task_environment_.FastForwardBy(base::Seconds(6)); + } + // New metric keeps kTabSwitched as is. + histogram_tester_.ExpectUniqueSample( + "Glic.Instance.AutoOpenedPanel.FirstAction.ActorAddTab", + DaisyChainFirstAction::kTabSwitched, 1); } TEST_F(GlicInstanceHelperTest, LogsNewTabOutcome) { @@ -190,7 +207,29 @@ helper.OnDaisyChainAction(DaisyChainFirstAction::kInputSubmitted); } histogram_tester_.ExpectUniqueSample( - "Glic.Instance.FirstActionInDaisyChainPanel.NewTab", + "Glic.Instance.AutoOpenedPanel.FirstAction.NewTab", + DaisyChainFirstAction::kInputSubmitted, 1); +} + +TEST_F(GlicInstanceHelperTest, LogsWebHandoffBluebirdOutcome) { + { + GlicInstanceHelper helper(&mock_tab_); + helper.SetIsDaisyChained(DaisyChainSource::kWebHandoff); + helper.OnDaisyChainAction(DaisyChainFirstAction::kInputSubmitted); + } + histogram_tester_.ExpectUniqueSample( + "Glic.Instance.AutoOpenedPanel.FirstAction.WebHandoff", + DaisyChainFirstAction::kInputSubmitted, 1); +} + +TEST_F(GlicInstanceHelperTest, LogsAutoOpenPdfOutcome) { + { + GlicInstanceHelper helper(&mock_tab_); + helper.SetIsDaisyChained(DaisyChainSource::kAutoOpenPdf); + helper.OnDaisyChainAction(DaisyChainFirstAction::kInputSubmitted); + } + histogram_tester_.ExpectUniqueSample( + "Glic.Instance.AutoOpenedPanel.FirstAction.AutoOpenPdf", DaisyChainFirstAction::kInputSubmitted, 1); } @@ -198,23 +237,23 @@ { GlicInstanceHelper helper(&mock_tab_); helper.SetIsDaisyChained(DaisyChainSource::kTabContents); - helper.OnDaisyChainAction(DaisyChainFirstAction::kSidePanelClosed); + helper.OnDaisyChainAction(DaisyChainFirstAction::kTabSwitched); // Ambiguous action start timer. histogram_tester_.ExpectTotalCount( - "Glic.Instance.FirstActionInDaisyChainPanel.TabContents", 0); + "Glic.Instance.AutoOpenedPanel.FirstAction.TabContents", 0); // NoAction should be ignored if we already have an action. helper.OnDaisyChainAction(DaisyChainFirstAction::kNoAction); histogram_tester_.ExpectTotalCount( - "Glic.Instance.FirstActionInDaisyChainPanel.TabContents", 0); + "Glic.Instance.AutoOpenedPanel.FirstAction.TabContents", 0); // Fast forward to trigger timeout. task_environment_.FastForwardBy(base::Seconds(6)); } - // Should log SidePanelClosed. + // Should log TabSwitched histogram_tester_.ExpectUniqueSample( - "Glic.Instance.FirstActionInDaisyChainPanel.TabContents", - DaisyChainFirstAction::kSidePanelClosed, 1); + "Glic.Instance.AutoOpenedPanel.FirstAction.TabContents", + DaisyChainFirstAction::kTabSwitched, 1); } TEST_F(GlicInstanceHelperTest, LogsDaisyChainOutcomeNoActionOnDestruction) { @@ -225,7 +264,7 @@ // Destructor triggers logging. } histogram_tester_.ExpectUniqueSample( - "Glic.Instance.FirstActionInDaisyChainPanel.TabContents", + "Glic.Instance.AutoOpenedPanel.FirstAction.TabContents", DaisyChainFirstAction::kNoAction, 1); } diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/glic_instance_impl.cc chromium-146.0.7680.153/chrome/browser/glic/service/glic_instance_impl.cc --- chromium-146.0.7680.80/chrome/browser/glic/service/glic_instance_impl.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/glic_instance_impl.cc 2026-03-17 19:56:22.000000000 +0000 @@ -393,7 +393,6 @@ if (GlicEnabling::IsTrustFirstOnboardingEnabledForProfile(profile_)) { service_->metrics()->OnTrustFirstOnboardingShown(); } - instance_metrics_.OnToggle(source, options, IsShowing()); EmbedderKey key = GetEmbedderKey(options); // Close instance on toggle when it has an active embedder. diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_helper_metrics.cc chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_helper_metrics.cc --- chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_helper_metrics.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_helper_metrics.cc 2026-03-17 19:56:22.000000000 +0000 @@ -61,7 +61,11 @@ current_metric_action_ = action; - if (action == DaisyChainFirstAction::kSidePanelClosed) { + // Switching tabs or explicitly closing the side panel can be ambiguous, e.g. + // user may cycle through tabs or quickly re-open the panel to finish + // something. We start a timer to wait for a more definitive action. + if (action == DaisyChainFirstAction::kTabSwitched || + action == DaisyChainFirstAction::kSidePanelClosed) { // Ambiguous action. Start/restart timer. flush_timer_.Start(FROM_HERE, base::Seconds(5), this, &GlicInstanceHelperMetrics::FlushMetric); @@ -76,8 +80,9 @@ return; } std::string source_str = GetDaisyChainSourceString(daisy_chain_source_); + base::UmaHistogramEnumeration( - base::StrCat({"Glic.Instance.FirstActionInDaisyChainPanel.", source_str}), + base::StrCat({"Glic.Instance.AutoOpenedPanel.FirstAction.", source_str}), current_metric_action_); metric_finalized_ = true; flush_timer_.Stop(); diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_helper_metrics.h chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_helper_metrics.h --- chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_helper_metrics.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_helper_metrics.h 2026-03-17 19:56:22.000000000 +0000 @@ -19,7 +19,10 @@ kSwitchedConversation = 2, kRecursiveDaisyChain = 3, kSidePanelClosed = 4, - kMaxValue = kSidePanelClosed, + kTabSwitched = 5, + kMaxValue = kTabSwitched, + // TODO(crbug.com/487306585): Add FRE-related first actions too. + }; // LINT.ThenChange(//tools/metrics/histograms/metadata/glic/enums.xml:GlicDaisyChainFirstAction) @@ -39,7 +42,9 @@ void OnBoundToInstance(const InstanceId& instance_id); void OnPinnedByInstance(const InstanceId& instance_id); - // Marks the tab as being part of a daisy chain session. + // TODO(crbug.com/489758590) Overhaul names with "DaisyChain" and maybe rename + // to "AutoOpenPanel"; + // Marks the tab as being part of a daisy chain session. void SetIsDaisyChained(DaisyChainSource source); // Records a significant user action during a daisy chain session. diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_metrics.cc chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_metrics.cc --- chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_metrics.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_metrics.cc 2026-03-17 19:56:22.000000000 +0000 @@ -20,13 +20,20 @@ #include "base/time/time.h" #include "base/timer/timer.h" #include "chrome/browser/glic/glic_metrics.h" +#include "chrome/browser/glic/glic_pref_names.h" #include "chrome/browser/glic/public/context/glic_sharing_manager.h" #include "chrome/browser/glic/service/glic_instance_helper.h" #include "chrome/browser/glic/service/glic_state_tracker.h" #include "chrome/browser/glic/service/metrics/glic_metrics_session_manager.h" #include "chrome/browser/glic/service/metrics/metrics_types.h" #include "chrome/common/chrome_features.h" +#include "components/prefs/pref_service.h" #include "components/tabs/public/tab_interface.h" +#include "content/public/browser/render_frame_host.h" +#include "content/public/browser/web_contents.h" +#include "services/metrics/public/cpp/ukm_builders.h" +#include "services/metrics/public/cpp/ukm_recorder.h" +#include "services/metrics/public/cpp/ukm_source_id.h" namespace glic { @@ -297,6 +304,13 @@ if (!tab) { return; } + if (!initial_entrypoint_.has_value()) { + // If a side panel is opened outside of the ToggleFlow (e.g. for daisy + // chaining on new tab) we would log the default value "Other". + initial_entrypoint_ = + GetEntrypointFromInvocationSource(last_invocation_source_); + } + if (side_panel_open_times_.contains(tab->GetHandle())) { base::UmaHistogramEnumeration( "Glic.Instance.Metrics.Error", @@ -307,6 +321,16 @@ base::RecordAction(base::UserMetricsAction("Glic.Instance.Show.SidePanel")); LogEvent(GlicInstanceEvent::kSidePanelShown); LogEvent(GlicInstanceEvent::kShown); + + if (auto* helper = GlicInstanceHelper::From(tab)) { + if (last_invocation_source_ == + mojom::InvocationSource::kNavigationCapture) { + helper->SetIsDaisyChained(DaisyChainSource::kWebHandoff); + } else if (last_invocation_source_ == + mojom::InvocationSource::kAutoOpenedForPdf) { + helper->SetIsDaisyChained(DaisyChainSource::kAutoOpenPdf); + } + } } void GlicInstanceMetrics::OnShowInFloaty(const ShowOptions& options) { @@ -344,13 +368,19 @@ floaty_open_time_ = base::TimeTicks(); } -void GlicInstanceMetrics::OnSidePanelClosed(tabs::TabInterface* tab) { +void GlicInstanceMetrics::OnSidePanelClosed( + tabs::TabInterface* tab, + GlicInstanceMetrics::CloseReason reason) { if (!tab) { return; } if (auto* helper = GlicInstanceHelper::From(tab)) { - helper->OnDaisyChainAction(DaisyChainFirstAction::kSidePanelClosed); + if (reason == GlicInstanceMetrics::CloseReason::kTabSwitched) { + helper->OnDaisyChainAction(DaisyChainFirstAction::kTabSwitched); + } else { + helper->OnDaisyChainAction(DaisyChainFirstAction::kSidePanelClosed); + } } tabs::TabHandle tab_handle = tab->GetHandle(); @@ -365,6 +395,17 @@ base::UmaHistogramCustomTimes("Glic.Instance.SidePanel.OpenDuration", base::TimeTicks::Now() - it->second, base::Milliseconds(1), base::Hours(1), 50); + + if (!first_side_panel_close_recorded_) { + first_side_panel_close_recorded_ = true; + GlicEntrypoint entrypoint = + initial_entrypoint_.value_or(GlicEntrypoint::kOther); + base::UmaHistogramCustomTimes( + base::StrCat({"Glic.Instance.", GetEntrypointString(entrypoint), + ".SidePanelFirstOpenDuration"}), + base::TimeTicks::Now() - it->second, base::Milliseconds(1), + base::Hours(1), 50); + } side_panel_open_times_.erase(it); } @@ -392,7 +433,18 @@ base::UmaHistogramCustomTimes("Glic.Instance.SidePanel.OpenDuration", base::TimeTicks::Now() - it->second, base::Milliseconds(1), base::Hours(1), 50); + if (!first_side_panel_close_recorded_) { + first_side_panel_close_recorded_ = true; + GlicEntrypoint entrypoint = + initial_entrypoint_.value_or(GlicEntrypoint::kOther); + base::UmaHistogramCustomTimes( + base::StrCat({"Glic.Instance.", GetEntrypointString(entrypoint), + ".SidePanelFirstOpenDuration"}), + base::TimeTicks::Now() - it->second, base::Milliseconds(1), + base::Hours(1), 50); + } side_panel_open_times_.erase(it); + } else { base::UmaHistogramEnumeration( "Glic.Instance.Metrics.Error", @@ -468,12 +520,27 @@ last_web_ui_state_); } +void GlicInstanceMetrics::OnOpen(glic::mojom::InvocationSource source, + const ShowOptions& options) { + invocation_start_time_ = base::TimeTicks::Now(); + last_invocation_source_ = source; + if (!initial_entrypoint_.has_value()) { + initial_entrypoint_ = GetEntrypointFromInvocationSource(source); + base::UmaHistogramEnumeration("Glic.Instance.InitialInvocationSource", + source); + } + if (std::holds_alternative(options.embedder_options)) { + base::UmaHistogramEnumeration("Glic.Instance.Floaty.OpenSource", source); + } else { + base::UmaHistogramEnumeration("Glic.Instance.SidePanel.OpenSource", source); + } +} + void GlicInstanceMetrics::OnToggle(glic::mojom::InvocationSource source, const ShowOptions& options, bool is_showing) { if (!is_showing) { - invocation_start_time_ = base::TimeTicks::Now(); - last_invocation_source_ = source; + OnOpen(source, options); } base::RecordAction(base::UserMetricsAction("Glic.Instance.Toggle")); if (std::holds_alternative(options.embedder_options)) { @@ -591,6 +658,14 @@ base::UmaHistogramCustomTimes( base::StrCat({"Glic.Instance.WebUiLoadTime", visibility_suffix}), load_time, base::Milliseconds(1), base::Seconds(60), 50); + if (initial_entrypoint_.has_value()) { + std::string entrypoint_string = + GetEntrypointString(initial_entrypoint_.value()); + base::UmaHistogramCustomTimes( + base::StrCat({"Glic.Instance.", entrypoint_string, + ".WebUiLoadTime", visibility_suffix}), + load_time, base::Milliseconds(1), base::Seconds(60), 50); + } web_ui_load_start_time_ = base::TimeTicks(); } break; @@ -634,10 +709,22 @@ void GlicInstanceMetrics::LogEvent(GlicInstanceEvent event) { base::UmaHistogramEnumeration("Glic.Instance.EventCounts", event); + if (initial_entrypoint_.has_value()) { + std::string entrypoint_string = + GetEntrypointString(initial_entrypoint_.value()); + base::UmaHistogramEnumeration( + "Glic.Instance." + entrypoint_string + ".EventCounts", event); + } if (event_counts_[event] == 0) { // This is recorded only the first time an event occurs within this sessions // lifetime. base::UmaHistogramEnumeration("Glic.Instance.HadEvent", event); + if (initial_entrypoint_.has_value()) { + std::string entrypoint_string = + GetEntrypointString(initial_entrypoint_.value()); + base::UmaHistogramEnumeration( + "Glic.Instance." + entrypoint_string + ".HadEvent", event); + } } event_counts_[event]++; @@ -674,20 +761,33 @@ } session_manager_.OnUserInputSubmitted(mode); LogEvent(GlicInstanceEvent::kUserInputSubmitted); + base::RecordAction(base::UserMetricsAction("GlicResponseInputSubmit")); + // Reset turn data and start populating it for the new turn being started. + turn_ = {}; turn_.input_submitted_time_ = base::TimeTicks::Now(); + if (sharing_manager_) { + // Use the focused tab for UKM source if available. If no tab is focused, + // leave turn_.chosen_source_id_ as its default of NoURLSourceId. + if (auto* focused = sharing_manager_->GetFocusedTabData().focus()) { + turn_.chosen_source_id_ = + focused->GetContents()->GetPrimaryMainFrame()->GetPageUkmSourceId(); + } + } + turn_.ui_mode_ = current_ui_mode_; turn_.input_mode_ = mode; input_mode_ = mode; inputs_modes_used_.Put(mode); } -void GlicInstanceMetrics::DidRequestContextFromFocusedTab() { +void GlicInstanceMetrics::DidRequestContextFromTab(tabs::TabInterface& tab) { LogEvent(GlicInstanceEvent::kContextRequested); turn_.did_request_context_ = true; } void GlicInstanceMetrics::OnResponseStarted() { LogEvent(GlicInstanceEvent::kResponseStarted); + base::RecordAction(base::UserMetricsAction("GlicResponseStart")); turn_.response_started_ = true; // It doesn't make sense to record response start without input submission. @@ -705,6 +805,8 @@ return; } + base::RecordAction(base::UserMetricsAction("GlicResponse")); + base::TimeDelta start_time = base::TimeTicks::Now() - turn_.input_submitted_time_; base::UmaHistogramMediumTimes("Glic.Turn.ResponseStartTime", start_time); @@ -720,6 +822,12 @@ base::UmaHistogramMediumTimes("Glic.Turn.ResponseStartTime.WithoutContext", start_time); } + + ukm::builders::Glic_Response(turn_.chosen_source_id_) + .SetAttached(turn_.ui_mode_ == EmbedderType::kSidePanel) + .SetInvocationSource(static_cast(last_invocation_source_)) + .SetWebClientMode(static_cast(turn_.input_mode_)) + .Record(ukm::UkmRecorder::Get()); } void GlicInstanceMetrics::OnResponseStopped(mojom::ResponseStopCause cause) { @@ -730,16 +838,21 @@ OnResponseStarted(); } + base::RecordAction(base::UserMetricsAction("GlicResponseStop")); std::string_view cause_suffix; switch (cause) { case mojom::ResponseStopCause::kUser: cause_suffix = ".ByUser"; + base::RecordAction(base::UserMetricsAction("GlicResponseStopByUser")); break; case mojom::ResponseStopCause::kOther: cause_suffix = ".Other"; + base::RecordAction(base::UserMetricsAction("GlicResponseStopOther")); break; case mojom::ResponseStopCause::kUnknown: cause_suffix = ".UnknownCause"; + base::RecordAction( + base::UserMetricsAction("GlicResponseStopUnknownCause")); break; } @@ -835,8 +948,10 @@ switch (reaction_type) { case mojom::MetricUserInputReactionType::kUnknown: + base::RecordAction(base::UserMetricsAction("GlicReactionUnknown")); return; case mojom::MetricUserInputReactionType::kCanned: + base::RecordAction(base::UserMetricsAction("GlicReactionCanned")); if (!last_turn_.reported_reaction_time_canned_) { base::UmaHistogramMediumTimes( "Glic.Turn.FirstReaction.Text.Canned.Time", @@ -845,6 +960,7 @@ } return; case mojom::MetricUserInputReactionType::kModel: + base::RecordAction(base::UserMetricsAction("GlicReactionModelled")); if (!last_turn_.reported_reaction_time_modelled_) { base::UmaHistogramMediumTimes( "Glic.Turn.FirstReaction.Text.Modelled.Time", diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_metrics.h chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_metrics.h --- chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_metrics.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_metrics.h 2026-03-17 19:56:22.000000000 +0000 @@ -130,6 +130,13 @@ GlicInstanceMetrics& operator=(const GlicInstanceMetrics&) = delete; // `GlicInstanceMetricsBackwardsCompatibility`: + void OnUserInputSubmitted(mojom::WebClientMode mode) override; + void DidRequestContextFromTab(tabs::TabInterface& tab) override; + void OnResponseStarted() override; + void OnResponseStopped(mojom::ResponseStopCause cause) override; + void OnTurnCompleted(mojom::WebClientModel model, + base::TimeDelta duration) override; + void OnReaction(mojom::MetricUserInputReactionType reaction_type) override; void OnGlicScrollAttempt() override; void OnGlicScrollComplete(bool success) override; @@ -157,8 +164,10 @@ // Called when the floaty is hidden. void OnFloatyClosed(); + enum class CloseReason { kExplicitlyClosed, kTabSwitched }; + // Called when the side panel is closed. - void OnSidePanelClosed(tabs::TabInterface* tab); + void OnSidePanelClosed(tabs::TabInterface* tab, CloseReason reason); // Called when an embedder is unbound from this instance. void OnUnbindEmbedder(EmbedderKey key); @@ -222,30 +231,21 @@ // Called when GlicInstanceImpl::ResumeActorTask is called. void OnResumeActorTask(); - // Called when GlicInstanceImpl::InterruptActorTask is called. - void InterruptActorTask(); - // Called when GlicInstanceImpl::UninterruptActorTask is called. void UninterruptActorTask(); + // Called when GlicInstanceImpl::InterruptActorTask is called. + void InterruptActorTask(); + // Called when GlicInstanceImpl::WebUiStateChanged is called. void OnWebUiStateChanged(mojom::WebUiState state); // Called when the client is ready to show. void OnClientReady(EmbedderType type); - // Turn metrics. - void OnUserInputSubmitted(mojom::WebClientMode mode); - void DidRequestContextFromFocusedTab(); - void OnResponseStarted(); - void OnResponseStopped(mojom::ResponseStopCause cause); - void OnTurnCompleted(mojom::WebClientModel model, base::TimeDelta duration); - void OnUserResizeStarted(const gfx::Size& start_size); void OnUserResizeEnded(const gfx::Size& end_size); - void OnReaction(mojom::MetricUserInputReactionType reaction_type); - // Records the number of tabs attached as context for a Glic response. void RecordAttachedContextTabCount(int tab_count); @@ -260,8 +260,13 @@ GlicMetricsSessionManager& session_manager() { return session_manager_; } + std::optional initial_entrypoint_for_testing() const { + return initial_entrypoint_; + } + private: friend class GlicMetricsSessionManager; + friend class GlicInstanceMetricsTest; // Stores info scoped to the current turn. These members are cleared in // OnResponseStopped. @@ -277,6 +282,7 @@ EmbedderType ui_mode_ = EmbedderType::kUnknown; mojom::WebClientMode input_mode_ = mojom::WebClientMode::kUnknown; bool pending_scroll_complete_ = false; + ukm::SourceId chosen_source_id_ = ukm::NoURLSourceId(); }; // Logs the given event to the EventTotals histogram, and if the count is 0, @@ -288,6 +294,9 @@ void OnSessionStarted(); void OnSessionFinished(); + // Called when the instance is opened from a closed state. + void OnOpen(glic::mojom::InvocationSource source, const ShowOptions& options); + void OnPinnedTabsChanged( const std::vector& pinned_contents); @@ -317,6 +326,7 @@ // The last invocation source that was used to show the panel. mojom::InvocationSource last_invocation_source_ = mojom::InvocationSource::kUnsupported; + std::optional initial_entrypoint_ = std::nullopt; // Timestamp of last show start. base::TimeTicks invocation_start_time_; base::TimeTicks web_ui_load_start_time_; @@ -341,6 +351,8 @@ base::CallbackListSubscription tab_pinning_status_subscription_; raw_ptr sharing_manager_ = nullptr; + bool first_side_panel_close_recorded_ = false; + // The following variables are used for recording scroll related metrics. // // The number of scroll attempts (tracked per session and reset when the diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_metrics_unittest.cc chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_metrics_unittest.cc --- chromium-146.0.7680.80/chrome/browser/glic/service/metrics/glic_instance_metrics_unittest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/metrics/glic_instance_metrics_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -5,6 +5,7 @@ #include "chrome/browser/glic/service/metrics/glic_instance_metrics.h" #include +#include #include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/user_action_tester.h" @@ -119,7 +120,9 @@ } TEST_F(GlicInstanceMetricsTest, OnSidePanelClosed_WithoutOpening_LogsError) { - metrics_.OnSidePanelClosed(static_cast(&mock_tab_)); + metrics_.OnSidePanelClosed( + static_cast(&mock_tab_), + GlicInstanceMetrics::CloseReason::kExplicitlyClosed); histogram_tester_.ExpectUniqueSample( "Glic.Instance.Metrics.Error", GlicInstanceMetricsError::kSidePanelClosedWithoutOpen, 1); @@ -203,16 +206,263 @@ TEST_F(GlicInstanceMetricsTest, ValidSidePanelFlow_DoesNotLogError) { EXPECT_CALL(mock_tab_, GetTabHandle()).WillRepeatedly(testing::Return(1)); metrics_.OnShowInSidePanel(&mock_tab_); - metrics_.OnSidePanelClosed(&mock_tab_); + metrics_.OnSidePanelClosed( + &mock_tab_, GlicInstanceMetrics::CloseReason::kExplicitlyClosed); histogram_tester_.ExpectTotalCount("Glic.Instance.Metrics.Error", 0); } +TEST_F(GlicInstanceMetricsTest, OnOpen_DoesNotOverrideInitialEntrypoint) { + ShowOptions show_options1{FloatingShowOptions{}}; + metrics_.OnToggle(mojom::InvocationSource::kTopChromeButton, show_options1, + /*is_showing=*/false); + EXPECT_EQ(metrics_.initial_entrypoint_for_testing(), + GlicEntrypoint::kTopChromeButton); + + ShowOptions show_options2{FloatingShowOptions{}}; + metrics_.OnToggle(mojom::InvocationSource::kOsButton, show_options2, + /*is_showing=*/false); + EXPECT_EQ(metrics_.initial_entrypoint_for_testing(), + GlicEntrypoint::kTopChromeButton); +} + +TEST_F(GlicInstanceMetricsTest, InitialInvocationSource_OnlyRecordedOnce) { + ShowOptions show_options{FloatingShowOptions{}}; + metrics_.OnToggle(mojom::InvocationSource::kTopChromeButton, show_options, + /*is_showing=*/false); + histogram_tester_.ExpectUniqueSample( + "Glic.Instance.InitialInvocationSource", + mojom::InvocationSource::kTopChromeButton, 1); + + metrics_.OnToggle(mojom::InvocationSource::kOsButton, show_options, + /*is_showing=*/false); + // Should still be 1 sample of kTopChromeButton. + histogram_tester_.ExpectUniqueSample( + "Glic.Instance.InitialInvocationSource", + mojom::InvocationSource::kTopChromeButton, 1); +} + +TEST_F(GlicInstanceMetricsTest, SidePanelFirstOpenDuration_LoggedOnFirstClose) { + EXPECT_CALL(mock_tab_, GetTabHandle()).WillRepeatedly(testing::Return(1)); + + ShowOptions show_options{SidePanelShowOptions{mock_tab_}}; + metrics_.OnToggle(mojom::InvocationSource::kTopChromeButton, show_options, + /*is_showing=*/false); + metrics_.OnShowInSidePanel(&mock_tab_); + task_environment_.FastForwardBy(base::Minutes(5)); + + metrics_.OnSidePanelClosed( + static_cast(&mock_tab_), + GlicInstanceMetrics::CloseReason::kExplicitlyClosed); + + histogram_tester_.ExpectUniqueTimeSample( + "Glic.Instance.TopChromeButton.SidePanelFirstOpenDuration", + base::Minutes(5), 1); +} + +TEST_F(GlicInstanceMetricsTest, + SidePanelFirstOpenDuration_NotLoggedOnSecondClose) { + EXPECT_CALL(mock_tab_, GetTabHandle()).WillRepeatedly(testing::Return(1)); + + ShowOptions show_options{SidePanelShowOptions{mock_tab_}}; + metrics_.OnToggle(mojom::InvocationSource::kTopChromeButton, show_options, + /*is_showing=*/false); + metrics_.OnShowInSidePanel(&mock_tab_); + + task_environment_.FastForwardBy(base::Minutes(5)); + metrics_.OnSidePanelClosed( + static_cast(&mock_tab_), + GlicInstanceMetrics::CloseReason::kExplicitlyClosed); + + histogram_tester_.ExpectTotalCount( + "Glic.Instance.TopChromeButton.SidePanelFirstOpenDuration", 1); + + metrics_.OnToggle(mojom::InvocationSource::kOsButton, show_options, + /*is_showing=*/false); + metrics_.OnShowInSidePanel(&mock_tab_); + task_environment_.FastForwardBy(base::Minutes(2)); + metrics_.OnSidePanelClosed( + static_cast(&mock_tab_), + GlicInstanceMetrics::CloseReason::kExplicitlyClosed); + + histogram_tester_.ExpectTotalCount( + "Glic.Instance.TopChromeButton.SidePanelFirstOpenDuration", 1); + histogram_tester_.ExpectTotalCount( + "Glic.Instance.OsButton.SidePanelFirstOpenDuration", 0); +} + +TEST_F(GlicInstanceMetricsTest, + SidePanelFirstOpenDuration_ShownWithoutToggleCall) { + metrics_.OnShowInSidePanel(&mock_tab_); + task_environment_.FastForwardBy(base::Minutes(5)); + metrics_.OnSidePanelClosed( + static_cast(&mock_tab_), + GlicInstanceMetrics::CloseReason::kExplicitlyClosed); + + histogram_tester_.ExpectUniqueTimeSample( + "Glic.Instance.Other.SidePanelFirstOpenDuration", base::Minutes(5), 1); +} + +TEST_F(GlicInstanceMetricsTest, InstanceEvents_LogsEventCountsAndHadEvent) { + ShowOptions show_options{FloatingShowOptions{}}; + metrics_.OnToggle(mojom::InvocationSource::kTopChromeButton, show_options, + /*is_showing=*/false); + + // This causes a GlicInstanceEvent::kTurnCompleted to be logged. + metrics_.OnTurnCompleted(mojom::WebClientModel::kActor, + base::Milliseconds(100)); + + histogram_tester_.ExpectBucketCount("Glic.Instance.EventCounts", + GlicInstanceEvent::kTurnCompleted, 1); + histogram_tester_.ExpectBucketCount( + "Glic.Instance.TopChromeButton.EventCounts", + GlicInstanceEvent::kTurnCompleted, 1); + histogram_tester_.ExpectBucketCount("Glic.Instance.HadEvent", + GlicInstanceEvent::kTurnCompleted, 1); + histogram_tester_.ExpectBucketCount("Glic.Instance.TopChromeButton.HadEvent", + GlicInstanceEvent::kTurnCompleted, 1); + + // Second event: only EventCounts increment, HadEvent does not. + metrics_.OnTurnCompleted(mojom::WebClientModel::kActor, + base::Milliseconds(100)); + + histogram_tester_.ExpectBucketCount("Glic.Instance.EventCounts", + GlicInstanceEvent::kTurnCompleted, 2); + histogram_tester_.ExpectBucketCount( + "Glic.Instance.TopChromeButton.EventCounts", + GlicInstanceEvent::kTurnCompleted, 2); + histogram_tester_.ExpectBucketCount("Glic.Instance.HadEvent", + GlicInstanceEvent::kTurnCompleted, 1); + histogram_tester_.ExpectBucketCount("Glic.Instance.TopChromeButton.HadEvent", + GlicInstanceEvent::kTurnCompleted, 1); +} + +TEST_F(GlicInstanceMetricsTest, + InstanceEvents_NoCrashWithoutInitialEntrypoint) { + // We ensure we don't crash before the initial entrypoint gets assigned. + // We bypass OnToggle so initial_entrypoint is null. + histogram_tester_.ExpectTotalCount( + "Glic.Instance.TopChromeButton.EventCounts", 0); + histogram_tester_.ExpectTotalCount("Glic.Instance.TopChromeButton.HadEvent", + 0); + + metrics_.OnReaction(mojom::MetricUserInputReactionType::kModel); + // We don't get entrypoint-specific logs, but we do get generic ones. + histogram_tester_.ExpectBucketCount("Glic.Instance.EventCounts", + GlicInstanceEvent::kReaction, 1); + histogram_tester_.ExpectBucketCount("Glic.Instance.HadEvent", + GlicInstanceEvent::kReaction, 1); +} + +TEST_F(GlicInstanceMetricsTest, LogEvent_LogsUnderInitialEntrypointIfReopened) { + ShowOptions show_options1{FloatingShowOptions{}}; + // First toggle open with TopChromeButton. + metrics_.OnToggle(mojom::InvocationSource::kTopChromeButton, show_options1, + /*is_showing=*/false); + + // A turn completed event should increment TopChromeButton. + metrics_.OnTurnCompleted(mojom::WebClientModel::kActor, + base::Milliseconds(100)); + + histogram_tester_.ExpectBucketCount( + "Glic.Instance.TopChromeButton.EventCounts", + GlicInstanceEvent::kTurnCompleted, 1); + histogram_tester_.ExpectBucketCount("Glic.Instance.TopChromeButton.HadEvent", + GlicInstanceEvent::kTurnCompleted, 1); + + // Simulate toggling with a different source later on. + ShowOptions show_options2{FloatingShowOptions{}}; + metrics_.OnToggle(mojom::InvocationSource::kOsButton, show_options2, + /*is_showing=*/true); + + // Another turn completed event. + metrics_.OnTurnCompleted(mojom::WebClientModel::kActor, + base::Milliseconds(100)); + + // Should continue to log under the original TopChromeButton entrypoint. + histogram_tester_.ExpectBucketCount( + "Glic.Instance.TopChromeButton.EventCounts", + GlicInstanceEvent::kTurnCompleted, 2); + histogram_tester_.ExpectBucketCount("Glic.Instance.TopChromeButton.HadEvent", + GlicInstanceEvent::kTurnCompleted, 1); + + // Should NOT log under OsButton. + histogram_tester_.ExpectBucketCount("Glic.Instance.OsButton.EventCounts", + GlicInstanceEvent::kTurnCompleted, 0); + histogram_tester_.ExpectBucketCount("Glic.Instance.OsButton.HadEvent", + GlicInstanceEvent::kTurnCompleted, 0); +} + +TEST_F(GlicInstanceMetricsTest, WebUiLoadTime_Visible) { + ShowOptions show_options{FloatingShowOptions{}}; + metrics_.OnToggle(mojom::InvocationSource::kTopChromeButton, show_options, + /*is_showing=*/false); + metrics_.OnVisibilityChanged(true); + + metrics_.OnWebUiStateChanged(mojom::WebUiState::kBeginLoad); + task_environment_.FastForwardBy(base::Milliseconds(300)); + metrics_.OnWebUiStateChanged(mojom::WebUiState::kReady); + + histogram_tester_.ExpectUniqueTimeSample( + "Glic.Instance.WebUiLoadTime.Visible", base::Milliseconds(300), 1); + histogram_tester_.ExpectUniqueTimeSample( + "Glic.Instance.TopChromeButton.WebUiLoadTime.Visible", + base::Milliseconds(300), 1); +} + +TEST_F(GlicInstanceMetricsTest, WebUiLoadTime_Nonvisible) { + ShowOptions show_options{FloatingShowOptions{}}; + metrics_.OnToggle(mojom::InvocationSource::kTopChromeButton, show_options, + /*is_showing=*/false); + // Do not call OnVisibilityChanged(true) so it defaults to nonvisible. + + metrics_.OnWebUiStateChanged(mojom::WebUiState::kBeginLoad); + task_environment_.FastForwardBy(base::Milliseconds(150)); + metrics_.OnWebUiStateChanged(mojom::WebUiState::kReady); + + histogram_tester_.ExpectUniqueTimeSample( + "Glic.Instance.WebUiLoadTime.Nonvisible", base::Milliseconds(150), 1); + histogram_tester_.ExpectUniqueTimeSample( + "Glic.Instance.TopChromeButton.WebUiLoadTime.Nonvisible", + base::Milliseconds(150), 1); +} + TEST_F(GlicInstanceMetricsTest, ValidResponseFlow_DoesNotLogError) { metrics_.OnVisibilityChanged(true); metrics_.OnUserInputSubmitted(mojom::WebClientMode::kText); metrics_.OnResponseStarted(); metrics_.OnResponseStopped(mojom::ResponseStopCause::kUser); histogram_tester_.ExpectTotalCount("Glic.Instance.Metrics.Error", 0); + + EXPECT_EQ(1, user_action_tester_.GetActionCount("GlicResponseInputSubmit")); + EXPECT_EQ(1, user_action_tester_.GetActionCount("GlicResponseStart")); + EXPECT_EQ(1, user_action_tester_.GetActionCount("GlicResponse")); + EXPECT_EQ(1, user_action_tester_.GetActionCount("GlicResponseStop")); + EXPECT_EQ(1, user_action_tester_.GetActionCount("GlicResponseStopByUser")); +} + +TEST_F(GlicInstanceMetricsTest, OnTurnCompleted_LogsHistograms) { + metrics_.OnTurnCompleted(mojom::WebClientModel::kDefault, + base::Milliseconds(100)); + histogram_tester_.ExpectUniqueTimeSample("Glic.Turn.Duration.Default", + base::Milliseconds(100), 1); + + metrics_.OnTurnCompleted(mojom::WebClientModel::kActor, + base::Milliseconds(200)); + histogram_tester_.ExpectUniqueTimeSample("Glic.Turn.Duration.Actor", + base::Milliseconds(200), 1); +} + +TEST_F(GlicInstanceMetricsTest, OnReaction_LogsUserActions) { + metrics_.OnVisibilityChanged(true); + metrics_.OnUserInputSubmitted(mojom::WebClientMode::kText); + metrics_.OnResponseStarted(); + metrics_.OnResponseStopped(mojom::ResponseStopCause::kUnknown); + + metrics_.OnReaction(mojom::MetricUserInputReactionType::kCanned); + EXPECT_EQ(1, user_action_tester_.GetActionCount("GlicReactionCanned")); + + metrics_.OnReaction(mojom::MetricUserInputReactionType::kModel); + EXPECT_EQ(1, user_action_tester_.GetActionCount("GlicReactionModelled")); } TEST_F(GlicInstanceMetricsTest, Floaty_OpenCloseClose_LogsError) { @@ -228,8 +478,10 @@ TEST_F(GlicInstanceMetricsTest, SidePanel_OpenCloseClose_LogsError) { EXPECT_CALL(mock_tab_, GetTabHandle()).WillRepeatedly(testing::Return(1)); metrics_.OnShowInSidePanel(&mock_tab_); - metrics_.OnSidePanelClosed(&mock_tab_); - metrics_.OnSidePanelClosed(&mock_tab_); + metrics_.OnSidePanelClosed( + &mock_tab_, GlicInstanceMetrics::CloseReason::kExplicitlyClosed); + metrics_.OnSidePanelClosed( + &mock_tab_, GlicInstanceMetrics::CloseReason::kExplicitlyClosed); histogram_tester_.ExpectUniqueSample( "Glic.Instance.Metrics.Error", GlicInstanceMetricsError::kSidePanelClosedWithoutOpen, 1); diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/metrics/metrics_types.cc chromium-146.0.7680.153/chrome/browser/glic/service/metrics/metrics_types.cc --- chromium-146.0.7680.80/chrome/browser/glic/service/metrics/metrics_types.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/metrics/metrics_types.cc 2026-03-17 19:56:22.000000000 +0000 @@ -16,9 +16,86 @@ return "ActorAddTab"; case DaisyChainSource::kNewTab: return "NewTab"; + case DaisyChainSource::kWebHandoff: + return "WebHandoff"; + case DaisyChainSource::kAutoOpenPdf: + return "AutoOpenPdf"; default: return "Unknown"; } } +GlicEntrypoint GetEntrypointFromInvocationSource( + mojom::InvocationSource source) { + switch (source) { + // OsButton sources bundles as one. + case glic::mojom::InvocationSource::kOsButton: + case glic::mojom::InvocationSource::kOsButtonMenu: + return GlicEntrypoint::kOsButton; + case glic::mojom::InvocationSource::kOsHotkey: + return GlicEntrypoint::kOsHotkey; + case glic::mojom::InvocationSource::kTopChromeButton: + return GlicEntrypoint::kTopChromeButton; + case glic::mojom::InvocationSource::kNudge: + return GlicEntrypoint::kNudge; + case glic::mojom::InvocationSource::kThreeDotsMenu: + return GlicEntrypoint::kThreeDotsMenu; + case glic::mojom::InvocationSource::kWhatsNew: + return GlicEntrypoint::kWhatsNew; + case glic::mojom::InvocationSource::kSharedTab: + return GlicEntrypoint::kSharedTab; + case glic::mojom::InvocationSource::kSharedImage: + return GlicEntrypoint::kSharedImage; + case glic::mojom::InvocationSource::kSkills: + return GlicEntrypoint::kSkills; + case glic::mojom::InvocationSource::kAutoOpenedByContextualCue: + return GlicEntrypoint::kAutoOpenedByContextualCue; + case glic::mojom::InvocationSource::kPdfSummarizeButton: + return GlicEntrypoint::kPdfSummarizeButton; + case glic::mojom::InvocationSource::kNavigationCapture: + return GlicEntrypoint::kNavigationCapture; + case glic::mojom::InvocationSource::kAutoOpenedForPdf: + return GlicEntrypoint::kAutoOpenedForPdf; + default: + // All other ones, including mojom::InvocationSource::kUnsupported. + return GlicEntrypoint::kOther; + } +} + +std::string GetEntrypointString(GlicEntrypoint entrypoint) { + switch (entrypoint) { + case GlicEntrypoint::kAutoOpenedByContextualCue: + return "AutoOpenedByContextualCue"; + case GlicEntrypoint::kAutoOpenedForPdf: + return "AutoOpenedForPdf"; + case GlicEntrypoint::kIph: + return "Iph"; + case GlicEntrypoint::kNavigationCapture: + return "NavigationCapture"; + case GlicEntrypoint::kNudge: + return "Nudge"; + case GlicEntrypoint::kOsButton: + return "OsButton"; + case GlicEntrypoint::kOsHotkey: + return "OsHotkey"; + case GlicEntrypoint::kOther: + return "Other"; + case GlicEntrypoint::kPdfSummarizeButton: + return "PdfSummarizeButton"; + case GlicEntrypoint::kSharedImage: + return "SharedImage"; + case GlicEntrypoint::kSharedTab: + return "SharedTab"; + case GlicEntrypoint::kSkills: + return "Skills"; + case GlicEntrypoint::kThreeDotsMenu: + return "ThreeDotsMenu"; + case GlicEntrypoint::kTopChromeButton: + return "TopChromeButton"; + case GlicEntrypoint::kWhatsNew: + return "WhatsNew"; + default: + return "Other"; + } +} } // namespace glic diff -Nru chromium-146.0.7680.80/chrome/browser/glic/service/metrics/metrics_types.h chromium-146.0.7680.153/chrome/browser/glic/service/metrics/metrics_types.h --- chromium-146.0.7680.80/chrome/browser/glic/service/metrics/metrics_types.h 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/service/metrics/metrics_types.h 2026-03-17 19:56:22.000000000 +0000 @@ -7,6 +7,8 @@ #include +#include "chrome/browser/glic/host/glic.mojom.h" + namespace glic { enum class DaisyChainSource { @@ -15,11 +17,39 @@ kTabContents = 2, kActorAddTab = 3, kNewTab = 4, - kMaxValue = kNewTab, + kWebHandoff = 5, + kAutoOpenPdf = 6, + kMaxValue = kAutoOpenPdf, }; std::string GetDaisyChainSourceString(DaisyChainSource source); +// GlicEntrypoint defines entrypoints interesting from growth metrics +// perspective. It's a subset of InvocationSource, and more. +// LINT.IfChange(GlicEntrypoint) +enum class GlicEntrypoint { + kOsButton = 0, + kOsHotkey = 1, + kTopChromeButton = 2, + kNudge = 3, + kThreeDotsMenu = 4, + kWhatsNew = 5, + kSharedTab = 6, + kSharedImage = 7, + kSkills = 8, + kAutoOpenedByContextualCue = 9, + kPdfSummarizeButton = 10, + kNavigationCapture = 11, + kAutoOpenedForPdf = 12, + kIph = 13, + kOther = 14, + kMaxValue = kOther, +}; +// LINT.ThenChange(//tools/metrics/histograms/metadata/glic/enums.xml:GlicEntrypoint) + +GlicEntrypoint GetEntrypointFromInvocationSource( + mojom::InvocationSource source); +std::string GetEntrypointString(GlicEntrypoint entrypoint); } // namespace glic #endif // CHROME_BROWSER_GLIC_SERVICE_METRICS_METRICS_TYPES_H_ diff -Nru chromium-146.0.7680.80/chrome/browser/glic/widget/glic_side_panel_ui.cc chromium-146.0.7680.153/chrome/browser/glic/widget/glic_side_panel_ui.cc --- chromium-146.0.7680.80/chrome/browser/glic/widget/glic_side_panel_ui.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/widget/glic_side_panel_ui.cc 2026-03-17 19:56:22.000000000 +0000 @@ -183,7 +183,11 @@ // Showing only happens through glic entrypoint, hiding can also be triggered // by side panel coordinator when replacing glic with another entry. if (state != GlicSidePanelCoordinator::State::kShown && tab_) { - instance_metrics_->OnSidePanelClosed(tab_.get()); + GlicInstanceMetrics::CloseReason reason = + state == GlicSidePanelCoordinator::State::kBackgrounded + ? GlicInstanceMetrics::CloseReason::kTabSwitched + : GlicInstanceMetrics::CloseReason::kExplicitlyClosed; + instance_metrics_->OnSidePanelClosed(tab_.get(), reason); panel_state_.kind = mojom::PanelStateKind::kHidden; delegate_->NotifyPanelStateChanged(); // NOTE: `this` will be destroyed after this call. diff -Nru chromium-146.0.7680.80/chrome/browser/glic/widget/glic_side_panel_ui_android.cc chromium-146.0.7680.153/chrome/browser/glic/widget/glic_side_panel_ui_android.cc --- chromium-146.0.7680.80/chrome/browser/glic/widget/glic_side_panel_ui_android.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/glic/widget/glic_side_panel_ui_android.cc 2026-03-17 19:56:22.000000000 +0000 @@ -206,7 +206,11 @@ void GlicSidePanelUi::SidePanelStateChanged( GlicSidePanelCoordinator::State state) { if (state != GlicSidePanelCoordinator::State::kShown && tab_) { - instance_metrics_->OnSidePanelClosed(tab_.get()); + GlicInstanceMetrics::CloseReason reason = + state == GlicSidePanelCoordinator::State::kBackgrounded + ? GlicInstanceMetrics::CloseReason::kTabSwitched + : GlicInstanceMetrics::CloseReason::kExplicitlyClosed; + instance_metrics_->OnSidePanelClosed(tab_.get(), reason); panel_state_.kind = mojom::PanelStateKind::kHidden; delegate_->NotifyPanelStateChanged(); // NOTE: `this` will be destroyed after this call. diff -Nru chromium-146.0.7680.80/chrome/browser/new_tab_page/new_tab_page_realbox_interactive_uitest.cc chromium-146.0.7680.153/chrome/browser/new_tab_page/new_tab_page_realbox_interactive_uitest.cc --- chromium-146.0.7680.80/chrome/browser/new_tab_page/new_tab_page_realbox_interactive_uitest.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/new_tab_page/new_tab_page_realbox_interactive_uitest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -84,6 +84,8 @@ .WillByDefault(testing::Return(true)); ON_CALL(*mock_aim_eligibility_service, IsServerEligibilityEnabled()) .WillByDefault(testing::Return(true)); + ON_CALL(*mock_aim_eligibility_service, IsFuseboxEligible()) + .WillByDefault(testing::Return(true)); return std::move(mock_aim_eligibility_service); } diff -Nru chromium-146.0.7680.80/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.cc chromium-146.0.7680.153/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.cc --- chromium-146.0.7680.80/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.cc 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.cc 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,101 @@ +// Copyright 2026 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/page_load_metrics/observers/top_chrome_webui_metrics_observer.h" + +#include +#include +#include + +#include "base/metrics/histogram_functions.h" +#include "base/strings/strcat.h" +#include "chrome/browser/ui/webui/top_chrome/webui_contents_preload_manager.h" +#include "components/page_load_metrics/browser/page_load_metrics_observer_delegate.h" +#include "components/page_load_metrics/browser/page_load_metrics_util.h" +#include "content/public/common/url_constants.h" + +namespace { + +std::string GetMetricName(const std::string& webui_name, + const std::string& metric_name) { + return base::StrCat({"TopChromeUI.", webui_name, ".", metric_name}); +} + +// This duplicates logic from +// chrome/browser/page_load_metrics/observers/non_tab_webui_page_load_metrics_observer.cc +// TODO(crbug.com/491337216): Refactor this to a common location. +base::TimeDelta GetBackgroundTime( + const page_load_metrics::PageLoadMetricsObserverDelegate& delegate) { + const std::optional request_time = + WebUIContentsPreloadManager::GetInstance()->GetRequestTime( + delegate.GetWebContents()); + if (!request_time.has_value()) { + // The WebUIContentsPreloadManager may not have a record of when the user + // opened the WebUI. This may happen in unit tests, or if a non-tab WebUI + // is opened in a tab for debugging purposes. In these cases, we define the + // "background time" to be zero. + return base::TimeDelta(); + } + + const base::TimeTicks last_navigation_time = delegate.GetNavigationStart(); + // The request time is earlier than the last navigation time if the WebUI + // refreshes or redirects. In this case the WebUI is never in the background + // since last navigation. + const base::TimeDelta background_time = + std::max(*request_time - last_navigation_time, base::TimeDelta()); + return background_time; +} + +} // namespace + +TopChromeWebUIMetricsObserver::TopChromeWebUIMetricsObserver( + std::string webui_name) + : webui_name_(std::move(webui_name)) {} + +TopChromeWebUIMetricsObserver::~TopChromeWebUIMetricsObserver() = default; + +void TopChromeWebUIMetricsObserver::OnFirstContentfulPaintInPage( + const page_load_metrics::mojom::PageLoadTiming& timing) { + CHECK(timing.paint_timing->first_contentful_paint.has_value()); + + // Time from request to FCP. This metric disregards time spent in the + // background, which is non-zero when the WebUI is preloaded. + base::TimeDelta first_contentful_paint = + timing.paint_timing->first_contentful_paint.value(); + base::TimeDelta background_time = GetBackgroundTime(GetDelegate()); + PAGE_LOAD_SHORT_HISTOGRAM( + GetMetricName(webui_name_, "RequestToFirstContentfulPaint"), + first_contentful_paint - background_time); +} + +page_load_metrics::PageLoadMetricsObserver::ObservePolicy +TopChromeWebUIMetricsObserver::OnFencedFramesStart( + content::NavigationHandle* navigation_handle, + const GURL& currently_committed_url) { + return STOP_OBSERVING; +} + +page_load_metrics::PageLoadMetricsObserver::ObservePolicy +TopChromeWebUIMetricsObserver::OnPrerenderStart( + content::NavigationHandle* navigation_handle, + const GURL& currently_committed_url) { + return STOP_OBSERVING; +} + +page_load_metrics::PageLoadMetricsObserver::ObservePolicy +TopChromeWebUIMetricsObserver::ShouldObserveScheme(const GURL& url) const { + if (url.SchemeIs(content::kChromeUIScheme) || + url.SchemeIs(content::kChromeUIUntrustedScheme)) { + return CONTINUE_OBSERVING; + } + return STOP_OBSERVING; +} + +// static +void TopChromeWebUIMetricsObserver::RecordFirstContentfulPaint( + const std::string& webui_name, + base::TimeDelta duration) { + PAGE_LOAD_SHORT_HISTOGRAM( + GetMetricName(webui_name, "RequestToFirstContentfulPaint"), duration); +} diff -Nru chromium-146.0.7680.80/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.h chromium-146.0.7680.153/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.h --- chromium-146.0.7680.80/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.h 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.h 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,58 @@ +// Copyright 2026 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_TOP_CHROME_WEBUI_METRICS_OBSERVER_H_ +#define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_TOP_CHROME_WEBUI_METRICS_OBSERVER_H_ + +#include + +#include "base/time/time.h" +#include "components/page_load_metrics/browser/page_load_metrics_observer.h" +#include "url/gurl.h" + +namespace content { +class NavigationHandle; +} + +// Records generic performance metrics for TopChrome UI. These metrics are +// designed to be comparable between WebUI and native implementations, e.g. +// TopChromeUI.OmniboxPopup.RequestToFirstContentfulPaint. +// Any TopChrome UI that intends to use this observer must call from both the +// Views and WebUI implementations if they both exist. +// +// This class is different from NonTabPageLoadMetricsObserver which only records +// metrics for all non-tab WebUI, and the metrics names it records are not +// View-compatible. +class TopChromeWebUIMetricsObserver + : public page_load_metrics::PageLoadMetricsObserver { + public: + explicit TopChromeWebUIMetricsObserver(std::string webui_name); + + TopChromeWebUIMetricsObserver(const TopChromeWebUIMetricsObserver&) = delete; + TopChromeWebUIMetricsObserver& operator=( + const TopChromeWebUIMetricsObserver&) = delete; + + ~TopChromeWebUIMetricsObserver() override; + + // page_load_metrics::PageLoadMetricsObserver: + void OnFirstContentfulPaintInPage( + const page_load_metrics::mojom::PageLoadTiming& timing) override; + page_load_metrics::PageLoadMetricsObserver::ObservePolicy OnFencedFramesStart( + content::NavigationHandle* navigation_handle, + const GURL& currently_committed_url) override; + page_load_metrics::PageLoadMetricsObserver::ObservePolicy OnPrerenderStart( + content::NavigationHandle* navigation_handle, + const GURL& currently_committed_url) override; + page_load_metrics::PageLoadMetricsObserver::ObservePolicy ShouldObserveScheme( + const GURL& url) const override; + + // Emits the RequestToFirstContentfulPaint static histogram for native UIs. + static void RecordFirstContentfulPaint(const std::string& webui_name, + base::TimeDelta duration); + + private: + const std::string webui_name_; +}; + +#endif // CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_TOP_CHROME_WEBUI_METRICS_OBSERVER_H_ diff -Nru chromium-146.0.7680.80/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer_unittest.cc chromium-146.0.7680.153/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer_unittest.cc --- chromium-146.0.7680.80/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer_unittest.cc 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer_unittest.cc 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,51 @@ +// Copyright 2026 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/page_load_metrics/observers/top_chrome_webui_metrics_observer.h" + +#include "base/test/metrics/histogram_tester.h" +#include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h" +#include "components/page_load_metrics/browser/page_load_tracker.h" +#include "components/page_load_metrics/common/test/page_load_metrics_test_util.h" + +class TopChromeWebUIMetricsObserverTest + : public page_load_metrics::PageLoadMetricsObserverTestHarness { + protected: + void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { + tracker->AddObserver( + std::make_unique("TestWebUI")); + } + + bool IsNonTabWebUI() const override { return true; } +}; + +TEST_F(TopChromeWebUIMetricsObserverTest, RecordsMetrics) { + page_load_metrics::mojom::PageLoadTiming timing; + page_load_metrics::InitPageLoadTimingForTest(&timing); + timing.navigation_start = base::Time::FromSecondsSinceUnixEpoch(1); + timing.parse_timing->parse_start = base::Milliseconds(1); + timing.paint_timing->first_paint = base::Milliseconds(5); + timing.paint_timing->first_contentful_paint = base::Milliseconds(10); + PopulateRequiredTimingFields(&timing); + NavigateAndCommit(GURL("chrome://version")); + + tester()->SimulateTimingUpdate(timing); + + // Navigate again to force logging FCP. + tester()->NavigateToUntrackedUrl(); + + tester()->histogram_tester().ExpectUniqueTimeSample( + "TopChromeUI.TestWebUI.RequestToFirstContentfulPaint", + base::Milliseconds(10), 1); +} + +TEST_F(TopChromeWebUIMetricsObserverTest, StaticHelperRecordsMetrics) { + base::HistogramTester histogram_tester; + TopChromeWebUIMetricsObserver::RecordFirstContentfulPaint( + "TestNativeUI", base::Milliseconds(15)); + + histogram_tester.ExpectUniqueTimeSample( + "TopChromeUI.TestNativeUI.RequestToFirstContentfulPaint", + base::Milliseconds(15), 1); +} diff -Nru chromium-146.0.7680.80/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc chromium-146.0.7680.153/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc --- chromium-146.0.7680.80/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc 2026-03-17 19:56:22.000000000 +0000 @@ -10,6 +10,7 @@ #include "base/functional/bind.h" #include "build/build_config.h" +#include "build/buildflag.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/heavy_ad_intervention/heavy_ad_service_factory.h" #include "chrome/browser/history/history_service_factory.h" @@ -79,8 +80,11 @@ #if !BUILDFLAG(IS_ANDROID) #include "chrome/browser/page_load_metrics/observers/initial_webui_page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/observers/non_tab_webui_page_load_metrics_observer.h" +#include "chrome/browser/page_load_metrics/observers/top_chrome_webui_metrics_observer.h" #include "chrome/browser/ui/waap/waap_utils.h" #include "chrome/browser/ui/webui/top_chrome/top_chrome_webui_config.h" +#include "chrome/browser/ui/webui/omnibox_popup/omnibox_popup_ui.h" +#include "chrome/common/webui_url_constants.h" #endif #if BUILDFLAG(IS_CHROMEOS) @@ -182,6 +186,11 @@ tracker->AddObserver(std::move(ukm_observer)); } } + if (navigation_handle->GetURL().host() == + chrome::kChromeUIOmniboxPopupHost) { + tracker->AddObserver(std::make_unique( + std::string(OmniboxPopupUI::GetWebUIName()))); + } return; } #endif diff -Nru chromium-146.0.7680.80/chrome/browser/resources/ash/settings/BUILD.gn chromium-146.0.7680.153/chrome/browser/resources/ash/settings/BUILD.gn --- chromium-146.0.7680.80/chrome/browser/resources/ash/settings/BUILD.gn 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/resources/ash/settings/BUILD.gn 2026-03-17 19:56:22.000000000 +0000 @@ -55,6 +55,8 @@ "controls/v2/settings_slider_v2.ts", "controls/v2/settings_toggle_v2.ts", "crostini_page/bruschetta_subpage.ts", + "crostini_page/crostini_arc_adb.ts", + "crostini_page/crostini_arc_adb_confirmation_dialog.ts", "crostini_page/crostini_disk_resize_confirmation_dialog.ts", "crostini_page/crostini_disk_resize_dialog.ts", "crostini_page/crostini_export_import.ts", diff -Nru chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.html chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.html --- chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.html 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.html 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,38 @@ + +
+
+ $i18n{crostiniArcAdbDescription} +
+
+
+
+ $i18n{crostiniArcAdbLabel} + +
+ + + + +
+ + diff -Nru chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.ts chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.ts --- chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.ts 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb.ts 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,203 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview + * 'crostini-arc-adb' is the ARC adb sideloading subpage for Crostini. + */ + +import 'chrome://resources/ash/common/cr_elements/cr_button/cr_button.js'; +import 'chrome://resources/ash/common/cr_elements/cr_toggle/cr_toggle.js'; +import 'chrome://resources/ash/common/cr_elements/policy/cr_policy_indicator.js'; +import './crostini_arc_adb_confirmation_dialog.js'; +import 'chrome://resources/ash/common/cr_elements/localized_link/localized_link.js'; +import '../settings_shared.css.js'; + +import type {CrToggleElement} from 'chrome://resources/ash/common/cr_elements/cr_toggle/cr_toggle.js'; +import {I18nMixin} from 'chrome://resources/ash/common/cr_elements/i18n_mixin.js'; +import {CrPolicyIndicatorType} from 'chrome://resources/ash/common/cr_elements/policy/cr_policy_indicator_mixin.js'; +import {WebUiListenerMixin} from 'chrome://resources/ash/common/cr_elements/web_ui_listener_mixin.js'; +import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {DeepLinkingMixin} from '../common/deep_linking_mixin.js'; +import {RouteObserverMixin} from '../common/route_observer_mixin.js'; +import type {PrefsState} from '../common/types.js'; +import {Setting} from '../mojom-webui/setting.mojom-webui.js'; +import {type Route, routes} from '../router.js'; + +import {getTemplate} from './crostini_arc_adb.html.js'; +import {type CrostiniBrowserProxy, CrostiniBrowserProxyImpl} from './crostini_browser_proxy.js'; + +export interface SettingsCrostiniArcAdbElement { + $: { + arcAdbEnabledButton: CrToggleElement, + }; +} + +const SettingsCrostiniArcAdbElementBase = DeepLinkingMixin( + RouteObserverMixin(WebUiListenerMixin(I18nMixin(PolymerElement)))); + +export class SettingsCrostiniArcAdbElement extends + SettingsCrostiniArcAdbElementBase { + static get is() { + return 'settings-crostini-arc-adb'; + } + + static get template() { + return getTemplate(); + } + + static get properties() { + return { + prefs: { + type: Object, + notify: true, + }, + + arcAdbEnabled_: { + type: Boolean, + value: false, + }, + + /** + * Whether the device requires a powerwash first (to define nvram for boot + * lockbox). This happens to devices initialized through OOBE flow before + * M74. + */ + arcAdbNeedPowerwash_: { + type: Boolean, + value: false, + }, + + isOwnerProfile_: { + type: Boolean, + value() { + return loadTimeData.getBoolean('isOwnerProfile'); + }, + }, + + isEnterpriseManaged_: { + type: Boolean, + value() { + return loadTimeData.getBoolean('isEnterpriseManaged'); + }, + }, + + canChangeAdbSideloading_: { + type: Boolean, + value: false, + }, + + showConfirmationDialog_: { + type: Boolean, + value: false, + }, + }; + } + + prefs: PrefsState; + + // DeepLinkingMixin override + override supportedSettingIds = new Set([ + Setting.kCrostiniAdbDebugging, + ]); + + private arcAdbEnabled_: boolean; + private arcAdbNeedPowerwash_: boolean; + private browserProxy_: CrostiniBrowserProxy; + private canChangeAdbSideloading_: boolean; + private isEnterpriseManaged_: boolean; + private isOwnerProfile_: boolean; + private showConfirmationDialog_: boolean; + + constructor() { + super(); + + this.browserProxy_ = CrostiniBrowserProxyImpl.getInstance(); + } + + override connectedCallback(): void { + super.connectedCallback(); + + this.addWebUiListener( + 'crostini-arc-adb-sideload-status-changed', + (enabled: boolean, needPowerwash: boolean) => { + this.arcAdbEnabled_ = enabled; + this.arcAdbNeedPowerwash_ = needPowerwash; + }); + + this.addWebUiListener( + 'crostini-can-change-arc-adb-sideload-changed', + (canChangeArcAdbSideloading: boolean) => { + this.canChangeAdbSideloading_ = canChangeArcAdbSideloading; + }); + + this.browserProxy_.requestArcAdbSideloadStatus(); + + this.browserProxy_.getCanChangeArcAdbSideloading(); + } + + override currentRouteChanged(route: Route): void { + // Does not apply to this page. + if (route !== routes.CROSTINI_ANDROID_ADB) { + return; + } + + this.attemptDeepLink(); + } + + /** + * Returns whether the toggle is changeable by the user. See + * CrostiniFeatures::CanChangeAdbSideloading(). Note that the actual + * guard should be in the browser, otherwise a user may bypass this check by + * inspecting Settings with developer tools. + * @return Whether the control should be disabled. + */ + private shouldDisable_(): boolean { + return !this.canChangeAdbSideloading_ || this.arcAdbNeedPowerwash_; + } + + /** + * @return Which policy indicator to show (if any). + */ + private getPolicyIndicatorType_(): CrPolicyIndicatorType { + if (this.isEnterpriseManaged_) { + if (this.canChangeAdbSideloading_) { + return CrPolicyIndicatorType.NONE; + } else { + return CrPolicyIndicatorType.DEVICE_POLICY; + } + } else if (!this.isOwnerProfile_) { + return CrPolicyIndicatorType.OWNER; + } else { + return CrPolicyIndicatorType.NONE; + } + } + + /** + * @return Which action to perform when the toggle is changed. + */ + private getToggleAction_(): string { + return this.arcAdbEnabled_ ? 'disable' : 'enable'; + } + + private onArcAdbToggleChanged_(): void { + this.showConfirmationDialog_ = true; + } + + private onConfirmationDialogClose_(): void { + this.showConfirmationDialog_ = false; + this.$.arcAdbEnabledButton.checked = this.arcAdbEnabled_; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'settings-crostini-arc-adb': SettingsCrostiniArcAdbElement; + } +} + +customElements.define( + SettingsCrostiniArcAdbElement.is, SettingsCrostiniArcAdbElement); diff -Nru chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.html chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.html --- chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.html 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.html 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,23 @@ + + + + + + +
+ + $i18n{cancel} + + + $i18n{crostiniArcAdbRestartButton} + +
+
diff -Nru chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.ts chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.ts --- chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.ts 1970-01-01 00:00:00.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_arc_adb_confirmation_dialog.ts 2026-03-17 19:56:22.000000000 +0000 @@ -0,0 +1,97 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview 'settings-crostini-arc-adb-confirmation-dialog' is a component + * to confirm for enabling or disabling adb sideloading. After the confirmation, + * reboot will happens. + */ +import 'chrome://resources/ash/common/cr_elements/cr_button/cr_button.js'; +import 'chrome://resources/ash/common/cr_elements/cr_dialog/cr_dialog.js'; +import '../settings_shared.css.js'; + +import type {CrDialogElement} from 'chrome://resources/ash/common/cr_elements/cr_dialog/cr_dialog.js'; +import {assertNotReached} from 'chrome://resources/js/assert.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {recordSettingChange} from '../metrics_recorder.js'; +import {Setting} from '../mojom-webui/setting.mojom-webui.js'; + +import {getTemplate} from './crostini_arc_adb_confirmation_dialog.html.js'; +import {type CrostiniBrowserProxy, CrostiniBrowserProxyImpl} from './crostini_browser_proxy.js'; + +interface SettingsCrostiniArcAdbConfirmationDialogElement { + $: { + dialog: CrDialogElement, + }; +} + +class SettingsCrostiniArcAdbConfirmationDialogElement extends PolymerElement { + static get is() { + return 'settings-crostini-arc-adb-confirmation-dialog'; + } + + static get template() { + return getTemplate(); + } + + static get properties() { + return { + /** An attribute that indicates the action for the confirmation */ + action: { + type: String, + }, + }; + } + + action: string; + private browserProxy_: CrostiniBrowserProxy; + + constructor() { + super(); + + this.browserProxy_ = CrostiniBrowserProxyImpl.getInstance(); + } + + override connectedCallback(): void { + super.connectedCallback(); + + this.$.dialog.showModal(); + } + + private isEnabling_(): boolean { + return this.action === 'enable'; + } + + private isDisabling_(): boolean { + return this.action === 'disable'; + } + + private onCancelClick_(): void { + this.$.dialog.close(); + } + + private onRestartClick_(): void { + if (this.isEnabling_()) { + this.browserProxy_.enableArcAdbSideload(); + recordSettingChange(Setting.kCrostiniAdbDebugging, {boolValue: true}); + } else if (this.isDisabling_()) { + this.browserProxy_.disableArcAdbSideload(); + recordSettingChange(Setting.kCrostiniAdbDebugging, {boolValue: false}); + } else { + assertNotReached(); + } + } +} + +declare global { + interface HTMLElementTagNameMap { + 'settings-crostini-arc-adb-confirmation-dialog': + SettingsCrostiniArcAdbConfirmationDialogElement; + } +} + +customElements.define( + SettingsCrostiniArcAdbConfirmationDialogElement.is, + SettingsCrostiniArcAdbConfirmationDialogElement); diff -Nru chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_subpage.html chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_subpage.html --- chromium-146.0.7680.80/chrome/browser/resources/ash/settings/crostini_page/crostini_subpage.html 2026-03-13 16:54:03.000000000 +0000 +++ chromium-146.0.7680.153/chrome/browser/resources/ash/settings/crostini_page/crostini_subpage.html 2026-03-17 19:56:22.000000000 +0000 @@ -22,6 +22,15 @@ role-description="$i18n{subpageArrowRoleDescription}"> + + +